From da6ceebb55344e5bdb54bfe9ec3c4833de516480 Mon Sep 17 00:00:00 2001 From: Trianta <56975502+Trimutex@users.noreply.github.com> Date: Mon, 23 Oct 2023 21:33:47 -0500 Subject: [PATCH] Added displaying score --- src/botinterface.cpp | 6 ++++++ src/gamestate.cpp | 4 +++- src/playerinterface.cpp | 16 +++++++++++++++- src/playerinterface.hpp | 3 ++- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/botinterface.cpp b/src/botinterface.cpp index 4ac0535..535230b 100755 --- a/src/botinterface.cpp +++ b/src/botinterface.cpp @@ -136,6 +136,12 @@ namespace snakeplusplus } for (sf::Vector2f newLocation : localLocations) { try { + if (newLocation.x < 2 || newLocation.y < 2 + || newLocation.x > boundaries.x - 2 + || newLocation.y > boundaries.y - 2) { + continue; + + } if ((!visited.at(newLocation.y).at(newLocation.x)) && (gameBoard.at(newLocation.y).at(newLocation.x) == ' ')) { search.push(newLocation); diff --git a/src/gamestate.cpp b/src/gamestate.cpp index 5e37107..8b44d8c 100755 --- a/src/gamestate.cpp +++ b/src/gamestate.cpp @@ -36,13 +36,15 @@ namespace snakeplusplus void GameEngine::Loop(void) { + int currentScore = 0; while (graphics.IsOpen()) { if (isGameOver) { Reset(); } UpdatePlayerSpeed(); PlaceNewSnakePart(MovePlayer()); RegenerateFood(); - graphics.DisplayGameState(gameBoard); + currentScore = player.body.size() * 100; + graphics.DisplayGameState(gameBoard, currentScore); } return; } diff --git a/src/playerinterface.cpp b/src/playerinterface.cpp index ac01982..55a7ca3 100755 --- a/src/playerinterface.cpp +++ b/src/playerinterface.cpp @@ -71,7 +71,20 @@ namespace snakeplusplus return; } - void PlayerOutput::DisplayGameState(std::vector< std::vector >& gameBoard) + void PlayerOutput::DisplayScore(int score) { + sf::Vector2f textPosition(gameBoundaries); + textPosition.x = textPosition.x / 2; + textPosition.y = textPosition.y / 2; + sf::Font font; + font.loadFromFile("Arial.ttf"); + std::string text = "Score: " + std::to_string(score); + sf::Text ScoreText(text, font); + ScoreText.setPosition(textPosition); + gameWindow.draw(ScoreText); + + } + + void PlayerOutput::DisplayGameState(std::vector< std::vector >& gameBoard, int score) { CheckWindowEvents(); char* letterOnBoard; @@ -94,6 +107,7 @@ namespace snakeplusplus } } } + DisplayScore(score); gameWindow.display(); sf::sleep(delay); return; diff --git a/src/playerinterface.hpp b/src/playerinterface.hpp index 861a2b6..f4a824b 100755 --- a/src/playerinterface.hpp +++ b/src/playerinterface.hpp @@ -17,7 +17,8 @@ namespace snakeplusplus PlayerOutput(void); bool IsOpen(void); void CheckContinue(bool isBotControlled); - void DisplayGameState(std::vector< std::vector >& gameBoard); + void DisplayGameState(std::vector< std::vector >& gameBoard, int score); + void DisplayScore(int score); void StartGameWindow(void); private: void CheckWindowEvents(void);