Food on snake bug fixed
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
nmpython
|
||||||
|
nmpython.exe
|
||||||
|
.vscode
|
||||||
2
Makefile
2
Makefile
@@ -1,2 +1,2 @@
|
|||||||
all:
|
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
|
||||||
|
|||||||
29
main.cpp
29
main.cpp
@@ -291,13 +291,32 @@ void GameLoop()
|
|||||||
// Выбрасываем новую еду
|
// Выбрасываем новую еду
|
||||||
void DropFruit()
|
void DropFruit()
|
||||||
{
|
{
|
||||||
// Новые координаты в переменные
|
// Делаем флаг про то, что координаты не пересекаются с питоном
|
||||||
fruitX = (rand() % (termWidth - 2)) + 1;
|
bool goodCoords = true;
|
||||||
fruitY = (rand() % (termHeight - 2)) + 1;
|
|
||||||
|
|
||||||
|
// Крутимся до тех пор, пока флаг не будет 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, "#");
|
mvprintw(fruitY, fruitX, "#");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user