无法根据蛇头的移动删除蛇尾

标签 c visual-studio-2013 position coordinates

编辑#1。
现在我发现我的功能不适用于这个游戏,所以请忘记它们。
仍然没有找到解决方案,看到了 fjf2002 提到的一些有关队列的文档,但目前对我来说太复杂了。尝试制作一个 Snake[20] 数组来存储 2
{1, 1, 1, 2} 的坐标: map 上的 Head (1,1) Tail (1,2)。仍然不知道如何在 map 上移动它并使尾部跟随头部。在尝试了一切并因缺乏经验而感到沮丧后,我的大脑一片空白。我不允许使用二维数组之外的任何东西。这意味着没有结构,没有队列,没有堆栈......这应该在不使用这些的情况下完成,教授说这比我想象的更容易。 (不要发帖说我应该向他寻求解决方案,因为他一直说同样的话而不回答我的问题)。任何想法都会对我有很大帮助......
---------------------------------------- -------------------------------------------------- -------------------------------------------------------- 我使用 VisualStudio 2013 并使用 C 语言进行编程。

在过去的两天里一直在寻找解决方案,但在互联网上找不到任何可以帮助我的东西。看到了几十种不同的英语和西类牙语的贪吃蛇游戏,但由于对他们的程序的零解释或由于我缺乏经验,我无法理解它们。

尝试了我所知道的一切,但没有成功,我自己也无法真正想出解决方案。

我有:

-生成 map 的函数
-移动蛇的函数:

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);

*蛇根据wasd键移动正常,并留下一 strip 1的踪迹( map 上全是0)。
*它根据位置移动: map 的位置(x,y)(移动到那里) printf("%d", 1); (打印 1)。例如

主要问题是当我想在向下移动时删除轨迹时,删除最后一个位置,同时打印前面的新位置。

如果可能的话,我想要一个没有太复杂(使用太多库)的解决方案,因为现在我只知道:

#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>

我尝试将坐标存储在数组上,就像我在几乎 90% 的贪吃蛇游戏中看到的那样,但我不理解这个概念,所以我最终进行了一系列尝试但没有成功。

有什么想法吗? 预先非常感谢您。

最佳答案

让我们总结一下:

  1. 只知道蛇头的坐标,如何确定蛇尾的坐标?
  2. 由于蛇可能会转弯好几圈,因此没有直接的方法。

I tried to store coordinates on arrays as i saw in almost 90% of snake games out there

似乎是唯一的解决方案。

but i dont understand the concept

关于无法根据蛇头的移动删除蛇尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27279888/

相关文章:

c - 为什么我的代码突然停在这个 C 程序中?

c - 为什么我的 C 代码打印 Segmentation fault : 11?

azure - 由于发生套接字错误 (10054) 而重试同步 - Azure

c# - Visual Studio 2013 将我的文件解释为表单文件

html - 屏幕底部的页脚

PHP pdo : Invalid Parameter Number when using a parameter twice?

c++ - Win32 UI - 使控件随着父控件的扩展而扩展

c - 小于 FLT_EPSILON 的最大数字是多少?

c++ - 如何在链表中搜索和插入多个节点

Android FloatingActionButton 定位错误