编辑#1。
现在我看到我的功能不适用于这个游戏所以请忘记它们
仍然没有找到解决方案,看到有关Queue的一些文档如fjf2002所述,但对于我来说这对我来说太复杂了。试图使一个蛇[20]数组存储坐标2乘{1,1,1,2}将是:头(1,1)尾(1,2)在地图上。仍然无法想象如何在地图上移动它并使尾部跟随头部。在尝试了所有事情后,我的思绪一片空白,并且由于缺乏经验而感到沮丧。我不允许使用超出二维数组的任何东西。这意味着没有结构,没有队列,没有堆栈......这应该是在不使用它们的情况下完成的,并且profesor说这比我想象的要容易得多。 (不要发帖说我应该问他解决方案,因为他一直在说同样的问题而不回答我的问题)。任何想法都会对我有所帮助......
------------------------------------- -------------------------------------------------- ---------------------------------------------
即时通讯使用VisualStudio 2013和C语言编程。
在过去的两天里一直在寻找一个解决方案,并没有在互联网上找到任何帮助我。看到几十种不同的英语和西班牙语蛇游戏,但由于他们的程序没有解释或者由于我缺乏经验,我无法理解它们。
我的所有知识都没有成功,但我无法自己提出解决方案。
我有:
- 功能生成地图
- 功能移动蛇:
COORD cxy;
#define posicion(x,y) {(cxy.X)= (x);(cxy.Y)= (y); SetConsoleCursorPosition((GetStdHandle(STD_OUTPUT_HANDLE)), (cxy) );}
int tablero[20][20], posx = 0, posy = 0;
void movimientoSnake(){
int m = 1, k = 0, tail = 3;
char dir = 'd';
do{
if (kbhit()){
dir = getch();
if (dir == 'w'){
m = 0;
k = -1;
}
if(dir == 's'){
m = 0;
k = 1;
}
if (dir == 'a'){
m = -1;
k = 0;
}
if (dir == 'd'){
m = 1;
k = 0;
}
}
else{
Sleep(500);
posicion(posx += m, posy += k);
printf("%d", 1);
posicion(posx - tail, posy);
printf("%d", 0);
}
} while (2 > 1);
*蛇根据按键移动正常,并留下一条带有1的小径(地图满是0' s)。
*它根据位置移动:地图的位置(x,y)(在那里移动)printf("%d",1); (打印1)。例如
主要问题是,当我向下移动时,我想要删除路径,删除最后一个位置,同时我在前面打印新的位置。
如果可能的话,我想要一个没有太多复杂的解决方案(使用太多的库),因为现在我只知道:
#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
我尝试在阵列上存储坐标,就像我在那里看到的近90%的蛇游戏一样,但我不理解这个概念,所以我最终尝试了一堆没有成功。
有什么想法吗? 非常感谢你提前。
答案 0 :(得分:1)
所以让我们总结一下:
我尝试在阵列上存储坐标,正如我在近90%的蛇游戏中看到的那样
似乎是唯一的解决方案。
但我不明白这个概念