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.
67 lines
1.2 KiB
67 lines
1.2 KiB
#include "Controller.h"
|
|
#include <assert.h>
|
|
|
|
using namespace std;
|
|
|
|
Controller::Controller()
|
|
: snack{SNACK} ,inpt{0}
|
|
{
|
|
snake = new Snake();
|
|
generateSnack(snack);
|
|
}
|
|
|
|
Controller::Controller(Snake *_snake)
|
|
: snake{_snake}, snack{SNACK}, inpt{0}
|
|
{
|
|
|
|
assert(this->snake != NULL);
|
|
}
|
|
|
|
Controller::~Controller(){}
|
|
|
|
int Controller::act(void){
|
|
|
|
if (snake->hasBitSnack(this->snack.getY(), this->snack.getX()) == true)
|
|
{
|
|
advanceDifficulty();
|
|
generateSnack(this->snack);
|
|
this->snake->incSize();
|
|
}
|
|
|
|
switch (this->inpt)
|
|
{
|
|
case UP:
|
|
snake->moveUp();
|
|
break;
|
|
case DOWN:
|
|
snake->moveDown();
|
|
break;
|
|
case LEFT:
|
|
snake->moveLeft();
|
|
break;
|
|
case RIGHT:
|
|
snake->moveRight();
|
|
break;
|
|
default:
|
|
snake->move();
|
|
break;
|
|
}
|
|
|
|
refreshScreen();
|
|
|
|
if(snake->isBitten())
|
|
return DEFEAT;
|
|
if (snake->hasCrashedWall())
|
|
return DEFEAT;
|
|
return 0;
|
|
}
|
|
|
|
graphics_input Controller::readInput(void){
|
|
this->inpt = readInpt();
|
|
refreshScreen();
|
|
return inpt;
|
|
}
|
|
|
|
bool Controller::wantsToQuit(void){
|
|
return this->inpt == EXIT_GAME;
|
|
}
|