版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 小狼下100层 学 号 13070036姓 名 段杰指导教师 陈彩 2014年4月目录小狼下100层1目录21 需求分析31.1功能与数据需求31.1.1 显示用户界面31.1.2打开音乐31.1.5 计分31.1.6 键盘操作31.1.7按钮操作31.2 界面需求41.2.1输入用户名界面。41.2.2游戏界面51.2.3 结束界面51.3 开发与运行环境61.4 其他方面需求62 概要设计62.1 主要数据结构72.2 程序总体结构83 详细设计83.1主要函数流程图83.2板的生成和删除94 测试104.1 游戏开启测试104.2 游戏运行测试104.2.1边界测试105 用户手册11
2、5.1 应用程序功能的详细说明115.2 应用程序运行环境的要求115.3 应用程序的安装与运行方法115.4 程序界面、交互方式和操作方法116 总结提高126.1课程设计总结126.2对本课程意见与建议13附录:源代码141 需求分析小狼下100层,每下一层木板分数增加,木板不停生成。死亡后记录积分并排名。1.1功能与数据需求 程序功能:输入用户名、生成游戏界面、开始游戏、计分、保存、游戏开始及退出、排行榜、结束、键盘及鼠标操作。1.1.1 显示用户界面利用drawinterface和drawmenu和drawbutton绘制游戏界面利用drawwolf,drawstep画出狼和板。1.1
3、.2打开音乐 显示开始界面之后,利用playsound打开音乐并播放音乐 1.1.4按开始键游戏开始游戏进入游戏界面,画好界面,信息显示区和控制区,产生狼和板,狼接触边界则游戏失败。记录得分之后显示排行榜。1.1.5 计分 狼每下一层算5分,接触板后才进行分数增加。1.1.6 键盘操作可控制狼的方向1.1.7按钮操作游戏有开始、暂停和结束键,可以暂停和退出游戏。游戏中退出不记录积分。1.2 界面需求游戏界面:进行游戏结束界面:排行榜显示 1.2.1输入用户名界面。 记录用户信息。1.2.2游戏界面游戏时的界面1.2.3 结束界面 按游戏结束的界面。1.3 开发与运行环境 本游戏开发环境为vc+
4、6.0 ,运行环境为vc+6.0 环境 添加easyx库 使用预编译的头文件,选择不使用补偿页眉1.4 其他方面需求 vc+6.0上要安装easyx软件2 概要设计 2.1 主要数据结构 struct coordinate int x; int y;/坐标struct personchar name20;int score;/玩家信息struct step coordinate cor; int length; / 长度 steptype steptype; / 台阶类型 int n; / 第几阶 step *nextnode; / 下一结点; / 用来存储台阶的链表struct wolf c
5、oordinate cor; / 坐标 int life; / 待定 int state; / 1:在台子上;2:往下掉 image img;2.2 程序总体结构void initinterface(coordinate but , buttonstate butsta); / 初始化void drawinterface(coordinate but , buttonstate butsta); / 界面void drawmenu(coordinate but , buttonstate butsta); / 菜单void drawbutton(coordinate cd , buttonst
6、ate butsta , char *text); / 按钮void drawmessage(char *name , int score , int time ); / 信息void drawstep(step *step); / 台阶void drawwolf(wolf wolf); / 狼void disposestep(step *step); / 台阶void creatstepnode(step *step); / 创建节点void deletestepnode(step *step); / 删除结点void next(step *step , wolf *wolf); /板和狼下
7、一步计算void dispatchcmd(wolf *wolf); /停止响应void dispatchkeyboardmessage(wolf *wolf); void dispatchmousemessage(); int savescore(person player);/存得分int showscore();/显示排行榜void judge(buttonstate butsta, wolf *wolf , step *step, int *score,person player);/ 判断void pause();3 详细设计3.1主要函数流程图3.2板的生成和删除4 测试4.1 游戏
8、开启测试 本测试目的: 确定游戏能在pc上正常开启 测试:本游戏能在win7以下的操作系统中运行,高于win7的操作系统暂时还不能运行vc6.0应用程序。确定游戏能够运行时,可将程序代码直接导入到vc+6.0中,并点击运行(run)即可运行此游戏。或者用户确定游戏bgi路径与源代码中的路径相同,则可直接双击游戏的exe文件,也可运行游戏。4.2 游戏运行测试4.2.1边界测试本测试目的: 确定游戏界面中的边界处是否可以正常运行 测试:用户进入游戏后,按照用户手册可进行测试,查看兔子到边界处是否能够正常使用 按开始键开始 按 狼开始动 到边界处是否正常运动 板能否正常生成 图形是否有缺损 游戏中
9、是否有隐藏的bug 经测试,游戏运行正常。4.2.2按钮测试本测试目的:测试暂停,退出,结束键是否可以正常使用测试:用户进入游戏后,按照用户手册可进行测试。按开始键,待游戏开始后按暂停键暂停,再按继续键继续,结束键结束本盘游戏,再按开始键开始,再按退出键退出游戏。看游戏是否可按预设的那样执行。经测试,游戏运行正常。5 用户手册5.1 应用程序功能的详细说明本应用程序名为“层下100层”是一款能在在vc+6.0环境下运行的益智小游戏。使用于win7,等操作系统。游戏主题是一个狼在不断生成并上升的木板中下降。触碰到游戏壁则死亡,记录游戏积分并排行 5.2 应用程序运行环境的要求 本游戏开发环境为v
10、c+6.0,运行环境为vc+6.0 环境生成可执行文件后可以用windows7,windows x等系统运行。5.3 应用程序的安装与运行方法 本益智小游戏不需要安装,玩家可将程序代码直接导入到vc+6.0环境中,并点击编译,运行,即可运行此游戏。或者用户确定游戏bgi路径与源代码中的路径相同,则可直接双击游戏的exe文件,也可运行游戏。5.4 程序界面、交互方式和操作方法按钮区域游戏信息狼板 6 总结提高6.1课程设计总结这次c语言课程设计,我收获很大,本来上学期c语言学的就比较基础,在加上自己课下练习不够,起初,做课设很是费劲,不知道从何下手,后来跟着easyx上的教程一步一步的学,渐渐有
11、了点信心,通过学习网上别人介绍的方法,和看别人编的小程序,心里才渐渐有些想法。通过一段时间的学习,我发现其实编游戏也不是很难,重要的是要有想法,思路清晰之后再开始编,会更快更好。而且在设计时要分块写,调用方便而且改起来也方便。有的时候,总是找不到错误在哪里,真的想放弃。但是现在回想起来,如果那时放弃那么又怎能开发出来呢。通过这次的的课设,我想编程既要有头脑,又要有耐心,遇到问题时,应及时与同学,老师交流,或者想放一放干些别的,也许事情就可解决。编程并不可一蹴而就,是一个慢慢学习理解的过程,不能着急,耐心一点。但是也要注意时间的掌握,要合理安排课设的时间。在本次设计中,我觉得自己在c语言中复杂问
12、题的处理上有了很大提高,对整体结构的把握上也有了一定的提升。而且我觉得自己应多学习高级的算法,使自己的程序更加系统,更便于理解。这次的程序设计,我更要感谢老师和同学的帮助,在大家的帮助下我才能完成此次课设。6.2对本课程意见与建议 我希望课设能安排几节来是讲一讲怎么做游戏,先讲一讲基础的知识,再让我们做,这样可以节约很多时间。 我希望能够在最后几周,多安排几次答疑时间,以便更好地解决我们的问题。 附录:源代码#include #include #include #include #include#pragma comment(lib,winmm.lib)#define speed#define
13、 step_wide 30 / 台阶的厚度#define button_height 50 / 按钮的高#define button_weight 80 / 按钮的宽度#define level 10 /难度【流畅度】/enum gamestateready = 1,run = 2,pause = 3,exit = 0;/游戏运行状态enum buttonstateavailable,notavailable,selected;/按钮的状态,可选.不可选,被选中enum steptypesafe,spine,head;/struct coordinate int x; int y;struct
14、 personchar name20;int score;struct step coordinate cor; / 坐标 int length; / 长度 steptype steptype; / 台阶类型 int n; / 第几阶 step *nextnode; / 下一结点; / 用来存储台阶的链表struct wolf coordinate cor; / 坐标 int life; / 待定 int state; / 1:在台子上;2:往下掉 image img;gamestate gamesta = ready; / 绘制界面void initinterface(coordinate
15、but , buttonstate butsta); / 初始化void drawinterface(coordinate but , buttonstate butsta); / 界面void drawmenu(coordinate but , buttonstate butsta); / 菜单void drawbutton(coordinate cd , buttonstate butsta , char *text); / 按钮void drawmessage(char *name , int score , int time ); / 信息void drawstep(step *ste
16、p); / 台阶void drawwolf(wolf wolf); / 狼void disposestep(step *step); / 台阶void creatstepnode(step *step); / 创建节点void deletestepnode(step *step); / 删除结点void next(step *step , wolf *wolf); void dispatchcmd(wolf *wolf); void dispatchkeyboardmessage(wolf *wolf); void dispatchmousemessage(); int savescore(p
17、erson player);int showscore();/ 判断void judge(buttonstate butsta, wolf *wolf , step *step, int *score,person player);void pause();int main() char sscore20; person player; coordinate but3; buttonstate butsta3; char playerid20 = null; int score = 0; int time = 0; wolf wolf;/ 初始化链表 step step; step.cor.x
18、 = 0; step.cor.y = 0; step.n = 0; step.length = 0; step.steptype = head; step.nextnode = null; initinterface(but,butsta); initgraph(640, 480); inputbox(, 10, 输入用户名 , 开始); setbkcolor(white); settextcolor(black); outtextxy(340,420,); playsound(bgm1.wav, null, snd_filename | snd_a
19、sync | snd_loop); srand(unsigned)time(null); /初始化界面,图形界面,随机数种子 beginbatchdraw(); loadimage(&wolf.img, _t(picwolf.jpg),30,30); while(gamesta) if( ready = gamesta ) score = 0; deletestepnode(&step); cleardevice(); drawinterface(but,butsta); flushbatchdraw(); creatstepnode(&step); / 狼 wolf.cor.x = step
20、.nextnode-cor.x + step.nextnode-length/2-30; wolf.cor.y = step.nextnode-cor.y-30; wolf.state = 1; while( ready = gamesta) dispatchmousemessage(); cleardevice(); while(pause = gamesta) dispatchmousemessage(); dispatchcmd( &wolf ); drawinterface( but,butsta ); / 刷新界面 disposestep( &step ); drawstep(&st
21、ep); drawwolf(wolf); char sss =用户名:; outtextxy(525,240,sss); outtextxy(525,290,); outtextxy(525,340,sscore); flushbatchdraw(); judge( butsta , &wolf , &step , &score, player); sprintf(sscore,得分:%d,score); sleep( level ); next( &step , &wolf ); / 关闭 closegraph(); pause(); getch(); return 0
22、;void initinterface(coordinate but , buttonstate butsta) / 按钮位置状态 for(int i = 0 ; i nextnode; while(null != p) fillrectangle(p-cor.x , p-cor.y , p-cor.x+p-length , p-cor.y+step_wide); p = p-nextnode; /画板void drawwolf(wolf wolf) putimage(wolf.cor.x,wolf.cor.y, &wolf.img); /画狼void disposestep(step *st
23、ep) step *p; p = step; while( null != p-nextnode ) p = p-nextnode; if(p-cor.y nextnode) p = (step*)malloc(sizeof(step); p-cor.x = rand()%100 +190; p-cor.y = 240; p-length = 100; p-n = 0; p-steptype = safe; p-nextnode = null; step-nextnode = p; /生成新的板的信息 else while(q-nextnode != null) q = q-nextnode;
24、 p = (step*)malloc(sizeof(step); p-length = rand()%70 + 110; p-cor.x = rand()%(520-p-length)/3)*3; p-cor.y = (q-cor.y + (rand()&50) + 60); p-n = q-n + 1; p-steptype = safe; p-nextnode = null; q-nextnode = p; void deletestepnode(step *step)/删除链表 step *p, *q; q = step; p = q; if( null = step-nextnode)
25、 return ; else while( null != p-nextnode ) p = p-nextnode; if(p-cor.y nextnode) q-nextnode = p-nextnode; delete(p); p = q; else q-nextnode = null; delete(p); return ; q = p; if( ready = gamesta ) p = step-nextnode; step-nextnode = null; while( null != p ) q = p; p = p-nextnode; delete(q); void next(
26、step *step , wolf *wolf) step *p = step; while( null != p ) p-cor.y -= 1; p = p-nextnode; if( 1 = wolf-state ) wolf-cor.y -= 1; if( 2 = wolf-state ) wolf-cor.y += 2; void dispatchcmd(wolf *wolf) dispatchkeyboardmessage(wolf); dispatchmousemessage(); void dispatchkeyboardmessage(wolf *wolf) /获取及处理键盘输
27、入 if(getasynckeystate(vk_left) & 0x8000) if(wolf-cor.x 3) wolf-cor.x -= 2; if(getasynckeystate(vk_up) & 0x8000) if(getasynckeystate(vk_right) & 0x8000) if(wolf-cor.x cor.x += 2; if(getasynckeystate(vk_down) & 0x8000) void dispatchmousemessage() / 获取及处理鼠标信息 if(mousehit() mousemsg m; m = getmousemsg()
28、; if(m.mklbutton) if(m.x=535&m.x=20&m.y=535&m.x=110&m.ynextnode; while(null != p) if(wolf-cor.y = p-cor.y - 33 & wolf-cor.y cor.y-30) if(wolf-cor.x = p-cor.x -30 & wolf-cor.x cor.x+p-length) if( 2 = wolf-state) *score = p-n *5; wolf-state = 1; break; else wolf-state = 2; p = p-nextnode; if(wolf-cor.
29、y = 480 | wolf-cor.y = 0) cleardevice(); int a=*score; player.score = *score; itoa(*score,sscore,10); outtextxy(250,120, 游戏结束 ); outtextxy(250,150,按任意键返回!); outtextxy(250,180,得分为:); outtextxy(340,180,sscore); savescore(player); showscore(); flushbatchdraw(); system(pause); gamesta = ready; /int savescore(person player)file *in,*out;int i=0;/新开一个数组存储前5名的玩家信息person rank5;/用来排序的中间数组pe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《人工智能导论》课程教学大纲
- 《西方政治制度史》课程教学大纲
- 2024年出售山地泥土合同范本
- 2024年代理记账合作协议书模板范本二人
- 2024年承接索道工程合同范本
- 保险代理公司反洗钱培训
- 喉癌解剖及手术配合
- 2024年谷物生产项目评价分析报告
- 2024至2030年中国牛油水果条数据监测研究报告
- 2024至2030年中国鳍片式省煤器数据监测研究报告
- DB50-T 771-2017 地下管线探测技术规范
- 2024年全国普法知识考试题库与答案
- 教学计划(教案)-2024-2025学年人教版(2024)美术一年级上册
- 2024年全国职业院校技能大赛中职组(婴幼儿保育赛项)考试题库-下(多选、判断题)
- 机械工程导论-基于智能制造(第2版)第3章 机械设计与现代设计方法
- 2024年新高考Ⅰ卷、Ⅱ卷、甲卷诗歌鉴赏试题讲评课件
- 任务二:诗歌朗诵教案 人教版
- 2024年福建省福州三牧中学中考三模英语试题(原卷版)
- DLT 572-2021 电力变压器运行规程
- DL∕T 1764-2017 电力用户有序用电价值评估技术导则
- 四年级上册英语教案-UNIT FOUR REVISION lesson 14 北京版
评论
0/150
提交评论