如何在贪吃蛇游戏中改变方向
How to change direction in snake game
我有这个代码,是贪吃蛇游戏的一部分当你按下一个键时,它必须向下,但是垂直方向,开始时我的蛇是水平的,当我按下一个键时,它会向下,但不是垂直的,它是水平向下的,这不是真的,我该如何解决这个问题?
#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;
}
你的问题是"如何修复这段代码",而不是"给我正确的代码"。我不会给你正确的代码。我将回答原始问题。这个问题的答案是这样的:
问题是你做cout << "***"
.这将在水平方向上绘制三个星号。该命令永远不会执行任何其他操作。要垂直绘制物品,或者蛇可能产生的形状,您必须在自己的坐标上分别绘制每个星号。
而不是只有一个坐标(变量x
和y
),你必须有蛇的每个部分的坐标。使用std::queue<COORD>
来记住蛇的每个部分的坐标。要使蛇移动,请在队列中的最后一项上绘制空格 (" ") 并从队列后面删除最后一项 (pop_back
),并在队列前面添加新项 ( push_front
) 并在那里绘制星号 ("*")。
当你想让蛇变大时,不要从队列中删除项目,而只是添加新项目。
相关文章:
- 使用Unreal C++获取VR耳机的世界位置/方向
- 变量没有改变?通过向量的函数调用
- 在C++游戏中与库存系统作斗争
- 换位表导致测试失败(但在游戏中运行良好)
- 在C++中向零方向近似的最佳方法
- 如何改变c++应用程序的视觉效果
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- Craps游戏问题,忽略if语句
- C++在不同线程中改变向量
- 如何访问和改变存储在矢量C++中的对象
- 矢量下标超出SFML游戏中的范围
- 我是 c++ 的新手.学习基本知识后,我想做井字游戏.对于印刷板,我在下面写代码,但它显示错误
- OpenVR:向视图方向移动
- 使用 c++(SDL2) 进行突破游戏 - 试图让球改变轨迹,但存在一些问题
- 3d相机-如何改变相机方向
- 制造一种不断改变发射方向的导弹
- 在镜像模式下以编程方式改变屏幕方向
- 如何在贪吃蛇游戏中改变方向
- Windows 8 APP,用数据绑定改变XAML文本框的文本.游戏循环工作线程导致问题
- 在游戏中改变游戏控制