//贪吃蛇
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#define height 28//方块高度
#define width 60//方块宽度 必须偶数
//---------------------------------------------------------
//函数声明
void GameStart();//启动画面
void GameOver();//结束画面
void draw_cube();//画框框
void initialization();//初始化最初的蛇身
void gotoxy(int x,int y);//移动坐标
void move();//决定蛇身如何移动
void p_move();//处理蛇头移动后蛇身指针的移动
void food();//产生食物
void judge_head();//判断蛇头的位置
void static_info();//静态信息,如游戏侧栏文字提示
void dynamic_info();//动态信息,如游戏得分
//---------------------------------------------------------
//全局变量
struct snake
{
short x;
short y;
struct snake *next;
}*head=NULL,*scan=NULL,*pf=NULL,*pb=NULL;
int speed=250;//蛇移动的速度(毫秒)
short length=4;//初始蛇身长度
char direction='d';//蛇头方向有 w/a/s/d
short food_x,food_y,tail_x,tail_y;
short snake_xy[1024];//存储蛇身上每一个节点的坐标 供改变结构体指针坐标使用
short score=0;//游戏得分
short music=1;//吃到食物后是否响铃,默认响
//---------------------------------------------------------
//函数定义区
void initialization()
{
short i;
draw_cube();
for(i=1;i<=length;i++)
{
pb=(struct snake*)malloc(sizeof(struct snake));
pb->y=17;
if(i==1)
{
head=scan=pf=pb;
pb->x=28;
gotoxy(pb->x,pb->y); printf("■");
}
else
{
pb->x=pf->x-2;
gotoxy(pb->x,pb->y); printf("■");
pf->next=pb;
}