Я пишу простую консольную игру со змеями, когда змея ‘O’ попадает в стену ‘#’, игра окончена, но по какой-то причине она заканчивается за один раз до того, как стена слева направо, сверху и снизу работает нормально.
Я попытался отладить, напечатав y (я знаю, что это должен быть не совсем хороший дизайн для меня), и y отображает его положение как 0 непосредственно перед стеной, значит ли это, что стена равна -1? но это не может быть -1, потому что я установил i = 0, а не -1,
настолько взволнован относительно того, что происходит неправильно, также обратите внимание, что мой код довольно грязный, но я довольно новый и все еще изучаю хороший стиль
void draw(){
system("cls");
bool notFirst = false;
bool notLast = false;
for(int i = 0; i <= HEIGHT+2; i++){
for(int j = 0; j <= WIDTH+2; j++){
if(i > 0){
notFirst = false;
}
if(i < HEIGHT+2){
notLast = false;
}
if(i == 0 && j <= WIDTH-1){
cout << "#"; // top wall
notFirst = true;
}
if(i == HEIGHT+2 && j <= WIDTH-2){
cout << "#"; // bottom wall
notLast = true;
}
if(j == 0 && i != 0){
cout << "#"; // #
}
if(j == WIDTH-1){
cout << "#";
}
if(x == i && y == j){
if(x == 0 || x == HEIGHT+2){
gameOver = true;
}
if(y == 0){
gameOver = true;
}
cout << y; // DEBUG
cout << "O";
}
else if(fruitX == i && fruitY == j){
cout << "F";
}
else{
if(!notFirst && !notLast){
cout << " ";
}
}
}
cout << endl;
}}int main()
{
setUp();
while(!gameOver){
draw();
input();
logic();
}
}
Задача ещё не решена.
Других решений пока нет …