Witam,
jestem poczatkujacym programista i w kolejnym etapie nauki natrafilem na problem z dzialaniem programu. Ma spelniac zadanie gry w kolko i krzyzyk, program nie posiada praktycznie, zadnego ui, jest sam szkielet, ktory niestety nie dziala. Wykonywalem juz kroki ku znalezieniu przyczyny, ale niestety nadal wystepuje jakis blad w moim rozumowaniu.
Ponizej naglowek oraz czesc glowna programu
enum STAN_GRY {WIN, LOSE, DRAW,START};
enum GRACZ {GRACZ1,GRACZ2};
enum POLE {WOLNE=0, KOLKO=1, KRZYZYK=2};
POLE plansza[3][3];
const int plansza_wygrane [8][3][2] = { { {0,0}, {0,1}, {0,2} },
{ {1,0}, {1,1}, {1,2} },
{ {2,0}, {2,1}, {2,2} },
{ {0,0}, {1,0}, {2,0} },
{ {1,1}, {2,1}, {1,2} },
{ {0,1}, {1,1}, {2,1} },
{ {0,0}, {1,1}, {2,2} },
{ {0,2}, {1,1}, {2,0} } };
STAN_GRY STAN = START;
GRACZ OBECNY_GRACZ = GRACZ1;
int tablica_pozycji [9][2] = {{0,0},
{0,1},
{0,2},
{1,0},
{1,1},
{1,2},
{2,0},
{2,1},
{2,2}};
int position;
int pX,pY;
int zgodneK, zgodneKRZ;
#include <iostream>
#include "kolko_krzyzyk.h"
using namespace std;
int main()
{
for (int j=0; j<3; j++)
{
for (int i=0; i<3; i++)
{
plansza[j][i]=WOLNE;
}
}
std::cout << "0 1 2" << std::endl;
std::cout << "3 4 5" << std::endl;
std::cout << "6 7 8" << std::endl << std::endl << std::endl;
zgodneK=0;
zgodneKRZ=0;
int licznik=0;
OBECNY_GRACZ=GRACZ1; //GRACZ1 to kolko
do {
std::cout << "Ruch gracza : ";
std::cin >> position;
int tymczasowa=position;
pX=tablica_pozycji[tymczasowa][0];
pY=tablica_pozycji[tymczasowa][1];
std::cout << "Px = " << pX << std::endl;
std::cout << "Py = " << pY << std::endl;
if (plansza[pX][pY]== WOLNE && OBECNY_GRACZ==GRACZ1)
plansza[pX][pY]=KOLKO;
if (plansza[pX][pY]== WOLNE && OBECNY_GRACZ==GRACZ2)
plansza[pX][pY]=KRZYZYK;
for (int a=0; a<8; a++)
{
for (int b=0; b<3; b++)
{
if (OBECNY_GRACZ == GRACZ1 && plansza_wygrane[a][b][0] == pX && plansza[pX][pY]== KOLKO && plansza_wygrane[a][b][1] == pY)
zgodneK++;
else
zgodneK=0;
if (OBECNY_GRACZ == GRACZ2 && (plansza_wygrane[a][b][0] == pX) && plansza[pX][pY]== KRZYZYK && plansza_wygrane[a][b][1] == pY)
zgodneKRZ++;
else
zgodneKRZ=0;
}
}
if (zgodneK == 3)
{
std::cout << "GRACZ1 - KOLKO WYGRAL!" << std::endl;
STAN=WIN;
}
if (zgodneKRZ == 3)
{
std::cout << "GRACZ2 - KRZYZYK WYGRAL!" << std::endl;
STAN=WIN;
}
if (OBECNY_GRACZ == GRACZ1)
OBECNY_GRACZ=GRACZ2;
else
OBECNY_GRACZ=GRACZ1;
licznik++;
}while (STAN!=WIN);
return 0;
}
Wiem, ze kod nie jest zoptymalizowany, a pewne rozwiazania nienajlepsze badz zle, ale na chwile obecna chcialbym zeby zadzialal.
Z gory dziekuje i pozdrawiam