




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、XX 理 工 学 院课程设计课程 程序设计基础 题目 贪吃蛇小游戏 1 问题要求及任务描述1.1题目要求 制作贪吃蛇小游戏1.2 主要任务1.美化游戏界面,2.增加当吃当食物时自动加10分。3.增加当满100分主动提醒玩家已赢了本局,需从选难度play again。4.参考其他程序完成程序的总体规划;设计画蛇围栏并控制设走动方向、范围,产生随机食物。 2 解决问题的主要思路和方法2.1 关键问题 未解决问题1.界面不是彩色的,美感差。2.不能暂停。3.当玩家从第一局进入第二局时,原4节的贪吃蛇依旧存在,不能删除。已解决问题1.将原乱码丑陋的界面改为简单但还算美观的界面。2.运用函数使蛇吃完食物
2、增加十分,没到整百分数主动提醒玩家已赢了本局,需从选难度play again。2.2 拟采用解决问题的方法1.针对已解决问题一:在TC3视图下对文字、中文标点不识别,为乱码,所以改为英文,合理设计了界面比例、输出英文位置。2.针对已解决问题二:调运goto(),使的达到设计分数时自动到达选择难度界面,增加趣味。2.3 主要算法和处理流程图关键的数据流程图开始各种变量初始化,难度选择画围墙,画蛇食物在蛇身上?重新出现食物食物被蛇头撞到?撞到自身或墙? 分数>=100?加分,蛇变长结束 是 否 否 否 否 是 是 是3 程序实现3.1 程序实现时应考虑的问题要玩家的角度来看待,尽量使操作简单
3、明了有序,且有层次,最起码视觉上要舒服。3.2 主要源代码及说明#include <stdio.h>#include <stdlib.h>#include <time.h>#include <graphics.h>#include <conio.h>#include <bios.h>#include <dos.h>int main()int x150,y150; /*蛇的每一节的坐标*/int m,n; /*食物的坐标*/int z=4; /*蛇的节数*/int direction=4; /*蛇的方向,1,2,
4、3,4:上下左右*/int i; /*定义循环专用变量*/int food=1; /*判断食物的存在*/int speed; /*游戏速度*/int key; /*按键后返回的键值*/int score=0; /*得分*/int headx,heady; /*蛇头转换坐标*/int scored=0; /*得分多少的变量*/for(i=0;i<4;i+) /*初始化蛇的坐标*/ xi=39-i*2;for(i=0;i<4;i+) yi=13;headx=x0;heady=y0; /*蛇头坐标初始化*/clrscr(); /*清屏*/gotoxy(36,8);printf("
5、;Snakes"); /*开始画面*/sleep(1);printf("%8s","(Made By WeiXiang ZhaoYan)");sleep(2);clrscr();e: gotoxy(1,5); /*选择难度*/ printf("Please selet the game difficulty:1.easy 2.middling");printf(" 3.difficulty 4.very hard");a: key=bioskey(0);switch(key) /*根据输入确定难度*/ca
6、se 0x4f31: speed=500; break;case 0x231: speed=500; break;case 0x5032: speed=250; break;case 0x332: speed=250; break;case 0x5133: speed=100; break;case 0x433: speed=100; break;case 0x4b34: speed=50; break;case 0x534: speed=50; break;default: goto a; /*输入其他键返回重输*/clrscr();gotoxy(1,5);clrscr();printf(&
7、quot;="); /*画上面的围墙*/gotoxy(34,7);printf("Any key to start the game");gotoxy(33,13);printf("0008");gotoxy(1,43);printf("= mark:0 = ESC:exit="); /*画下面的围墙*/i=getch(); /*输入任意键*/gotoxy(34,7);printf(" "); /*清除文字*/srand(unsigned)time(NULL); /*用时间产生随机种子*/while(1)
8、 /*游戏开始*/ scored+; if(food) /*判断食物是否存在*/ b: m=(rand()%39)*2+1; n=(rand()%18)+4; for(i=0;i<z;i+) /*判断食物坐标是否在蛇的身体上*/ if(xi=m&&yi=n) goto b; /*如果在蛇的身体上返回重新随机产生食物坐标*/ gotoxy(m,n); /*显示食物*/ printf("0"); food=0; /*食物已经存在*/ delay(speed); /*蛇移动的间隔*/ if(bioskey(1)key=bioskey(0); /*判断按键,返
9、回键值*/ if(key=0x4b00&&direction!=4)direction=3; /*如果方向不向右且按下左键,方向向左*/ else if(key=0x4d00&&direction!=3)direction=4; else if(key=0x5000&&direction!=1)direction=2; else if(key=0x4800&&direction!=2)direction=1; else if(key=0x011b)break; switch(direction) /*判断方向,移动蛇头*/ cas
10、e 1: heady-; break; case 2: heady+; break; case 3: headx-=2; break; case 4: headx+=2; break; if(headx<1|headx>80|heady<3|heady>42)break; /*如果蛇撞墙,结束游戏*/ for(i=2;i<z-2;i+) /*如果蛇撞到自己,结束游戏*/ if(headx=xi&&heady=yi) goto c; if(headx=m&&heady=n) /*如果蛇撞上食物*/ z+; /*蛇的节数加一*/ got
11、oxy(m,n); printf("8"); /*只移动蛇头,不消去蛇尾*/ gotoxy(x0,y0); printf("0"); food=1; /*不存在食物*/ score+=10; /*最高得分100,最低得分10*/ if(score-10)%100=0&&(score-10)!=0) goto d; scored=0; /*得分变量清零*/ gotoxy(42,43); /*显示得分*/ printf("%d",score); else /*如果蛇没撞上食物*/ gotoxy(headx,heady);
12、/*移动蛇头*/ printf("8"); gotoxy(x0,y0); printf("0"); gotoxy(xz-1,yz-1); /*消去蛇尾*/ printf(" "); for(i=z;i>0;i-) /*重新排列蛇的坐标*/ xi=xi-1; yi=yi-1; x0=headx; /*蛇头的坐标*/ y0=heady; /*END while*/c: gotoxy(32,11); /*显示游戏结束画面*/ printf(" "); gotoxy(32,12); printf(" Gam
13、e Over! "); gotoxy(32,13); printf(" Please try again! "); gotoxy(32,14); printf(" "); sleep(2); /*等待2秒*/ key=bioskey(0); /*任意健结束*/ return 0;d: gotoxy(32,11); /*显示游戏结束画面*/ printf(" "); gotoxy(2,12); printf(" Congratulation!You win this time! Please increasing s
14、peed to try again. "); sleep(2); /*等待2秒*/ goto e; gotoxy(2,12); printf(" "); key=bioskey(0); /*任意健结束*/ return 0;4 测试4.1 测试结果及分析正常成功运行,只是还有界面不是彩色的,美感差;不能暂停;最大问题使当玩家从第一局进入第二局时,原来初始的4节的贪吃蛇依旧存在,不能删除的不能解决问题。5 小结5.1本问题解决方法及程序实现小结由于初次搞游戏的设计,所以对一些套路不是清楚,因此先在百度上寻找了几个类似程序来作参考,很有收获;又查书,上网查找了解了一些新函数,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度直播带货品牌与广告主联合营销合同
- 燃气相关专业知识
- 2024年新手备考证券从业资格试题及答案
- 异常货物处理的标准流程计划
- 多种媒介在美术创作中的应用计划
- 班主任与家长沟通的技巧计划
- 中医药学对康复领域的支持试题及答案
- 秘书如何建立有效的支持系统计划
- 老年财务规划的注意事项计划
- 班主任沟通中的语言艺术计划
- IABP操作幻灯-CS-100厂家培训
- 人教版数学四年级上册第五单元 《平行四边形和梯形》 大单元作业设计
- 仓储物流劳务分包合同
- 科学人教鄂教版六年级上册全册分层练习含答案
- 学会放松和冥想的技巧
- C语言程序设计实用教程(第二版)(郭树强)课后答案
- JCT899-2016 混凝土路缘石
- 《微生物能源》课件
- 多媒体制作专业人才培养方案
- 光伏斜屋顶计算书屋顶光伏电站项目荷载计算书
- 某公司首台套申报材料
评论
0/150
提交评论