已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJG 1214-2026直流电流比例标准检定规程
- 智能中控屏赋能智慧建筑:破解能耗管理痛点重构成本结构
- 建筑界顶层豪宅配套:彩钻作为空间艺术核心资产在私人会所与别墅的配置趋势
- 实训室创新创业孵化基地规划
- 农业跨界:智慧农业设备轻量化改造对租房智能单品的反向启发
- 基因组学大数据在个性化治疗中的前景
- 2027年内蒙古敕勒川职业学院高职单招职业技能考试题库含完整答案详解(有一套)
- 2026年南阳医学高专单招职业技能考试模拟试卷及答案详解(典优)
- 2024年铜川照金职业学院高职单招职业适应性测试考试题库及参考答案详解【考试直接用】
- 2027年御河职业学院高职单招职业技能考试题库含答案详解【达标题】
- 班组安全互保联保制度培训
- (2026年)肠内营养相关性腹泻的预防及护理课件
- 2026年村级集体经济强村公司发展与收益分配规范测试
- 2026年重庆八中中考语文模拟试卷(3月份)
- 护理教学查房示范课件
- 中原银行校园招聘笔试真题
- 河北省村务监督制度
- 眼镜从业人员培训制度
- 矿山立井冻结法施工及质量验收标准
- 营销总监2025年半年度汇报
- AI与疫苗接种策略的智能优化
评论
0/150
提交评论