Compare commits
	
		
			No commits in common. "4f7cacfc441e116c892318fc46ad854bba204f7c" and "9bb4b8ebcac0d82c5940cb0c61b3eca3c47a8776" have entirely different histories.
		
	
	
		
			4f7cacfc44
			...
			9bb4b8ebca
		
	
		
| @ -36,33 +36,17 @@ namespace snakeplusplus | ||||
|         return lastKnownDirection; | ||||
|     } | ||||
| 
 | ||||
|     void AISnake::UpdateProbability(int snakeSize) | ||||
|     { | ||||
|         probabilityBFS = 1 - ((double) snakeSize) / 1000; | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     // Gets a new path for the bot to follow
 | ||||
|     // Uses DFS algorithm
 | ||||
|     void AISnake::GetNewPath(const std::vector< std::vector<char> >& gameBoard, const sf::Vector2f& source, const sf::Vector2f& boundaries, const int snakeSize) | ||||
|     { | ||||
|         // Search for food
 | ||||
|         /*
 | ||||
|         BFS(gameBoard, source, boundaries); | ||||
|         if (gameBoard[botPathUnsanitized.top().y][botPathUnsanitized.top().x] != 'X') { | ||||
|             while (!botPathUnsanitized.empty()) { botPathUnsanitized.pop(); } | ||||
|             DFS(gameBoard, source, boundaries); | ||||
|             while (botPathUnsanitized.size() > 15) { botPathUnsanitized.pop(); } | ||||
|         } | ||||
|         */ | ||||
|         // Probability-based approach for fun
 | ||||
|         double roll = ((double) GenerateRandomNumber(RAND_MAX)) / ((double) RAND_MAX); | ||||
|         if (roll <= probabilityBFS) | ||||
|         { | ||||
|             BFS(gameBoard, source, boundaries); | ||||
|         } else { | ||||
|             DFS(gameBoard, source, boundaries); | ||||
|         } | ||||
|         // Create path for food
 | ||||
|         path.push(botPathUnsanitized.top()); | ||||
|         botPathUnsanitized.pop(); | ||||
| @ -152,12 +136,6 @@ namespace snakeplusplus | ||||
|             } | ||||
|             for (sf::Vector2f newLocation : localLocations) { | ||||
|                 try { | ||||
|                     if (newLocation.x < 1 || newLocation.y < 1  | ||||
|                             || 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); | ||||
|  | ||||
| @ -14,9 +14,7 @@ namespace snakeplusplus | ||||
|         AISnake(); | ||||
|         void GetNewPath(const std::vector< std::vector<char> >& gameBoard, const sf::Vector2f& source, const sf::Vector2f& boundaries, const int snakeSize); | ||||
|         PlayerDirection GetInput(const sf::Vector2f* source); | ||||
|         void UpdateProbability(int snakeSize); | ||||
|     private: | ||||
|         double probabilityBFS = 1.000; | ||||
|         std::stack<sf::Vector2f> botPathUnsanitized; | ||||
|         void BFS(const std::vector< std::vector<char> >& gameBoard, const sf::Vector2f& source, const sf::Vector2f& boundaries); | ||||
|         void DFS(const std::vector< std::vector<char> >& gameBoard, const sf::Vector2f& source, const sf::Vector2f& boundaries); | ||||
|  | ||||
| @ -36,16 +36,13 @@ namespace snakeplusplus | ||||
| 
 | ||||
|     void GameEngine::Loop(void) | ||||
|     { | ||||
|         int currentScore = 0; | ||||
|         while (graphics.IsOpen()) | ||||
|         { | ||||
|             if (isGameOver) { Reset(); } | ||||
|             UpdatePlayerSpeed(); | ||||
|             PlaceNewSnakePart(MovePlayer()); | ||||
|             RegenerateFood(); | ||||
|             currentScore = player.body.size() * 100; | ||||
|             bot.UpdateProbability(player.body.size()); | ||||
|             graphics.DisplayGameState(gameBoard, currentScore); | ||||
|             graphics.DisplayGameState(gameBoard); | ||||
|         } | ||||
|         return; | ||||
|     } | ||||
|  | ||||
| @ -71,20 +71,7 @@ namespace snakeplusplus | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     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) | ||||
|     void PlayerOutput::DisplayGameState(std::vector< std::vector<char> >& gameBoard) | ||||
|     { | ||||
|         CheckWindowEvents(); | ||||
|         char* letterOnBoard; | ||||
| @ -107,7 +94,6 @@ namespace snakeplusplus | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         DisplayScore(score); | ||||
|         gameWindow.display(); | ||||
|         sf::sleep(delay); | ||||
|         return; | ||||
|  | ||||
| @ -17,8 +17,7 @@ namespace snakeplusplus | ||||
|         PlayerOutput(void); | ||||
|         bool IsOpen(void); | ||||
|         void CheckContinue(bool isBotControlled); | ||||
|         void DisplayGameState(std::vector< std::vector<char> >& gameBoard, int score); | ||||
|         void DisplayScore(int score); | ||||
|         void DisplayGameState(std::vector< std::vector<char> >& gameBoard); | ||||
|         void StartGameWindow(void); | ||||
|     private: | ||||
|         void CheckWindowEvents(void); | ||||
| @ -31,7 +30,7 @@ namespace snakeplusplus | ||||
|         sf::RectangleShape drawObject; | ||||
|         sf::Event event; | ||||
|         bool isWindowAlive; | ||||
|         sf::Time delay = sf::milliseconds(10); | ||||
|         sf::Time delay = sf::milliseconds(15); | ||||
|     }; | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user