Cześć. Piszę grę typu Snake i mam problem z generowaniem jabłka (tzn. tego, co trzeba zbierać, żeby wąż się wydłużał), żeby nie wygenerowało się na 'ciele' węża. Generalnie sprawa wydaje się prosta. Mój kod odpowiedzialny za to:
void Apple::setNewPosition()
{
srand(time(NULL));
bool repeat = false;
do
{
int x = rand() % 24;
int y = rand() % 21;
position.x = 10 + x*size;
position.y = 90 + y*size;
if (snake.getHeadPosition() == position)
repeat = true;
else
{
for (int i = 0; i < snake.getLength(); i++)
{
if (snake.getBodyPosition(i) == position)
repeat = true;
}
}
} while(repeat);
apple.setPosition(position);
}
i jeszcze wywołanie tego
bool Engine::snakeAteApple()
{
if (snake.getHeadPosition() == apple.getPosition())
{
snake.makeLonger();
apple.setNewPosition();
iScore++;
return true;
}
return false;
}
Według mnie to powinno działać, ale jednak czasem zdarza się, że to jabłko wygeneruje się na ciele węża. Jakieś pomysły?