C语言实现贪吃蛇小游戏无需graphich头文件.docx_第1页
C语言实现贪吃蛇小游戏无需graphich头文件.docx_第2页
C语言实现贪吃蛇小游戏无需graphich头文件.docx_第3页
C语言实现贪吃蛇小游戏无需graphich头文件.docx_第4页
C语言实现贪吃蛇小游戏无需graphich头文件.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

这个程序是参考了一部分资料以后,然后自己修改了一下,附加了一些注释,实现了贪吃蛇的基本功能。共包含snake.h和snake.c两个文件,亲测可用,下面附图一张。有共同兴趣爱好的可以进我的博客一起学习,讨论,/fisherwan/article/details/19674145snacke.h#ifndef _SNAKE_H_H_H#define _SNAKE_H_H_H/调节游戏界面大小,这里设置为15*15int const COL = 15;int const ROW = 15;/蛇节点typedef struct Nodeint x;int y;struct Node *pre;struct Node *next;NODE, *pNODE;/食物typedef struct Foodint x;int y;char c;FOOD, *pFOOD;/初始化,创建蛇的第一节pNODE InitSnake(void);/初始化食物成员FOOD InitFood(void);/蛇运动函数int MoveSnake(pNODE pHead, char c);/检查键盘按键char KbHit(char orient);/蛇吃到食物处理函数pNODE SnakeEatFood(pNODE pHead, pFOOD pFood);/打印游戏界面函数void Print(pNODE pHead, FOOD food);#endifSnake.c#include #include #include #include #include #include snake.h/主函数int main(void)char orien = a, get_char;int game_over = 0;FOOD food = InitFood();pNODE head = InitSnake();while (1)head = SnakeEatFood(head, &food);get_char = KbHit(orien);if (27 = get_char)game_over = 1;break;elseorien = get_char;game_over = MoveSnake(head, orien);if (game_over)break;system(cls);Print(head, food);Sleep(200); /ms级,刷屏间隔时间if (game_over)printf(游戏结束!n);getch();return 0;/初始化,创建蛇的第一节pNODE InitSnake(void)pNODE pHead = (pNODE)malloc(sizeof(NODE);srand(unsigned)(time(NULL)+1);if (NULL = pHead)printf(内存分配失败!n);exit(-1);pHead-x = rand() % ROW;pHead-y = rand() % COL;pHead-next = NULL;pHead-pre = NULL;return pHead;/初始化食物成员FOOD InitFood(void)FOOD food;srand(unsigned)time(NULL);food.x = rand() % ROW;food.y = rand() % COL;food.c = 65 + rand()%26;return food;/蛇吃到食物处理函数pNODE SnakeEatFood(pNODE pHead, pFOOD pFood)pNODE p_add = NULL, pt = NULL, rear = NULL;if (pFood-x = pHead-x & pFood-y = pHead-y)p_add = (pNODE)malloc(sizeof(NODE);if (NULL = p_add)printf(内存分配失败!n);exit(-1);pt = pHead;while (pt-next != NULL)pt = pt-next;p_add-pre = pt;p_add-next = NULL;pt-next = p_add;*pFood = InitFood();/不让食物出现在蛇的位置上pt = pHead;while (pt != NULL)if (pFood-x = pHead-x & pFood-y = pHead-y)*pFood = InitFood();break;pt = pt-next;return pHead;/检查键盘按键char KbHit(char orient)char c;if (kbhit()c = getch();if (orient != d & c = a)orient = c;else if (orient != a & c = d)orient = c;else if (orient != w & c = s)orient = c;else if (orient != s & c = w)orient = c;else if (27 = c)orient = c;return orient;/蛇运动函数int MoveSnake(pNODE pHead, char c)INT game_over = 0;pNODE pt = pHead;/让pt指向蛇尾while (pt-next != NULL)pt = pt-next;/从蛇尾向向蛇头前进while(pt != pHead)pt-x = pt-pre-x;pt-y = pt-pre-y;pt = pt-pre;if (d = c)pHead-x += 1;if (pHead-x = ROW)pHead-x -= ROW;if (a = c)pHead-x -= 1;if (pHead-x x += ROW;if (s = c)pHead-y += 1;if (pHead-y = COL)pHead-y -= COL;if (w = c)pHead-y -= 1;if (pHead-y y += COL;/当蛇头碰到蛇身,游戏结束pt = pHead-next;while (pt != NULL)if (pt-x = pHead-x & pt-y = pHead-y)game_over = 1;pt = pt-next;return game_over;/打印游戏界面函数void Print(pNODE pHead, FOOD food)int row = 0, col = 0, flag = 0;pNODE pt = NULL;printf( 方向控制上:w 下:s 左:a 右:d(Esc退出)n );for (row=0; rowROW; row+)printf();putchar(n);for (col=0; colCOL; col+)printf( |);for (row=0; rowx & col = pt-y)if (pt = pHead)printf();elseprintf();flag = 1;break;pt = pt-next;/打印出食物或两个空格if (0 = flag

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论