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.

66 lines
1.2 KiB

  1. #include "Controller.h"
  2. #include <assert.h>
  3. using namespace std;
  4. Controller::Controller()
  5. : snack{SNACK} ,inpt{0}
  6. {
  7. snake = new Snake();
  8. generateSnack(snack);
  9. }
  10. Controller::Controller(Snake *_snake)
  11. : snake{_snake}, snack{SNACK}, inpt{0}
  12. {
  13. assert(this->snake != NULL);
  14. }
  15. Controller::~Controller(){}
  16. int Controller::act(void){
  17. if (snake->hasBitSnack(this->snack.getY(), this->snack.getX()) == true)
  18. {
  19. advanceDifficulty();
  20. generateSnack(this->snack);
  21. this->snake->incSize();
  22. }
  23. switch (this->inpt)
  24. {
  25. case UP:
  26. snake->moveUp();
  27. break;
  28. case DOWN:
  29. snake->moveDown();
  30. break;
  31. case LEFT:
  32. snake->moveLeft();
  33. break;
  34. case RIGHT:
  35. snake->moveRight();
  36. break;
  37. default:
  38. snake->move();
  39. break;
  40. }
  41. refreshScreen();
  42. if(snake->isBitten())
  43. return DEFEAT;
  44. if (snake->hasCrashedWall())
  45. return DEFEAT;
  46. return 0;
  47. }
  48. graphics_input Controller::readInput(void){
  49. this->inpt = readInpt();
  50. refreshScreen();
  51. return inpt;
  52. }
  53. bool Controller::wantsToQuit(void){
  54. return this->inpt == EXIT_GAME;
  55. }