




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中班健康《你是我的好朋友》教案
- 化学单元1 酸性溶液和碱性溶液第一课时教案及反思
- 五年级美术下册教案-《第11课 学画松树》教学设计人教版
- 九年级体育 第9周 第18次课教学设计
- 人教部编版 (五四制)五年级上册山居秋暝教案
- 九年级体育 女生侧向滑步推铅球教学设计2
- 丽声北极星分级绘本The Angry Dragon(教学设计)-2023-2024学年译林版(三起)英语四年级下册
- 2021-2022学年北师大版八年级数学下册期末押题必刷卷【期末测试·拔高】常考易错突破卷(轻松拿满分)(解析版)
- 2024中铁财务有限责任公司公开招聘1人笔试参考题库附带答案详解
- 三年级英语上册 Unit 9 It's a mouth教学设计2 湘少版
- 陕西省西安铁一中2025届高考语文二模试卷含解析
- 租车位安装充电桩合同范本
- 七年级上册地理填图训练
- 幼儿园孩子食物中毒培训
- 人教版(2024)英语七年级上册单词表
- 建筑工程cad课程说课
- 独山玉饰品质量等级评价DB41-T 1435-2017
- 【互联网企业并购中的财务风险探析与防范:以阿里巴巴并购饿了么为例12000字(论文)】
- 第九届全国大学生测井技能大赛备赛试题库-下(判断题)
- 2025届江苏省南京市六区初三第二学期期中考试英语试题试卷含答案
- icu手册第一部分-常见病诊疗规范
评论
0/150
提交评论