Food on snake bug fixed
This commit is contained in:
29
main.cpp
29
main.cpp
@@ -291,13 +291,32 @@ void GameLoop()
|
||||
// Выбрасываем новую еду
|
||||
void DropFruit()
|
||||
{
|
||||
// Новые координаты в переменные
|
||||
fruitX = (rand() % (termWidth - 2)) + 1;
|
||||
fruitY = (rand() % (termHeight - 2)) + 1;
|
||||
// Делаем флаг про то, что координаты не пересекаются с питоном
|
||||
bool goodCoords = true;
|
||||
|
||||
// Крутимся до тех пор, пока флаг не будет true
|
||||
// (Он сразу true, но если координаты попадут на змею, он станет false
|
||||
// и все уйдет на второй круг. А если не попадут - не уйдет.)
|
||||
do
|
||||
{
|
||||
// Новые координаты в переменные
|
||||
fruitX = (rand() % (termWidth - 2)) + 1;
|
||||
fruitY = (rand() % (termHeight - 2)) + 1;
|
||||
|
||||
|
||||
// и нарисовать
|
||||
// Тут мы проходим по куску массива с телом между началом и концом
|
||||
// чтобы выяснить, не попадает ли новая еда поперек змеи.
|
||||
for (int i = 0; i < pythonEnd; i++)
|
||||
{
|
||||
if (fruitX == python[i].x && fruitY == python[i].y)
|
||||
{
|
||||
// Если попали - сбрасываем флаг и выходим из цикла.
|
||||
goodCoords = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} while (!goodCoords);
|
||||
|
||||
// и нарисовать
|
||||
mvprintw(fruitY, fruitX, "#");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user