蛇游戏边界检查

时间:2018-02-23 21:43:35

标签: c++ bounds

我正在写一个简单的控制台蛇游戏,当'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();
   }
}

0 个答案:

没有答案