void Board::checkEvents(sf::Event *event) { if(match != -1) { if(event->Type == sf::Event::KeyPressed) { if(event->Key.Code == sf::Key::Y) { gameReset(); } else if(event->Key.Code == sf::Key::N) { window->Close(); } } } else { if((event->Type == sf::Event::MouseButtonPressed) && (event->MouseButton.Button == sf::Mouse::Left)) { short xy = getXRegion(event->MouseButton.X) + BOARD_HEIGHT * getYRegion(event->MouseButton.Y); if(board[xy] == B) { board[xy] = player; if(checkWinCondition() == 0) { switchPlayer(); } else { gameMatch(); } } } } }
void GameController::gameLoop(bool isSimulation) { sf::RenderWindow *gameWindow = new sf::RenderWindow( sf::VideoMode(WINDOW_WIDTH, WINDOW_HEIGHT), GAME_NAME); gameWindow->setFramerateLimit(FRAMERATE_LIMIT); sf::Font font; if (!font.loadFromFile(FONT_PATH)) { throw std::runtime_error("Cannot load font from file"); } View *menuView = new MenuView(font); View *gameView = new GameView(font); View *gameOverView = new GameOverView(font); while (gameWindow->isOpen()) { sf::Event event; while (gameWindow->pollEvent(event)) { if (event.type == sf::Event::Closed) gameWindow->close(); } gameWindow->clear(); if (isSimulation) { if (gameStatus->getGameState() != game_state::SIMULATE) { resetGameStatus(); gameStatus->setIsGameToResume(false); gameStatus->setGameState(game_state::SIMULATE); } gameMatchSimulation(gameWindow, gameView, isSimulation); } else { if (gameStatus->getGameState() == game_state::MATCH) { gameMatch(gameWindow, gameView); } else if (gameStatus->getGameState() == game_state::MENU) { menu(gameWindow, menuView); } else if (gameStatus->getGameState() == game_state::SIMULATE) { gameMatchSimulation(gameWindow, gameView, isSimulation); } else if (gameStatus->getGameState() == game_state::GAME_OVER) { gameOver(gameWindow, gameOverView); } } } delete menuView; delete gameView; delete gameOverView; delete gameWindow; }
void Board::switchPlayer() { (player == O) ? (player = X) : (player = O); // Run AI. if(player == ai->getPiece()) { ai->run(board); if(checkWinCondition() == 0) { switchPlayer(); } else { gameMatch(); } } }