Exemplo n.º 1
0
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();
                }
            }
        }
    }
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
void Board::switchPlayer() { 
    (player == O) ? (player = X) : (player = O); 
    
    // Run AI.
    if(player == ai->getPiece()) {
        ai->run(board);
        if(checkWinCondition() == 0) {
            switchPlayer();
        } else {
            gameMatch();
        }
    }
    
}