C语言贪吃蛇简化版

C语言 贪吃蛇简化版

前一阵子做贪吃蛇,看了很多教程,有好多都是用指针的。我指针用的不熟练,就做了一个简单的,代码量很少,不过没什么bug,当然内容也很简单,只用了一些基础的结构体。我的贪吃蛇参考了很多博客,希望和我一样的初学者能从中得到一些收获吧。

/*以下为思路
1.初始化地图,蛇,食物
2,蛇的移动(头,身体,尾巴)
3.按键输入与接收
4.食物的再次产生,打印蛇
5.判断死亡
*/
#include
#include 
#include 
#include 
#include 
#define a 1
#define d 2
#define w 3
#define s 4
struct{int x[50];int y[50];int len;}snake;
struct{int x;int y;}food;
int key=a;
void gotoxy(int x, int y)//定位光标位置到指定坐标
{HANDLE hout;
hout = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = { x,y };
SetConsoleCursorPosition(hout, pos);}
void init()//初始化
{for(int i=0;i<40;i++)
{
    gotoxy(0,i);
    printf("*");
    gotoxy(40,i);
    printf("*");
}
for(int i=0;i<40;i++)
{
    gotoxy(i,0);
    printf("*");
    gotoxy(i,40);
    printf("*");
}//打印地图
snake.x[0]=20;snake.y[0]=20;
snake.x[1]=21;snake.y[1]=20;
snake.x[2]=22;snake.y[2]=20;
snake.len=3;//初始化蛇
srand((unsigned)time(NULL));
food.x=rand()%38+1;
food.y=rand()%38+1;
gotoxy(food.x,food.y);
printf("$");
}
void move()//蛇的移动
{
    gotoxy(snake.x[snake.len-1],snake.y[snake.len-1]);
    printf(" ");
    for(int i=snake.len-1;i>0;i--)
    {
        snake.x[i]=snake.x[i-1];
        snake.y[i]=snake.y[i-1];
    }
    switch(key)
    {case w:
        snake.y[0]--;
        break;
    case s:
        snake.y[0]++;
        break;
    case a:
        snake.x[0]--;
        break;
    case d:
        snake.x[0]++;
        break;
    }

}
void drawsnake()//重新画蛇
{
    for(int i=0; i

你可能感兴趣的:(C语言)