Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.cpp
- // PoPprojekt1
- //
- // Created by Damian Szwichtenberg on 23.11.2017.
- // Copyright © 2017 Damian Szwichtenberg. All rights reserved.
- //
- #include <iostream>
- const int SZER = 11; //szerokosc naszej planszy
- const int WYS = 6; //wysokosc naszej planszy
- //generowanie planszy startowej
- int generowanie_planszy(char plansza[WYS][SZER]);
- //wypisywanie naszej planszy
- int wypisz_plansze(char plansza[WYS][SZER]);
- //kontrola danych
- int pobierz_wspolrzedna(char plansza[WYS][SZER], int &x, int &y);
- //sprawdzanie czy wybrane pole jest poprawne
- int sprawdz_pole(char plansza[WYS][SZER], int li, int cy);
- int main() {
- //tablica 2D przechowujaca nasza plansze
- char plansza[WYS][SZER];
- //ilosc pozostalych pionkow
- int ilosc_czarnych, ilosc_czerwonych;
- ilosc_czarnych = ilosc_czerwonych = 4;
- //do aktualnie wybranej pozycji
- int x, y;
- x = y = 0;
- generowanie_planszy(plansza);
- wypisz_plansze(plansza);
- pobierz_wspolrzedna(plansza, x, y);
- std::cout << sprawdz_pole(plansza, x, y) << std::endl;
- return 0;
- }
- int generowanie_planszy(char plansza[WYS][SZER]) {
- //sprawdzanie poprawnosci otrzymanych danych
- if(plansza == NULL)
- return -1;
- //zmienne do wypisywania wspolrzecdnych
- char pion = '4';
- char poziom = 'A';
- //zewnetrzna petla przesuwa sie po wierszach
- for(int i = 0; i < WYS; i++) {
- //wewnetrzna petla przesuwa sie po kolumnach
- for(int j = 0; j < SZER; j++) {
- //jesli jestesmy w pierwszej kolumnie na wysokosci planszy
- if(j == 0 && i < 4)
- plansza[i][j] = pion--;
- //jesli jestesmy w ostatnim wierszu, to wpisujemy w co 2 kolumne pod plansza
- else if(i == WYS-1 && j > 2 && j % 2 != 0)
- plansza[i][j] = poziom++;
- //od 2 kolumny wlaczenie, co druga; tylko 4 pierwsze wiersze
- else if(j > 1 && j % 2 == 0 && i < 4)
- plansza[i][j] = '|';
- //pierwszy wiersz, co 2 pole, od 3, tylko nieparzyste
- else if(i == 0 && j > 2 && j % 2 != 0)
- plansza[i][j] = 'c';
- //ostatni wiersz planszy (nie tabeli), od 3, co 2 pole, tylko nieparzyste
- else if(i == WYS-3 && j > 2 && j % 2 != 0)
- plansza[i][j] = 'b';
- //pozostale przypadki
- else
- plansza[i][j] = ' ';
- }
- }
- return 1;
- }
- int wypisz_plansze(char plansza[WYS][SZER]) {
- //sprawdzanie poprawnosci otrzymanych danych
- if(plansza == NULL)
- return -1;
- //zewnetrzna petla przesuwa sie po wierszach
- for(int i = 0; i < WYS; i++) {
- //wewnetrzna petla przesuwa sie po kolumnach
- for(int j = 0; j < SZER; j++) {
- std::cout << plansza[i][j];
- }
- //po wypisaniu calego wiersza przechodzimy o linijke nizej
- std::cout << std::endl;
- }
- return 1;
- }
- int pobierz_wspolrzedna(char plansza[WYS][SZER], int &x, int &y) {
- //sprawdzanie poprawnosci otrzymanych danych
- if(plansza == NULL)
- return -1;
- char znak[2];
- char pomocna;
- do {
- //czyszczenie strumienia
- std::cin.clear();
- std::cin.sync();
- std::cout << "Podaj wspolrzedne pionka : ";
- znak[0] = getchar();
- znak[1] = getchar();
- pomocna = getchar();
- if(pomocna == 10)
- pomocna = EOF;
- } while(znak[0] < 65 || znak[0] > 68 || znak[1] < 49 || znak[1] > 52 || pomocna != EOF);
- //zapisujemy nasze wybrane wspolrzedne
- x = znak[0];
- y = znak[1];
- return 1;
- }
- int sprawdz_pole(char plansza[WYS][SZER], int li, int cy) {
- //sprawdzanie poprawnosci otrzymanych danych
- if(plansza == NULL)
- return -1;
- int wsp_x = 0;
- int wsp_y = 0;
- for(int j = 3; j <= 9; j += 2) {
- if(plansza[WYS-1][j] == li)
- wsp_x = j;
- }
- for(int i = 0; i < 4; i++) {
- if(plansza[i][0] == cy)
- wsp_y = i;
- }
- if(plansza[wsp_y][wsp_x] == 'c')
- return 1;
- else
- return -2;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement