人机界面交互大作业_第1页
人机界面交互大作业_第2页
人机界面交互大作业_第3页
人机界面交互大作业_第4页
人机界面交互大作业_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、目录人机界面设计大作业错误!未定义书签。TOC o 1-5 h z HYPERLINK l bookmark2 第一章系统需求分析1 HYPERLINK l bookmark4 系统需求1 HYPERLINK l bookmark6 功能需求1 HYPERLINK l bookmark8 性能需求1 HYPERLINK l bookmark20 第二章概要设计2 HYPERLINK l bookmark22 2.1局部数据结构2 HYPERLINK l bookmark24 2.2全局结构3 HYPERLINK l bookmark26 2.3函数模块分析3 HYPERLINK l bookm

2、ark28 第三章详细设计及代码编写3 HYPERLINK l bookmark30 3.1功能函数设计3 HYPERLINK l bookmark32 3.2游戏欢迎模块4 HYPERLINK l bookmark38 3.3游戏选择模块5 HYPERLINK l bookmark40 3.4游戏通关模块6 HYPERLINK l bookmark42 3.5游戏运行模块73.6游戏结束模块7 HYPERLINK l bookmark58 第四章测试设计8 HYPERLINK l bookmark60 4.1测试设计内容8 HYPERLINK l bookmark62 4.2用户手册8 HY

3、PERLINK l bookmark64 第五章总结9 HYPERLINK l bookmark66 参考文献9 第一章系统需求分析系统需求宝石探秘是一款锻炼眼力的宝石交换消除游戏。游戏画面会出现各种各样、不同颜色的宝石,游戏的规则就是通过交换相邻的两块宝石,使3个同一颜色的宝石连在一起,就可以消去他们。只能交换横向、纵向,不能是斜向的。在游戏的主程序中,最重要的两项数据是一个记录每个图形的类型的二维数组和一个记录每个图形状态的二维数组。每个图形的类型由电脑随机产生。每种图形的颜色记录在一个数组中。用三个整型变量分别记录玩家的关数、生命值、得分。用两个整型变量记录光标的位置。用两个长型变量记录

4、起始时间和停止时间。功能需求设计一款简单C语言游戏,游戏的主要功能是在游戏区随机填满四种图形(圆形、三角形、正方形和菱形),但开始时横向和纵向都不能有三个或三个以上相同的图形相连。通过交换相邻位置的图形使尽可能多的图形相连,即可消去相连图形(清除前图形会闪烁),得分为消去相连图形的个数。直到限定时间到,结束一局。程序支持键盘操作,不支持鼠标操作。在初始界面下按F2可以开始游戏。按F3进入选项菜单,在选项菜单中用户可以选择要玩的等级(7X7或8X9),并分别选择四种图形的颜色。按ESC可以随时退出游戏。游戏开始后用户可以通过上下左右键来控制光标的位置。按ENTER键可以选中一个未选中的图形,再将

5、光标移动到选中图形的上下或左右图形上,再按ENTER键,即可实现相邻图形的交换。如果光标指向的图形已选中,再按ENTER键可以取消图案被选中的状态。按F4键可以暂停游戏。限定时间到用户未成功过关则生命值减一,生命值为零时,游戏结束。每局结束,都有文字提示。用户过关会显示“welldone”,本局失败显示“tryagain”,游戏结束显示“gameover”。性能需求1硬件环境本程序是用TurboC3.0开发的,在xp环境下运行。在Vista操作系统下不可运行。处理器:IntelPentium43.06GX或更高内存:256M(推荐)硬盘空间:40GB显卡:SVGA显示适配器2软件环境操作系统:

6、Windows2000/XP开发软件:MicrosoftVisualStudio.NET2008数据库:MicrosoftSQLServer2005第二章概要设计2.1局部数据结构利用二维数组记录每个图形的类型和状态。每次交换、清除、重新填入图形,都要改变数组元素的値。并重新绘制图形omain()函数运行后,如果用户按F3选择SETTING选项后,调用函数setting(),进行用户设定,改变参数的值。当用户按F2选择START选项后,调用函数start(),游戏开始。结构体:structDiamondintx;inty;intlife;inttype;diamond99;/用于钻石坐标定位,

7、判断消除和类型分配。全局数组:charscoreup3=0;/记录分数时所用各位数数组全局变量:intLife1,time1,person;/消去宝石累加之和,生命条数,时间计数,剩余人数intupnum,downnum,leftnum,rightnum;/上下左右键盘响应次数记录intdiamondnum=3;/初始化宝石数量intxselect,yselect;/ENTER后位置intx1select,ylselect;/前一次ENTER后位置intflagE=O;/判断是否响应ENTERintmoveselect=0;/判断是否移动光标intLevel=0;/等级标志inti1,j1,k

