Food on snake bug fixed

This commit is contained in:
2021-05-06 04:38:27 +04:00
parent cb7cb42447
commit 080ac8abb8
3 changed files with 28 additions and 6 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
nmpython
nmpython.exe
.vscode

View File

@@ -1,2 +1,2 @@
all:
g++ -Wall -o "nmpython" "main.cpp" -lncurses -ltinfo
g++ -Wall -o "nmpython" "main.cpp" -lncurses -I v:/MinGW/MinGW32/opt/include/ncursesw -I v:/MinGW/mingw32/opt/include -L v:/MinGW/mingw32/opt/lib

View File

@@ -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, "#");
}