【问题标题】:How to change direction in snake game [closed]如何在蛇游戏中改变方向[关闭]
【发布时间】:2014-04-02 20:35:46
【问题描述】:

我有这个代码,是蛇游戏的一部分 当你按下一个键时,它必须向下,但是垂直,一开始我的蛇是水平的,当我按下一个键时它会下降,但不是垂直,它是水平下降,这不是真的,怎么能我解决这个问题?

#include <iostream>
#include <vector>
#include <conio.h>
#include <windows.h>
#include <stdio.h>

using namespace std;

void gotoxy(int eex, int eey)
{
    COORD coord;
    coord.X = eex;
    coord.Y = eey;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

int main()
{

    int x=0,y=10,lx=0,ly=0;
    for(int i=10;;i++)
    {
        gotoxy(i,y);
        cout<<"***";
        Sleep(100);
        lx=i;
        ly=y;
        gotoxy(lx,ly);
        cout<<"   ";
        if(kbhit())
        {
            for(int j=ly;;j++)
            {
                gotoxy(lx,j);
                cout<<"***";
                Sleep(100);
                ly=j;
                gotoxy(lx,ly);
                cout<<"   ";
            }

        }
    }
    return 0;
}

【问题讨论】:

  • 您的代码不可读。请格式化(每行缩进)以便于阅读。
  • 如果你在 Stack Overflow 上做同样的事情,那么你最终会得到相同的响应。无论您发布多少次,该问题都将被关闭并删除。
  • 我的帖子获得了 23 次浏览但没有答案
  • 您的帖子已被删除。你删了吗?
  • @Ahmadreza Again:要检查发生了什么,请使用调试器,放置感兴趣的断点,然后逐步执行...

标签: c++ string


【解决方案1】:

您的问题是“如何修复此代码”,而不是“给我正确的代码”。我不会给你正确的代码。我会回答原来的问题。这个问题的答案是这样的:

问题是你做了cout &lt;&lt; "***"。这将始终水平绘制三个星号。该命令将永远不会做任何其他事情。要垂直绘制项目,或者蛇可能做出的任何形状,您必须在各自的坐标上分别绘制每个星号。

除了只有一个坐标(变量xy),您还必须拥有蛇的每一部分的坐标。使用std::queue&lt;COORD&gt; 记住蛇的每个部分的坐标。使蛇移动在队列的最后一项上绘制空间(“”)并从队列的后面删除最后一项(pop_back),并在队列的前面添加新的项目(push_front)并在此处画星号(“*”)。

当你想让蛇变大时,不要从队列中删除项目,而只是添加新的。

【讨论】:

  • 给我正确的代码 plzzzzzzzzzzzzzzzz :((((((
  • @Ahmadreza 网上有代码。尝试用谷歌搜索 C++ 蛇。
  • @Ahmadreza '给我正确的代码 plzzzzzzzzzzzzzzz :(((((') 如上所述请不要在这里调试和修复你的代码。如果你遇到您的代码中的某些特定点,您不理解该行为,请在您的问题中突出显示这一点并描述问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 2014-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多