如何在蛇游戏中改变方向[关闭]

Posted

技术标签:

【中文标题】如何在蛇游戏中改变方向[关闭]【英文标题】: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:要检查发生了什么,请使用调试器,放置感兴趣的断点,然后逐步执行... 【参考方案1】:

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

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

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

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

【讨论】:

给我正确的代码 plzzzzzzzzzzzzzzzz :(((((( @Ahmadreza 网上有代码。尝试用谷歌搜索 C++ 蛇。 @Ahmadreza '给我正确的代码 plzzzzzzzzzzzzzzz :(((((') 如上所述请不要在这里调试和修复你的代码。如果你遇到您的代码中的某些特定点,您不理解该行为,请在您的问题中突出显示这一点并描述问题!

以上是关于如何在蛇游戏中改变方向[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

javascript 贪吃蛇

iOS 6 - 如何在方向改变时运行自定义代码

苹果在蛇里面产卵

JAVA GUI贪吃蛇小游戏「内含代码」

matlab画图的时候,如何改变坐标轴的方向?

如何在 iPad 中处理不同的滚动视图以改变方向?