Added scoring and chance-based algorithm picking #3
| @ -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); | ||||
|  | ||||
| @ -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; | ||||
|     } | ||||
|  | ||||
| @ -71,7 +71,20 @@ namespace snakeplusplus | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     void PlayerOutput::DisplayGameState(std::vector< std::vector<char> >& 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<char> >& gameBoard, int score) | ||||
|     { | ||||
|         CheckWindowEvents(); | ||||
|         char* letterOnBoard; | ||||
| @ -94,6 +107,7 @@ namespace snakeplusplus | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         DisplayScore(score); | ||||
|         gameWindow.display(); | ||||
|         sf::sleep(delay); | ||||
|         return; | ||||
|  | ||||
| @ -17,7 +17,8 @@ namespace snakeplusplus | ||||
|         PlayerOutput(void); | ||||
|         bool IsOpen(void); | ||||
|         void CheckContinue(bool isBotControlled); | ||||
|         void DisplayGameState(std::vector< std::vector<char> >& gameBoard); | ||||
|         void DisplayGameState(std::vector< std::vector<char> >& gameBoard, int score); | ||||
|         void DisplayScore(int score); | ||||
|         void StartGameWindow(void); | ||||
|     private: | ||||
|         void CheckWindowEvents(void); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user