Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <Windows.h>
- #include <math.h>
- using namespace std;
- const int ROZMIAR_PLANSZY = 8;
- const char PION = 'X';
- int liczbaPionowBialych = 12;
- int liczbaPionowCzarnych = 12;
- enum Pole
- {
- Biale,
- Czarne,
- CzarnyPion,
- BialyPion
- };
- void rysuj(int plansza[ROZMIAR_PLANSZY][ROZMIAR_PLANSZY], bool czyRuchBialych)
- {
- HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
- std::cout << "Pozostałe białe piony: " << liczbaPionowBialych << endl;
- std::cout << "Pozostałe piony czarne: " << liczbaPionowCzarnych << endl;
- if (czyRuchBialych)
- {
- cout << "Ruch wykonują białe" << endl;
- }
- else
- {
- cout << "Ruch wykonują czarne" << endl;
- }
- cout << endl;
- cout << " ABCDEFGH" << endl;
- for (int wiersz = 0; wiersz < ROZMIAR_PLANSZY; wiersz++)
- {
- SetConsoleTextAttribute(hConsole, 15);
- std::cout << wiersz + 1;
- for (int kolumna = 0; kolumna < ROZMIAR_PLANSZY; kolumna++)
- {
- if (plansza[wiersz][kolumna] == (int)Pole::Biale)
- {
- SetConsoleTextAttribute(hConsole, 15);
- cout << '\xFE';
- }
- else if (plansza[wiersz][kolumna] == (int)Pole::Czarne)
- {
- SetConsoleTextAttribute(hConsole, 0);
- cout << '\xFE';
- }
- else if (plansza[wiersz][kolumna] == (int)Pole::CzarnyPion)
- {
- SetConsoleTextAttribute(hConsole, 12);
- cout << PION;
- }
- else if (plansza[wiersz][kolumna] == (int)Pole::BialyPion)
- {
- SetConsoleTextAttribute(hConsole, 15);
- cout << PION;
- }
- }
- cout << endl;
- }
- }
- bool sprawdz_ruch(int plansza[ROZMIAR_PLANSZY][ROZMIAR_PLANSZY], bool czyRuchBialych,
- int kolumnaSkad, int wierszSkad, int kolumnaDokad, int wierszDokad)
- {
- if (kolumnaSkad > 8 || kolumnaSkad < 0 ||
- kolumnaDokad > 8 || kolumnaDokad < 0 ||
- wierszSkad > 8 || wierszSkad < 0 ||
- wierszDokad > 8 || wierszDokad < 0)
- {
- return false;
- }
- else if (plansza[wierszDokad][kolumnaDokad] == (int)Pole::Biale ||
- plansza[wierszDokad][kolumnaDokad] == (int)Pole::BialyPion ||
- plansza[wierszDokad][kolumnaDokad] == (int)Pole::CzarnyPion)
- {
- return false;
- }
- else if (wierszSkad == wierszDokad || kolumnaSkad == kolumnaDokad) // nie można się ruszać po prostej
- {
- return false;
- }
- if (czyRuchBialych)
- {
- if (plansza[wierszSkad][kolumnaSkad] == (int)Pole::BialyPion)
- {
- if (abs(wierszSkad - wierszDokad) == 1)
- {
- if (abs(kolumnaSkad - kolumnaDokad) == 1)
- {
- int tmp;
- tmp = plansza[wierszSkad][kolumnaSkad];
- plansza[wierszSkad][kolumnaSkad] = plansza[wierszDokad][kolumnaDokad];
- plansza[wierszDokad][kolumnaDokad] = tmp;
- return true;
- }
- else
- {
- return false;
- }
- }
- else if (abs(wierszSkad - wierszDokad) == 2) // bicie
- {
- if (abs(kolumnaSkad - kolumnaDokad) == 2)
- {
- if (plansza[(wierszSkad + wierszDokad) / 2][(kolumnaSkad + kolumnaDokad) / 2] ==
- (int)Pole::CzarnyPion)
- {
- int tmp;
- tmp = plansza[wierszSkad][kolumnaSkad];
- plansza[wierszSkad][kolumnaSkad] = plansza[wierszDokad][kolumnaDokad];
- plansza[wierszDokad][kolumnaDokad] = tmp;
- plansza[(wierszSkad + wierszDokad) / 2][(kolumnaSkad + kolumnaDokad) / 2] =
- (int)Pole::Czarne;
- liczbaPionowCzarnych--;
- return true;
- }
- else
- {
- return false;
- }
- }
- else
- {
- return false;
- }
- }
- else
- {
- return false;
- }
- }
- }
- else
- {
- if (plansza[wierszSkad][kolumnaSkad] == (int)Pole::CzarnyPion)
- {
- if (abs(wierszSkad - wierszDokad) == 1)
- {
- if (abs(kolumnaSkad - kolumnaDokad) == 1)
- {
- int tmp;
- tmp = plansza[wierszSkad][kolumnaSkad];
- plansza[wierszSkad][kolumnaSkad] = plansza[wierszDokad][kolumnaDokad];
- plansza[wierszDokad][kolumnaDokad] = tmp;
- return true;
- }
- else
- {
- return false;
- }
- }
- else if (abs(wierszSkad - wierszDokad) == 2) // bicie
- {
- if (abs(kolumnaSkad - kolumnaDokad) == 2)
- {
- if (plansza[(wierszSkad + wierszDokad) / 2][(kolumnaSkad + kolumnaDokad) / 2] ==
- (int)Pole::BialyPion)
- {
- int tmp;
- tmp = plansza[wierszSkad][kolumnaSkad];
- plansza[wierszSkad][kolumnaSkad] = plansza[wierszDokad][kolumnaDokad];
- plansza[wierszDokad][kolumnaDokad] = tmp;
- plansza[(wierszSkad + wierszDokad) / 2][(kolumnaSkad + kolumnaDokad) / 2] =
- (int)Pole::Czarne;
- liczbaPionowBialych--;
- return true;
- }
- else
- {
- return false;
- }
- }
- else
- {
- return false;
- }
- }
- else
- {
- return false;
- }
- }
- }
- return false;
- }
- int main(int argc, char const *argv[])
- {
- //setlocale(LC_ALL, "");
- int plansza[ROZMIAR_PLANSZY][ROZMIAR_PLANSZY];
- bool czyRuchBialych = true;
- int kolumnaSkad;
- int wierszSkad;
- int kolumnaDokad;
- int wierszDokad;
- for (int wiersz = 0; wiersz < ROZMIAR_PLANSZY; wiersz++)
- {
- for (int kolumna = 0; kolumna < ROZMIAR_PLANSZY; kolumna++)
- {
- if ((wiersz + kolumna) % 2 == 0) // suma jest parzysta
- {
- plansza[wiersz][kolumna] = (int)Pole::Biale;
- }
- else
- {
- if (wiersz < 3)
- {
- plansza[wiersz][kolumna] = (int)Pole::CzarnyPion;
- }
- else if (wiersz >= 5)
- {
- plansza[wiersz][kolumna] = (int)Pole::BialyPion;
- }
- else
- {
- plansza[wiersz][kolumna] = (int)Pole::Czarne;
- }
- }
- }
- }
- while (liczbaPionowBialych > 0 && liczbaPionowCzarnych > 0)
- {
- rysuj(plansza, czyRuchBialych);
- cout << "Którym pionem chcesz się ruszyć?\n";
- cout << "Podaj literę Kolumny: ";
- char wybranaKolumna;
- cin >> wybranaKolumna;
- cout << "Podaj numer Wiersza: ";
- int wybranyWiersz;
- cin >> wybranyWiersz;
- wybranaKolumna = toupper(wybranaKolumna);
- // TO DO - zabezpieczyć przed wartościami większymi od 72 (litera H)
- kolumnaSkad = (int)wybranaKolumna - 65;
- wierszSkad = wybranyWiersz - 1;
- cout << "Gdzie ruszyć pionka?\n";
- cout << "Podaj literę Kolumny: ";
- cin >> wybranaKolumna;
- cout << "Podaj numer Wiersza: ";
- cin >> wybranyWiersz;
- wybranaKolumna = toupper(wybranaKolumna);
- kolumnaDokad = (int)wybranaKolumna - 65;
- wierszDokad = wybranyWiersz - 1;
- bool test =
- sprawdz_ruch(plansza, czyRuchBialych, kolumnaSkad, wierszSkad, kolumnaDokad, wierszDokad);
- if (test)
- {
- czyRuchBialych = !czyRuchBialych;
- }
- else
- {
- cout << "Błędny ruch\n";
- }
- }
- if (liczbaPionowBialych > 0)
- {
- cout << "Wygrały białe\n";
- }
- else
- {
- cout << "Wygrały czarne\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement