在蛇的蛇游戏

时间:2014-01-26 06:16:44

标签: c

我有一个蛇游戏项目,但现在我需要找到一种让尾巴跟随头部的方法,我已经先把头做了,但我仍然对如何让尾巴跟着头部感到困惑,我知道我必须让尾巴跟随头部的前一个坐标,但我找不到办法做到这一点

这是我的代码

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

int side;
char map[20][20];
int z=5,c=5; //the starting position of the head
int p=0;
void snake(char map[20][20],int ,int )
{
    if(p==0)
    {
        p++;
    for(int x=0;x<side;x++)
        {
            map[z][c]='X';

           printf("%s\n",map[x]);
        }
    }
    int hc,hb,t,r,j,u,i;
    hc=getch();
    hb=getch();
    if(hb==72)//up
    {
        z--;

    }
    else if(hb==77)//right
    {
        c++;

    }
    else if(hb==80)//down
    {   
        z++;
    }
    else if(hb==75)//left
    {
        c--;

    }
    map[z][c]='X';


    system("CLS");  
}

void square(){
        int x,y;

        for(x=0;x<side;x++){
                for(y=0;y<side;y++){

                        if(x==0||x==side-1||y==0||y==side-1){
                                map[x][y]='X';
                        }

                        else{
                                map[x][y]=' ';
                        }
                }
        }
        snake(map,x,y);
} 

void print(){
        for(int x=0;x<side;x++){
                printf("%s\n",map[x]);
        }
}

int main()
{

    printf("Input the large = ");
    scanf("%d",&side); 
    fflush(stdin);
    system("CLS");
    while(true)
    {
    square();
    print();
    }
    getchar();

}

1 个答案:

答案 0 :(得分:4)

在大多数此类游戏中,你实际上并不需要让尾巴跟随头部 - 你只需在前面添加一个新X以将头部向前延伸一步并移除尾部的最后一个X以缩短它步。这简化了问题,只需要知道过去的坐标是什么,无论如何都是为了防止蛇自身穿过。