8、1,k2;/选择模式参数intPm=0,Pn=0,Pfm=0,Pfn=0,score=0;/记录光标移动所在宝石的位置time_tStart,End;/时间始末参数2.2全局结构图2-1模块2.3函数模块分析Voidsetting()用于设置游戏关卡和各种图形的颜色Voidstart()用于开始游戏,Voiddeal()在初始化图形时,保证最初的图形不会出现三个或三个以上相同图形相连。Voidkeys()用于start()中的键盘响应,按上下左右键移动光标,按ENTER键选中图形。Voidgame()用于判断是否超过限定时间,结束游戏。Intchange()用于检测两个位置的图形交换后是否出现

9、三个或三个以上相同图形相连,若有,则记录应该清除的图形位置,并返回1,表示可以交换。Voidcheck()用于清除相连的图形,闪烁,并完成图形的下落和重新生成,并检查图形下落后是否有新的相连图形,若有则记录应清除的图形,进行下一次清除。Voidsan()用于绘制三角形并填充颜色。Voidju()用于绘制正方形并填充颜色。Voidling()用于绘制菱形并填充颜色。Voidyuan()用于绘制圆形并填充颜色。Voiddraw()用于根据二维数组元素的值在相应位置绘制相应图形。Voidshow()显示初始界面。第三章详细设计及代码编写3.1功能函数设计Voidsetting()函数进行游戏设定,通

10、过改变变量level的值改变关卡,通过给记录颜色的数组的每个元素的值来改变每种图形的颜色。Voidstart()函数,开始游戏。根据level的值确定行列数,画出网格,调用random()函数给记录图形类型的二维数组每个元素赋值,并调用deal()函数使初始画面中没有三个或三个以上相同图形相连的情况。根据每个数组的值,画出相应位置的图形。用time()函数记录开始时间。做一个循环。若有键盘输入则调用keys()函数键盘响应。每次按回车后重新输出分数。若分数已达到过关的分数则开启下一关。再次调用time()函数记录当前时间。用两次时间的差值计算剩余时间,并用bar()函数画出时间进度条。Void

11、deal()利用循环扫描是否有三个或三个以上图形相连,若有则把重新生成此位置对应数组元素的值,并用递归方式调用deal(),初始化图形。Voidkeys()首先判断是否有键盘输入,若有则接受键盘扫描码,若是方向键则吧当前光标位置画绿色矩形框,并把移动后所在位置画洋红色矩形框,表示光标移动。若是ESC键则调用exit(0)函数结束程序。若是ENTER键则改变变量et的值。et为记录是否已选中其他图形的变量。若et为1,则调用change()函数。若change()返回值为1,则调用check()清除相连的图形,并完成图形下落。Voidgame()调用time()函数,获得当前时间,与初始时间相减

12、判断限定时间是否已经到达。若已到达限定时间则结束一局。若生命值减一,若生命值变为一则游戏结束。Voidchange()扫描是否有相连的图形,若有则把对应的记录状态的数组元素值改为1,并返回1,并把交换的两个图形对应数组元素的值交换,并重新画出两个位置的图形,完成交换。Voidcheck()清除的状态数组元素为1的对应图形,每清除一个图形分数加一,重新绘制图形,再清除,完成闪烁。利用循环,把每列的图形对应数组元素由下向获得上面状态数组元素为0类型的值,若首行的元素也被清除则重新随机生成。从而完成图形的下落。此函数中,用循环函数判断上面有多少被清除的图形,判断该获得哪个元素的值。重新利用循环扫描是

13、否有相连图形。Voidsan()、voidling()用直线画出密封图形,并有floodfill()函数填充图形颜色Voidyuan()、voidju()用circle()和rectangle()函数画图并用floodfill()函数填充颜色。Voiddraw()用switch()语句根据数组元素的值画出相应的图形,避免其他函数中需要重新画图时,书写的语句过长。Voidshow()输出初始界面。3.2游戏欢迎模块核心代码部分:keycode;hua(480,90);setcolor(lO);rectangle(0,0,639,479);setcolor(4

14、);settextstyle(0,0,2);outtextxy(100,10,Instructrion!);setcolor(15);settextstyle(3,0,2);outtextxy(5,40,1:YougonnaplayBejeweled,ifyoudont);outtextxy(5,65,wannacontinue,pressEsc.);outtextxy(5,100,2:Youwillfirstchose7X7modeor);outtextxy(5,125,8X9mode,useArrowkeytoselect.);outtextxy(5,160,3:Whilegamestar

15、ts,youneedhurryto);outtextxy(5,185,findandexchange2diamondstomake);outtextxy(5,210,3samediamondslineup,thenscoreup);outtextxy(5,245,4:UseEntertoselect,Arrowkeytomove);outtextxy(5,270,Esctoquitgame!);outtextxy(5,305,5:Aslevelup,difficultylevelwillup,more);outtextxy(5,330,diamondswilljoinin.);outtextx

