I've got the game working all the way up to it displaying who won.
My problem is it still checks to see whos won after the screen comes up saying 'X' won, which makes the image flash and stops the game from resetting.
Thanks in advance.
SDL_Event event;
void CApp::OnLoop(){
int emptytiles = 0;
bool Finished = true;
for(int j = 0; j < 9; j++){
if(Grid[0] == GRID_TYPE_O && Grid[1] == GRID_TYPE_O && Grid[2] == GRID_TYPE_O){
CSurface::OnDraw(Surf_Display, Surf_Owon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}else if(Grid[0] == GRID_TYPE_X && Grid[1] == GRID_TYPE_X && Grid[2] == GRID_TYPE_X){
CSurface::OnDraw(Surf_Display, Surf_Xwon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}
if(Grid[3] == GRID_TYPE_O && Grid[4] == GRID_TYPE_O && Grid[5] == GRID_TYPE_O){
CSurface::OnDraw(Surf_Display, Surf_Owon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}else if(Grid[3] == GRID_TYPE_X && Grid[4] == GRID_TYPE_X && Grid[5] == GRID_TYPE_X){
CSurface::OnDraw(Surf_Display, Surf_Xwon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}
if(Grid[6] == GRID_TYPE_O && Grid[7] == GRID_TYPE_O && Grid[8] == GRID_TYPE_O){
CSurface::OnDraw(Surf_Display, Surf_Owon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}else if(Grid[6] == GRID_TYPE_X && Grid[7] == GRID_TYPE_X && Grid[8] == GRID_TYPE_X){
CSurface::OnDraw(Surf_Display, Surf_Xwon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}
if(Grid[0] == GRID_TYPE_O && Grid[3] == GRID_TYPE_O && Grid[6] == GRID_TYPE_O){
CSurface::OnDraw(Surf_Display, Surf_Owon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}else if(Grid[0] == GRID_TYPE_X && Grid[3] == GRID_TYPE_X && Grid[6] == GRID_TYPE_X){
CSurface::OnDraw(Surf_Display, Surf_Xwon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}
if(Grid[1] == GRID_TYPE_O && Grid[4] == GRID_TYPE_O && Grid[7] == GRID_TYPE_O){
CSurface::OnDraw(Surf_Display, Surf_Owon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}else if(Grid[1] == GRID_TYPE_X && Grid[4] == GRID_TYPE_X && Grid[7] == GRID_TYPE_X){
CSurface::OnDraw(Surf_Display, Surf_Xwon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}
if(Grid[2] == GRID_TYPE_O && Grid[5] == GRID_TYPE_O && Grid[8] == GRID_TYPE_O){
CSurface::OnDraw(Surf_Display, Surf_Owon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}else if(Grid[2] == GRID_TYPE_X && Grid[5] == GRID_TYPE_X && Grid[8] == GRID_TYPE_X){
CSurface::OnDraw(Surf_Display, Surf_Xwon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}
if(Grid[0] == GRID_TYPE_O && Grid[4] == GRID_TYPE_O && Grid[8] == GRID_TYPE_O){
CSurface::OnDraw(Surf_Display, Surf_Owon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}else if(Grid[0] == GRID_TYPE_X && Grid[4] == GRID_TYPE_X && Grid[8] == GRID_TYPE_X){
CSurface::OnDraw(Surf_Display, Surf_Xwon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}
if(Grid[2] == GRID_TYPE_O && Grid[4] == GRID_TYPE_O && Grid[6] == GRID_TYPE_O){
CSurface::OnDraw(Surf_Display, Surf_Owon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}else if(Grid[2] == GRID_TYPE_X && Grid[4] == GRID_TYPE_X && Grid[6] == GRID_TYPE_X){
CSurface::OnDraw(Surf_Display, Surf_Xwon, 200, 200, NULL, NULL, 200, 200);
Finished = false;
goto Finished;
}
//Draw
for(int k = 0; k <9; k++){
if(Grid[k] == GRID_TYPE_NONE){
emptytiles++;
}
}
if(emptytiles == 0){
Surf_Display = SDL_SetVideoMode(200, 200, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
CSurface::OnDraw(Surf_Display, Surf_Draw, 200, 200, NULL, NULL, 200, 200);
SDL_Delay( 5000 );
}
Finished:
if(Finished == false){
//If there's an event to handle
if( SDL_PollEvent( &event ) )
{
//If a key was pressed
if( event.type == SDL_KEYDOWN ){
Reset();
continue;
}
}
}
}
SDL_Flip(Surf_Display);
}

New Topic/Question
Reply




MultiQuote




|