//retorna o número de maneiras que é possivel vencer int *GetWinningPosition(int hash[HASH_DIMENSION][HASH_DIMENSION], int user) { int line, column; int *cell = (int *) malloc(2*sizeof(int)); int NewHash[HASH_DIMENSION][HASH_DIMENSION]; CopyHash(hash, NewHash); //verificando as linhas for(line = 0; line < HASH_DIMENSION; line++) for(column = 0; column < HASH_DIMENSION; column++) { cell[X] = line; cell[Y] = column; if(MovementIsValid(hash,cell)) { NewHash[line][column] = user; if(IsWinner(NewHash, user)) return cell; NewHash[line][column] = hash[line][column]; } } cell[X] = EMPTY; cell[Y] = EMPTY; return cell; }
void AShooterGameMode::FinishMatch() { AShooterGameState* const MyGameState = Cast<AShooterGameState>(GameState); if (IsMatchInProgress()) { EndMatch(); DetermineMatchWinner(); // notify players for (FConstControllerIterator It = GetWorld()->GetControllerIterator(); It; ++It) { AShooterPlayerState* PlayerState = Cast<AShooterPlayerState>((*It)->PlayerState); const bool bIsWinner = IsWinner(PlayerState); (*It)->GameHasEnded(NULL, bIsWinner); } // lock all pawns // pawns are not marked as keep for seamless travel, so we will create new pawns on the next match rather than // turning these back on. for (FConstPawnIterator It = GetWorld()->GetPawnIterator(); It; ++It) { (*It)->TurnOff(); } // set up to restart the match MyGameState->RemainingTime = TimeBetweenMatches; } }
void ALabyrinthGameMode::FinishMatch() { ALGameState* const MyGameState = Cast<ALGameState>(GameState); if (IsMatchInProgress()) { EndMatch(); DetermineMatchWinner(); // notify players for (FConstPlayerControllerIterator It = GetWorld()->GetPlayerControllerIterator(); It; It++) { ALPlayerState* PlayerState = Cast<ALPlayerState>((*It)->PlayerState); if (PlayerState) { const bool bIsWinner = IsWinner(PlayerState); (*It)->GameHasEnded(NULL, bIsWinner); } } // lock all pawns // pawns are not marked as keep for seamless travel, so we will create new ones // instead of turning these back on for (FConstPawnIterator It = GetWorld()->GetPawnIterator(); It; It++) { (*It)->TurnOff(); } // Setup to restart the match MyGameState->RemainingTime = TimeBetweenMatches; } }
int main(void) { int hash[HASH_DIMENSION][HASH_DIMENSION]; int playerRound, x; int line, column; ALLEGRO_DISPLAY *display; ALLEGRO_EVENT_QUEUE *eventQueue; for(line = 0; line < HASH_DIMENSION; line++) for(column = 0; column < HASH_DIMENSION; column++) hash[line][column] = -1; if (!AllegroStart()) return -1; if (!ImageStart()) return -1; if (!MouseStart()) return -1; if (!DisplayStart(&display)) return -1; if (!EventQueueStart(&eventQueue)) return -1; al_register_event_source(eventQueue, al_get_display_event_source(display)); al_register_event_source(eventQueue, al_get_mouse_event_source()); al_set_target_bitmap(al_get_backbuffer(display)); playerRound = rand() % 2; RenderHash(hash); while ( !GameOver(hash) ) { if ( playerRound == COMPUTER )playerRound = PlayComputer(hash); else playerRound = PlayPlayer(hash, &eventQueue, &display); RenderHash(hash); } if (IsWinner(hash, COMPUTER)) al_show_native_message_box(display,"Computador Venceu", "", "Computador Venceu", "Ok",1); else if (IsWinner(hash, PLAYER)) al_show_native_message_box(display,"Você Venceu", "", "Você Venceu", "Ok",1); else al_show_native_message_box(display,"Deu Velha", "", "Deu Velha", "Ok",1); return 0; }
void ALabyrinthGameMode::DefaultTimer() { Super::DefaultTimer(); // don't update timers for play in editor mode, it's not a real match if (GetWorld()->IsPlayInEditor()) { // start the match if necessary if (GetMatchState() == MatchState::WaitingToStart) { StartMatch(); } return; } ALGameState* const MyGameState = Cast<ALGameState>(GameState); if (MyGameState && MyGameState->RemainingTime > 0 && !MyGameState->bIsTimerPaused) { MyGameState->RemainingTime--; if (MyGameState->RemainingTime <= 0) { if (GetMatchState() == MatchState::WaitingPostMatch) { RestartGame(); } else if (GetMatchState() == MatchState::InProgress) { FinishMatch(); // Send end round events ALGameState* const MyGameState = Cast<ALGameState>(GameState); for (FConstControllerIterator It = GetWorld()->GetControllerIterator(); It; It++) { ALPlayerController* PlayerController = Cast<ALPlayerController>(*It); if (PlayerController && MyGameState) { ALPlayerState* PlayerState = Cast<ALPlayerState>((*It)->PlayerState); const bool bIsWinner = IsWinner(PlayerState); // TO-DO: Add this to the Player controller //PlayerController->ClientSendRoundEndEvent(bIsWinner, MyGameState->ElapsedTime); } } } else if (GetMatchState() == MatchState::WaitingToStart) { StartMatch(); } } } }
void AShooterGameMode::DefaultTimer() { // don't update timers for Play In Editor mode, it's not real match if (GetWorld()->IsPlayInEditor()) { // start match if necessary. if (GetMatchState() == MatchState::WaitingToStart) { StartMatch(); } return; } AShooterGameState* const MyGameState = Cast<AShooterGameState>(GameState); if (MyGameState && MyGameState->RemainingTime > 0 && !MyGameState->bTimerPaused) { MyGameState->RemainingTime--; if (MyGameState->RemainingTime <= 0) { if (GetMatchState() == MatchState::WaitingPostMatch) { RestartGame(); } else if (GetMatchState() == MatchState::InProgress) { FinishMatch(); // Send end round events for (FConstControllerIterator It = GetWorld()->GetControllerIterator(); It; ++It) { AShooterPlayerController* PlayerController = Cast<AShooterPlayerController>(*It); if (PlayerController && MyGameState) { AShooterPlayerState* PlayerState = Cast<AShooterPlayerState>((*It)->PlayerState); const bool bIsWinner = IsWinner(PlayerState); PlayerController->ClientSendRoundEndEvent(bIsWinner, MyGameState->ElapsedTime); } } } else if (GetMatchState() == MatchState::WaitingToStart) { StartMatch(); } } } }
void CTicTacView::CheckForGameOver() { int nWinner; //그리드에 세 개의 연속 X나 O가 있으면 승자를 선언하고 새로 게임을 시작 if( nWinner = IsWinner ()) { CString string = (nWinner == EX) ? _T("X wins!") : _T("O Win!"); MessageBox(string, _T("Game Over"), MB_ICONEXCLAMATION | MB_OK); ResetGame(); } // 그리드가 가득차면 새 게임을 시작 else if( IsDraw() ) { MessageBox(_T("It's a draw!"), _T("Game Over"), MB_ICONEXCLAMATION | MB_OK); ResetGame(); } }
//verifica se o jogo acabou int GameOver(int hash[HASH_DIMENSION][HASH_DIMENSION]) { return IsWinner(hash, COMPUTER) || IsWinner(hash, PLAYER) || IsDraw(hash); }