You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.5 KiB

  1. #include "Game.h"
  2. #include <algorithm>
  3. #include <limits.h>
  4. void SnakeGame::addPlayer(const std::string& name){
  5. players_.emplace_back(Player{name});
  6. }
  7. uint32_t SnakeGame::getHighScore() const {
  8. return high_score_;
  9. }
  10. const std::string& SnakeGame::getBestPlayer() const {
  11. return best_player_;
  12. }
  13. void SnakeGame::play(const std::string& name){
  14. auto find = std::find(players_.begin(), players_.end(), [&name](const Player& p){ return p.getName() == name; });
  15. if (find == players_.end()) {
  16. players_.emplace_back(Player(name));
  17. find = std::prev(players_.end());
  18. }
  19. Graphics::get().init(game_name_);
  20. find->play();
  21. Graphics::get().finalize();
  22. if (find->getHighScore() > high_score_){
  23. high_score_ = find->getHighScore();
  24. best_player_ = find->getName();
  25. }
  26. std::cout << "Highscore: " << high_score_ << " by " << best_player_ << std::endl;
  27. }
  28. void SnakeGame::play(){
  29. while(1) {
  30. std::string name;
  31. std::cout << "Who's playing: ";
  32. std::cin >> name;
  33. std::cout << std::endl;
  34. play(name);
  35. std::cin.clear();
  36. std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
  37. std::cout << "Do you or someone else want to play again? (yes or no): ";
  38. std::string ans;
  39. std::cin >> ans;
  40. if (ans != "yes") {
  41. std::cout << "Exiting ..." << std::endl;
  42. break;
  43. }
  44. std::cout << "Perfect..." << std::endl;
  45. }
  46. }