c语言编程的贪吃蛇游戏

利用c编程实现简单的贪吃蛇游戏#include #include #include #include /* *本游戏中的食物由一个小方格表示*本游戏中的蛇由多个小方格组成(最少两个) *在游戏的进行过程中,蛇每吃一格食物,则长度将增加一节(即一个小方格) */ /* *该宏定义蛇的最大节数*/ #define SNAKE_MAX_LEN 300 /* *定义游戏画面在屏幕中的位置*/ #define F_LEFT 50 #define F_TOP 40 #define F_RIGHT 609 #define F_BOTTOM 459 /* *墙壁的厚度*/ #define QB_WIDTH 10 /* *表示食物、蛇的小方格的大小*/ #define XFG_WIDTH 10 /* *蛇的活动区域内横向、纵向可摆放小方格的个数*/ #define NUM_H ( (F_RIGHT-F_LEFT+1-2*QB_WIDTH)/XFG_WIDTH ) #define NUM_V ( (F_BOTTOM-F_TOP+1-2*QB_WIDTH)/XFG_WIDTH ) /* *注:在设计上面宏的时候,必须满足: * (1)在屏幕分别率允许的范围内* (2) (F_RIGHT-F_LEFT+1-2*QB_WIDTH)/XFG_WIDTH必须能整除* (3) (F_BOTTOM-F_TOP+1-2*QB_WIDTH)/XFG_WIDTH必须能整除*/ /* *将在蛇的活动区内以小方格为单位的坐标转换成屏幕的像素坐标*/ #define X_to_x(x) ( (x) * XFG_WIDTH + (F_LEFT+QB_WIDTH) ) #define Y_to_y(y) ( (y) * XFG_WIDTH + (F_TOP+QB_WIDTH) ) /* *分别定义蛇、食物、墙壁的颜色*/ #define SNAKE_COLOR RED #define FOOD_COLOR GREEN #define QB_COLOR LIGHTCYAN /* *定义按键扫描码*/ #define K_LEFT 0x4b00 #define K_RIGHT 0x4d00 #define K_DOWN 0x5000 #define K_UP 0x4800 #define K_ESC 0x011b /* *定义蛇移动的方向*/ #define MOVE_RIGHT 1 #define MOVE_LEFT 2 #define MOVE_UP 3 #define MOVE_DOWN 4 int score=0; /*得分*/ int gamespeed=50000; /*游戏速度*/ /* *食物的属性*/ struct { int x; /*表示食物小方格左上角的横坐标*/ int y; /*表示食物小方格左上角的纵坐标*/ int yes; /*是否要出现食物*/ /* 1表示需要出现新食物, 0表示已经存在食物*/ }food; /* *蛇的属性*/ struct { /* *每个小方格左上角的横坐标(x)、纵坐标(y) */ int x[SNAKE_MAX_LEN]; int y[SNAKE_MAX_LEN]; int node; /*蛇的节数*/ int direction; /*蛇移动方向*/ }snake; /*图形驱动*/ void MyInitGraph(void) { int GraphDriver; /*图形设备驱动程序*/ int GraphMode; /*图形设备模式*/ GraphDriver = DETECT; /*请求自动检测*/ initgraph( &GraphDriver, &GraphMode, "" ); cleardevice(); } /*图形结束*/ void MyCloseGraph(void) { closegraph(); } /*输出字符串*/ void PrintString(const char *str) { setfillstyle(SOLID_FILL,YELLOW); bar(F_LEFT,F_TOP-20,F_RIGHT,F_TOP-20+15); setcolor(BROWN); settextstyle(DEFAULT_FONT,0,1); outtextxy(F_LEFT+5,F_TOP-20+5,str); } /* *游戏画面,左上角坐标为(F_LEFT,F_TOP),右下角坐标为(F_RIGHT,F_BOTTOM)的围墙*/ void DrawForm(void) { int i; char str[100]; setcolor(QB_COLOR); setlinestyle(SOLID_LINE,0,NORM_WIDTH); /*设置线型*/ for(i=F_LEFT;i
c 文件大小:9.07KB