ogareczku Napisano Styczeń 21, 2015 Zgłoś Share Napisano Styczeń 21, 2015 Witam jestem początkującym programistą i potrzebuję zrobić banalną grę kółko i krzyżyk. Problem w tym, że nie potrafie znaleźć rozwiązania dla podanego w temacie problemu... Szukałem i zmieniałem wiele rzeczy (bo errorów było z 20) i może nie widzę tego dość prostego errora :/ Prosiłbym o pomoc najlepiej wskazanie gdzie ten błąd jest i jak go rozwiązać #include <iostream> #include <ctime> enum SIGN { SGN_CIRCLE, SGN_CROSS }; enum FIELD { FLD_EMPTY, FLD_CIRCLE = SGN_CIRCLE, FLD_CROSS = SGN_CROSS }; enum GAMESTATE { GS_NOTSTARTED, GS_MOVE, GS_WON, GS_DRAW }; bool StartGry(); bool Ruch(unsigned); bool RysujPlansze(); FIELD g_aPlansza[3][3] = { { FLD_EMPTY, FLD_EMPTY, FLD_EMPTY }, { FLD_EMPTY, FLD_EMPTY, FLD_EMPTY }, { FLD_EMPTY, FLD_EMPTY, FLD_EMPTY } }; GAMESTATE aStanGry = GS_NOTSTARTED; SIGN g_AktualnyGracz; extern GAMESTATE g_StanGry; bool StartGry(); { if (aStanGry != GS_NOTSTARTED) return false; { else srand (static_cast<unsigned>(time(NULL))); g_AktualnyGracz = (rand() % 2 == 0 ? SGN_CIRCLE : SGN_CROSS); aStanGry = GS_MOVE; return true; } bool Ruch(unsigned uNumerPola); { if (aStanGry != GS_MOVE) return false; if (!(uNumerPola >= 1 && uNumerPola <= 9)) return false; unsigned uY = (uNumerPola - 1) / 3; unsigned uX = (uNumerPola - 1) % 3; if (g_aPlansza[uY][uX] == FLD_EMPTY) ; else return false; g_aPlansza[uY][uX] = static_cast<FIELD>(g_AktualnyGracz); const LINIE[][3][2] = { { { 0,0 }, { 0,1 }, { 0,2 } }, // górna pozioma { { 1,0 }, { 1,1 }, { 1,2 } },// środ. pozioma { { 2,0 }, { 2,1 }, { 2,2 } },// dolna pozioma { { 0,0 }, { 1,0 }, { 2,0 } }, // lewa pionowa { { 0,1 }, { 1,1 }, { 2,1 } }, // środ. pionowa { { 0,2 }, { 1,2 }, { 2,2 } }, // prawa pionowa { { 0,0 }, { 1,1 }, { 2,2 } }, // p. backslashowa { { 2,0 }, { 1,1 }, { 0,2 } } }; // p. slashowa for (int j = 0; j < 3; ++j) ; { Pole = g_aPlansza[LINIE[j][0]][LINIE[j][1]]; if (Pole != ZgodnePole) ; { ZgodnePole = Pole; uLiczbaZgodnychPol = 1; } else ++uLiczbaZgodnychPol; } if (uLiczbaZgodnychPol == 3 && ZgodnePole != FLD_EMPTY) ; { g_StanGry = GS_WON; return true; } } for (int j = 0; j < 3; ++j) ; { Pole = g_aPlansza[LINIE[j][0]][LINIE[j][1]]; if (Pole != ZgodnePole) ; { ZgodnePole = Pole; uLiczbaZgodnychPol = 1; } else ++uLiczbaZgodnychPol; } g_StanGry = GS_WON; return true; unsigned uLiczbaZapelnionychPol = 0; for (int i = 0; i < 3; ++i) ; for (int j = 0; j < 3; ++j) ; if (g_aPlansza[j] != FLD_EMPTY) ; ++uLiczbaZapelnionychPol; if (uLiczbaZapelnionychPol == 3*3) ; { g_StanGry = GS_DRAW; return true; } g_AktualnyGracz = (g_AktualnyGracz == SGN_CIRCLE ? SGN_CROSS : SGN_CIRCLE); return true; bool RysujPlansze() ; if (g_StanGry == GS_NOTSTARTED) return false; system ("cls"); std::cout << " KOLKO I KRZYZYK " << std::endl; std::cout << "---------------------" << std::endl; std::cout << std::endl; std::cout << " -----" << std::endl; for (int i = 0; i < 3; ++i) ; { std::cout << " |"; for (int j = 0; j < 3; ++j) ; { if (g_aPlansza[j] == FLD_EMPTY) ; std::cout << i * 3 + j + 1; else } std::cout << "|" << std::endl; } std::cout << " -----" << std::endl; std::cout << std::endl; enum SIGN { SGN_CIRCLE = 'O', SGN_CROSS = 'X' }; std::cout << static_cast<char>(g_aPlansza[j]); switch (g_StanGry) ; { case GS_MOVE: std::cout << "Podaj numer pola, w ktorym" << std::endl; std::cout << "chcesz postawic "; std::cout << (g_AktualnyGracz == SGN_CIRCLE ? "kolko" : "krzyzyk") << ": "; break; case GS_WON: std::cout << "Wygral gracz stawiajacy "; std::cout << (g_AktualnyGracz == SGN_CIRCLE ? "kolka" : "krzyzyki") << "!"; break; case GS_DRAW: std::cout << "Remis!"; break; } } Link do komentarza Udostępnij na innych stronach More sharing options...
Kaczus Napisano Luty 18, 2015 Zgłoś Share Napisano Luty 18, 2015 Witam jestem początkującym programistą i potrzebuję zrobić banalną grę kółko i krzyżyk. Problem w tym, że nie potrafie znaleźć rozwiązania dla podanego w temacie problemu... Szukałem i zmieniałem wiele rzeczy (bo errorów było z 20) i może nie widzę tego dość prostego errora :/ Prosiłbym o pomoc najlepiej wskazanie gdzie ten błąd jest i jak go rozwiązać #include <iostream> #include <ctime> [..] bool StartGry(); { if (aStanGry != GS_NOTSTARTED) return false; { else srand (static_cast<unsigned>(time(NULL))); g_AktualnyGracz = (rand() % 2 == 0 ? SGN_CIRCLE :SGN_CROSS); aStanGry = GS_MOVE; return true; } jak widać nadużywasz średnika sformatuj dobrze kod zauważysz troche dziwnych otwartych nawiasów - w tym fragmencie też to widać Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.