16、y(5,365,6:Useyourwisdomandhaveagoodtime!);settextstyle(3,0,4);setcolor(RED);outtextxy(100,400,PressEntertocontinue!);dokeycode=all_key();while(keycode!=ENTER&keycode!=ESC);if(keycode=ESC)closegraph();3.3游戏选择模块核心代码部分:intselectmode()intkeycode;intflag=0;dosetcolor(9);keycode=all_key();if(keycode=ESC)b

17、reak;if(keycode=DOWN)fire(110,235,4,15);fire(110,235,12,10);fire(110,235,14,5);fire(110,175,0,15);flag=1;if(keycode=UP)fire(110,175,4,15);fire(110,175,12,10);fire(110,175,14,5);fire(110,235,0,15);flag=0;while(keycode!=ENTER);if(flag=1)return1;if(flag=0)return0;3.4游戏通关模块核心代码部分:voidfire(intx,inty,intc

18、olor,intsize)setcolor(color);setfillstyle(1,color);fillellipse(x+15,y+15,size,size);3.5游戏运行模块核心代码部分:x;setcolor(O);setfillstyle(l,O);for(x=0;xv=150;x+)bar(318-x*2,5,320-x*2,475);bar(320+x*2,5,332+x*2,475);voiddiamond1(intx,inty)setcolor(4);setfillstyle(1,5);fillellipse(x+25,y+25,20,8);f

19、illellipse(x+25,y+25,8,20);setcolor(2);setfillstyle(1,14);fillellipse(x+25,y+25,8,8);3.6游戏结束模块核心代码部分:voidgameover()setcolor(0);setfillstyle(1,0);bar(1,1,639,479);intkeycode;setcolor(RED);settextstyle(0,0,7);outtextxy(50,220,GAMEOVER);while(all_key()!=ESC);closegraph();第四章测试设计4.1测试设计内容在开发这个软件系统的过程中,面

20、对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,在本次设计过程中,我采用循环测试法,力求在每个阶段结束之前通过严格技术审查,即每完成一个功能,就进行测试,尽可能早的发现并纠正差错,完成模块测试之后再进行系统测试。在该设计中,我偏重考虑了当用户输入的信息出错时,系统就会出现提示,以便让用户知道出错的原因,并能及时做出修改,所以我站在用户的角度考虑,尽可能设想各种边界条件,如记录为空,输入为空,输入出错等,以此来发现错误,纠正错误,取得了一定的效果。综上所述,程序在windowsXP下运行正常。清除横向纵向以及横纵相连等特殊情况均可正常清除,并正确的下落图形。靠近边界的相连图形可以正常

21、清除和下落。用户手册这是一款简单C语言游戏,可以在dos、windowsxp、windows2000等操作系统上运行。无需安装,即可使用。游戏的主要功能是在游戏区随机填满四种图形(圆形、三角形、正方形和菱形),但开始时横向和纵向都不能有三个或三个以上相同的图形相连。通过交换相邻位置的图形使尽可能多的图形相连,即可消去相连图形(清除前图形会闪烁,清除后会发出声音),得分为消去相连图形的个数。直到限定时间到,结束一局。程序支持键盘操作,不支持鼠标操作。在初始界面下按F2可以开始游戏。按F3进入选项菜单,在选项菜单中用户可以选择要玩的等级(7X7或8X9),并分别选择四种图形的颜色。按ESC可以随时

22、退出游戏。游戏开始后用户可以通过上下左右键来控制光标的位置。按ENTER键可以选中一个未选中的图形,再将光标移动到选中图形的上下或左右图形上,再按ENTER键,即可实现相邻图形的交换。如果光标指向的图形已选中,再按ENTER键可以取消图案被选中的状态。按F4键可以暂停游戏。限定时间到用户未成功过关则生命值减一,生命值为零时,游戏结束。每局结束,都有文字提示。用户过关会显示“welldone”,本局失败显示“tryagain”,游戏结束显示“gameover”。第五章总结终于到了总结的部分,好开心哦。看着运行正常的程序,心里涌出一股强烈的成就感。这是第一次真正意义上的独立设计程序,最重要的是,它达到了我预期的效果,甚至可以毫不客气的说,它完成的比我期望的要更好。总算没有白白辜负这一个多星期以来的期待,虽然真的是让我头疼到晚上都没睡好。接下来,谈谈我的程序从开始到现在的完美蜕变历程吧。最开始心中充满疑问,对自己的实力颇为怀疑,对这种图形的处理没有信心。以前只编过一些比较简单的字符处理程序,编这样一个比较难的程序,出现了很多错误,有时为了一个错误调试几天几夜,但是只要不放弃,最终还是成功了。一步一步地完成了程序的一些功能,最后终于做出了符合要求的程序。这次课设锻炼了我的自学能力。我有时对函数的理解是错误的导致了程序的错误,在老师的指导下我改正了错误,加深了理解。这次课设

温馨提示

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

评论

0/150

提交评论