I would like the fruit class to be instantiated once and only once at one time, so there would be only one fruit object on the map. When the snake eats it, its destructor is being called and the existence flag is being set to false again. How should I implement this behaviour?
fruit.h
class Fruit {
protected:
char fruit;
bool exists;
int fruitPosX;
int fruitPosY;
public:
Fruit();
char getFruitType();
int getFruitPosX();
int getFruitPosY();
bool getExistenceFlag();
void setExistenceFlag(bool value);
~Fruit();
};
map.cpp
void Map::displayEverythingOnMap(Snake& snake){
snakeBody* tmp = snake.firstNode;
while (tmp != NULL) {
gameArea[snake.getSnakePosX()][snake.getSnakePosY()] = tmp->bodyPart;
tmp = tmp->next;
}
Fruit* fruit = new Fruit;
fruit->setExistenceFlag(false);
if (fruit->getExistenceFlag() == false) {
gameArea[fruit->getFruitPosX()][fruit->getFruitPosY()] = fruit->getFruitType();
fruit->setExistenceFlag(true);
if ((fruit->getFruitPosX() == snake.getSnakePosX()) && (fruit->getFruitPosY() == snake.getSnakePosY())) {
delete fruit;
fruit->setExistenceFlag(false);
snake.grow();
}
}
}