diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ada4542 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +nmpython +nmpython.exe +.vscode diff --git a/Makefile b/Makefile index 810dec2..300d444 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/main.cpp b/main.cpp index 0063b1b..f2cf0fb 100644 --- a/main.cpp +++ b/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, "#"); }