C++ 当在蛇游戏中打印障碍物时,如何解决边界问题?

C++ 当在蛇游戏中打印障碍物时,如何解决边界问题?,c++,codeblocks,C++,Codeblocks,这是我第一次尝试制作蛇类游戏。蛇可以移动和吃东西。游戏运行良好。现在我尝试在游戏中添加障碍物。但是当障碍物被打印出来时,右侧边框向右移动。为什么边框会变形?我需要在draw函数中进行哪些更改才能使边框不移动 void draw() { system("CLS"); for(int i=0;i<width+2;i++) cout<<"#"; cout<<endl; for(int i=0;i<h

这是我第一次尝试制作蛇类游戏。蛇可以移动和吃东西。游戏运行良好。现在我尝试在游戏中添加障碍物。但是当障碍物被打印出来时,右侧边框向右移动。为什么边框会变形?我需要在draw函数中进行哪些更改才能使边框不移动

    void draw()
    {
     system("CLS");
     for(int i=0;i<width+2;i++)
     cout<<"#";
     cout<<endl;

     for(int i=0;i<height;i++)
     {
       for(int j=0;j<width;j++)
       {
           if(j==0)
            cout<<"#";
            if(i==y && j==x)
                cout<<"O";//snake
                else if(i==fruitY && j==fruitX)
                    cout<<"@";//fruit
                    else if(i==obY && j==obY)
                        cout<<"=====";//obstacle

            else
            {
                bool print =false;
                for(int k=0;k < ntail ;k++)
                {
                  if(tailX[k]==j && tailY[k]==i)
                    {
                     cout<<"O";
                     print=true;
                    }

                }
                  if(!print)
                   cout<<" ";
            }
           if(j==width-1)
            cout<<"#";
       }
       cout<<endl;
    }
    for(int i =0;i<width+2;i++)
      cout<<"#";
    cout<<endl;
    cout<<"Score:"<<score<<endl;
    }    
void draw()
{
系统(“CLS”);
对于(int i=0;i当你这样做时

        else if (i == obY && j == obY)
            cout << "=====";
else如果(i==obY&&j==obY)

您是否需要提取并提供一个。此外,请一致地格式化代码,最好使用自动工具。您正在为一个障碍打印5个字符,为其他所有内容打印1个字符……您希望发生什么?水平蛇会发生什么?如果绘制正确,您可能希望重用该代码位。只需打印障碍物即可像你做其他事情一样,一次只扮演一个角色
        else if (i == obY && j == obY)
            cout << "=====";
        else if (i == obY && j == obY)
        {
            cout << "=====";
            j += 4
        }