Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<stdio.h>
- using namespace std;
- int pionkiBiale = 12;
- int pionkiCzarne = 12;
- void rysuj(int plansza[8][8], bool ruchBialy)
- {
- cout << "Pozostale biale pionki:" << pionkiBiale << endl <<"Pozostale czarne pionki:" << pionkiCzarne << endl;
- if (ruchBialy)
- {
- cout << "Ruch wykonuja biale" << endl;
- }
- else
- {
- cout << "Ruch wykonuja czarne" << endl;
- }
- cout << " ABCDEFGH" << endl;
- for (int i = 0; i < 8; i++)
- {
- printf("\033[37m");
- cout << i+1;
- for (int j = 0; j < 8; j++)
- {
- if (plansza[i][j]==0)
- {
- //rysowanie białego pola
- printf("\033[37m");
- cout << '\xFE';
- }
- else if (plansza[i][j]==1)
- {
- //rysowanie czarnego pola
- printf("\033[30m");
- cout << ' ';
- }
- else if (plansza[i][j] == 2)
- {
- //rysowanie czerwonego(czarnego) pionka
- printf("\033[31m");
- cout << "X";
- }
- else if (plansza[i][j] == 3)
- {
- //rysowanie bialego pionka
- printf("\033[37m");
- cout << "X";
- }
- }
- cout << endl;
- }
- }
- //funkcja wykonujaca ruch, zwraca false jezeli ruch sie nie odbyl i true jezeli ruch
- //zostal wykonany
- bool sprawdz_ruch(int plansza[8][8],bool czyBiale, int kolumnaSkad, int wierszSkad, int kolumnaDokad, int wierszDokad)
- {
- //sprawdzamy czy ruch mieści się w planszy
- if (kolumnaSkad > 8 || kolumnaSkad < 0 || kolumnaDokad >8 || kolumnaDokad < 0 || wierszSkad >8 || wierszSkad < 0 || wierszDokad >8 || wierszDokad < 0)
- {
- return false;
- }
- //sprawdzamy czy nie ruszamy się z/na białego pola
- else if (plansza[wierszSkad][kolumnaSkad] == 0 || plansza[wierszDokad][kolumnaDokad] != 1 || plansza[wierszSkad][kolumnaSkad] == 1)
- {
- return false;
- }
- //sprawdzamy czy nie podalismy dwa razy tego samego pola
- else if (kolumnaSkad == kolumnaDokad || wierszDokad == wierszSkad)
- {
- return false;
- }
- //ruch bialych
- if (czyBiale)
- {
- //sprawdzamy czy pionek ktory ma sie ruszyc nalezy do bialego gracza
- if (plansza[wierszSkad][kolumnaSkad] == 3)
- {
- //sprawdzamy czy przesuwamy sie o jeden wiersz
- if (wierszSkad - wierszDokad == 1 || wierszSkad - wierszDokad == -1)
- {
- //sprawdzamy czy przesuwamy sie o jedna kolumne
- if (kolumnaSkad - kolumnaDokad == 1 || kolumnaSkad - kolumnaDokad == -1)
- {
- //zamieniamy zawartosc pol skad i dokada (pionek idzie na puste pole, a pole na
- //ktorym byl pionek staje sie puste)
- int tmp;
- tmp = plansza[wierszSkad][kolumnaSkad];
- plansza[wierszSkad][kolumnaSkad] = plansza[wierszDokad][kolumnaDokad];
- plansza[wierszDokad][kolumnaDokad] = tmp;
- return true;
- }
- // przesuwamy sie na niedozwolona kolumne
- else
- {
- return false;
- }
- }
- //sprawdzamy czy przesuwamy sie o 2 wiersze (w trakcie bicia)
- else if (wierszSkad - wierszDokad == 2 || wierszSkad - wierszDokad == -2)
- {
- //sprawdzamy czy przesuwamy sie o dwie kolumny
- if (kolumnaSkad - kolumnaDokad == 2 || kolumnaSkad - kolumnaDokad == -2)
- {
- //sprawdzamy czy przeskakujemy nad pionkiem przeciwnika
- if (plansza[(wierszSkad+wierszDokad)/2][(kolumnaSkad + kolumnaDokad) / 2] == 2)
- {
- int tmp;
- tmp = plansza[wierszSkad][kolumnaSkad];
- plansza[wierszSkad][kolumnaSkad] = plansza[wierszDokad][kolumnaDokad];
- plansza[wierszDokad][kolumnaDokad] = tmp;
- plansza[(wierszSkad + wierszDokad) / 2][(kolumnaSkad + kolumnaDokad) / 2] = 1;
- pionkiCzarne -= 1;
- return true;
- }
- //dany ruch nie jest biciem, wiec jest niedozwolony
- else
- {
- return false;
- }
- }
- // przesuwamy sie na niedozwolona kolumne
- else
- {
- return false;
- }
- }
- //przesuwamy sie na niedozwolony wiersz
- else
- {
- return false;
- }
- }
- //wybrany pionek nie nalezy do gracza
- else
- {
- return false;
- }
- }
- //ruch czarnych
- else
- {
- if (plansza[wierszSkad][kolumnaSkad] == 2)
- {
- if (wierszSkad - wierszDokad == -1 || wierszSkad - wierszDokad == 1)
- {
- if (kolumnaSkad - kolumnaDokad == 1 || kolumnaSkad - kolumnaDokad == -1)
- {
- cout << "Ruch mozliwy" << endl;
- int tmp;
- tmp = plansza[wierszSkad][kolumnaSkad];
- plansza[wierszSkad][kolumnaSkad] = plansza[wierszDokad][kolumnaDokad];
- plansza[wierszDokad][kolumnaDokad] = tmp;
- return true;
- }
- //Pola nie sa w przyleglych rzedach
- else
- {
- return false;
- }
- }
- else if (wierszSkad - wierszDokad == 2 || wierszSkad - wierszDokad == -2)
- {
- //sprawdzamy czy przesuwamy sie o dwie kolumny
- if (kolumnaSkad - kolumnaDokad == 2 || kolumnaSkad - kolumnaDokad == -2)
- {
- //sprawdzamy czy przeskakujemy nad pionkiem przeciwnika
- if (plansza[(wierszSkad + wierszDokad) / 2][(kolumnaSkad + kolumnaDokad) / 2] == 3)
- {
- int tmp;
- tmp = plansza[wierszSkad][kolumnaSkad];
- plansza[wierszSkad][kolumnaSkad] = plansza[wierszDokad][kolumnaDokad];
- plansza[wierszDokad][kolumnaDokad] = tmp;
- plansza[(wierszSkad + wierszDokad) / 2][(kolumnaSkad + kolumnaDokad) / 2] = 1;
- pionkiBiale -= 1;
- return true;
- }
- //dany ruch nie jest biciem, wiec jest niedozwolony
- else
- {
- return false;
- }
- }
- // przesuwamy sie na niedozwolona kolumne
- else
- {
- return false;
- }
- }
- // Pola nie są w kolejnych wierszach
- else
- {
- return false;
- }
- }
- //to nie jest pionek gracza
- else
- {
- return false;
- }
- }
- }
- int main()
- {
- bool ruchBialy = true;
- int plansza[8][8];
- int kolumnaSkad;
- int wierszSkad;
- int kolumnaDokad;
- int wierszDokad;
- for (int i = 0; i < 8; i++)
- {
- for (int j = 0; j < 8; j++)
- {
- if ((i + j) % 2 == 0)
- {
- //pola biale
- plansza[i][j] = 0;
- }
- else
- {
- if (i < 3)
- {
- //pionki czarne
- plansza[i][j] = 2;
- }
- else if (i >= 5)
- {
- //pionki biale
- plansza[i][j] = 3;
- }
- else
- {
- //pola czarne
- plansza[i][j] = 1;
- }
- }
- }
- }
- while (pionkiBiale > 0 and pionkiCzarne > 0)
- {
- printf("\033[H\033[J");
- rysuj(plansza, ruchBialy);
- cout << "Podaj litere z ktorej kolumny pionek chcesz poruszyc" << endl;
- char tmp;
- cin >> tmp;
- kolumnaSkad = int(tmp) - 65;
- cout << "Podaj cyfre z ktorego wiersza pionek chcesz poruszyc" << endl;
- cin >> wierszSkad;
- wierszSkad = wierszSkad - 1;
- cout << "Podaj litere do ktorej kolumny pionek chcesz poruszyc" << endl;
- cin >> tmp;
- kolumnaDokad = int(tmp) - 65;
- cout << "Podaj cyfre do ktorego wiersza pionek chcesz poruszyc" << endl;
- cin >> wierszDokad;
- wierszDokad = wierszDokad - 1;
- // wykonujemy ruch, jezeli udalo sie go wykonac rusza sie przeciwnik, natomiast
- //jezeli ruch byl niemozliwy do wykonania gracz ponawia ruch
- bool test = sprawdz_ruch(plansza, ruchBialy, kolumnaSkad, wierszSkad, kolumnaDokad, wierszDokad);
- if (test)
- {
- ruchBialy = !ruchBialy;
- }
- }
- if (pionkiBiale > 0)
- {
- cout << "Wygraly biale" << endl;
- }
- else
- {
- cout << "Wygraly czarne" << endl;
- }
- }
Add Comment
Please, Sign In to add comment