您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > Java课程设计打字游戏
Java课程设计1中南大学Java课程设计报告题目打字游戏学生姓名窦立阳指导教师陈丽萍学院信息科学与工程学院专业班级计科1204完成时间2015年1月15日Java课程设计2目录第一章实验要求..................................................3第二章总体设计2.1界面设计..................................................42.2运行流程..................................................42.3逻辑设计..................................................42.4积分设计..................................................4第三章详细设计3.1主面板....................................................53.1.1两个按键............................................53.1.2相关全局变量........................................53.1.3全局变量说明........................................53.1.4相关全局函数........................................73.2字符下落模块..............................................73.2.1WordLabel............................................73.2.2WordFallControl......................................83.2.3WordFallLabel........................................83.3速度控制模块..............................................83.4按键模块设计..............................................83.5键盘监听事件..............................................93.6积分模块设计..............................................93.7事件模块设计.............................................10第四章调试分析4.1第一次调试...............................................114.2第二次调试...............................................114.3第三次调试...............................................12第五章运行结果.................................................13第六章课程设计总结.............................................17第七章参考文献.................................................19第八章附录:带注释的源代码8.1Wordfall................................................208.1.1WordFallControl类.....................................208.1.2WordLabel类...........................................228.1.3WordFallLabel类.......................................238.2ScoreLabel类............................................248.3StartButton类...........................................258.4TimeLabel类.............................................268.5AAAAA类:程序的主函数入口...............................288.6Maintain类.................................................30Java课程设计3第一章实验要求【问题描述】设计实现一个打字游戏,界面参见图2-2,具备如下功能:点击“开始”按钮,产生随机字符从屏幕上方下落;点击键盘上按钮,如果正确,当前的字符消失,产生新的按钮从上方继续落下。提供速度调整和积分功能。图2-2打字游戏界面Java课程设计4第二章总体设计2.1界面设计根据实验要求中的图2-2,在主面板中,1.1.1有一个模块控制各个字符的生成并且控制他们的自动下落,并在正确触发时,字符不可见;1.1.2有一个模块用于设置下落速度;1.1.3有两个按键,分别为“开始”和“结束”,用于字符下落的开始和结束;1.1.4整个面板处于键盘事件监听中,所以还有一个模块负责监听键盘事件;1.1.5相应的,根据要求,会有一个模块用于将键盘事件和下落的字符进行操作,并且计算出积分。2.2运行流程1.2.1程序启动,程序等待按键“开始”的事件的触发;1.2.2当“开始”键触发后,负责字符下落的模块,将持续产生字符,并使其下落;1.2.3键盘开始被监听,从键盘的按键触发,向程序返回值;1.2.3积分模块开始工作,将字符下落模块的字符和键盘事件返回的值进行比较,得出积分,并且将积分值显示在面板上;1.2.4如果点击“停止”按键,所有模块停止工作,等待程序关闭,或者等待“开始”按键事件的再次触发,从1.2.1继续这一流程。2.3逻辑设计1.3.1字符不断产生并且下降,需要一个线程控制产生字符,然后还应该有一个线程对面一个字符,控制其下落。1.3.2键盘被按下后,立刻会有值返回到程序中,积分模块会每隔一段时间将,键盘事件返回的值,和当前需要按下的值进行比较。2.4积分说明当开始产生字符后,会有很多字符都是可输入的,但是当前可输入的字符只有一个,所以可以考虑设计一个链表,没当产生一个字符,便将该字符存入链表中,并且有一个指针永远指向当前需要输入的值。由于界面大小有限,当字符持续下落超过界面大小时,不能够通过玩家来猜测,已经不见的当前需要输入字符,所以当界面上字符超过十个时,便认为该玩家反应时间过长,判定其为错误,并且将当前需要输入的字符设置为下一个。并且从游戏角度考虑,当这种情况出现3次后,便可以判定本轮游戏结束。Java课程设计5第三章详细设计3.1主面板publicclassGameFrameextendsJFrame主面板中主要涉及的是两个按键,各个组件在面板上的布置,以及其他的全局变量的设置。3.1.1两个按键JButtonbtnStart=newJButton()JButtonbtnStop=newJButton()ScoreLabelscoreLabelKeyEventPanelkeyEventPanelWordFallLabelwordFallLabelJSliderslider3.1.2相关的全局变量booleanSTART_FLAG=false;ArrayListIntegerCODE_LIST=newArrayListInteger();ArrayListWordLabelwordLabels=newArrayListWordLabel();intCHAR_VALUE=0;intKEY_VALUE=0;intPOINTER=0;intMAXFALSE=3;intSUCCESSTIME=0;intTRYTIME=3;intSPEED=1400;publicstaticvoidinit(){CODE_LIST.clear();wordLabels.clear();CHAR_VALUE=0;KEY_VALUE=0;POINTER=0;MAXFALSE=3;SUCCESSTIME=0;TRYTIME=3;}3.1.3全局变量说明:Java课程设计6START_FLAG:由于在程序启动时,各个组件就已经开始工作,用START_FLAG使他们通过if语句,不做任何动作,当START_FLAG==true时,便可以开始进行游戏,避免了反复启动线程可能会造成意外情况的麻烦。CODE_LIST:在游戏线程启动后,会产生很多的字符,这些字符若存放在局部空间内,很有可能会出现其他组件需要调用该值并且需要通过一系列传值过程才能实现,将这些值放在一个公共空间内的列表中,虽然会出现安全上面的问题,但是无疑为程序的实现减少了很多的工作,宽且这也只是一个游戏,在安全上的问题可以忽略。wordLabels:这个全局变量的设置,主要是为了实现下落字符的消失。产生的字符会放在label中,通过控制label的行为来控制字符的行为。将每一个WordLabel实例放在该列表中,可以通过在其他空间的控制来实现自己的想法。CHAR_VALUE:里面存放的是产生的字符的值,每一个字符都可以通过ASCII码转变为一个整数类型的值,通过比较整数值来确定是否匹配。KEY_VALUE:存放了最近一次从键盘内获得的值,由于可能出现连续出现相同字符的情况,KEY_VALUE里的值必须定时清空,考虑之后,与每次在每次比较完之后进行清空操作比较合适。Java课程设计7POINTER:在CODE_LIST中会有很多数,但是当前正确的值,只有一个,那就是POINTER指向的位置,通过判断KEY_VALUE和CHAR_VALUE的值,对POINTER进行操作,具体操作会在ScoreLabel中说明。MAXFALSE,TRYTIME:最大失误次数,当超过这个次数时,当局游戏就会结束。SUCCESSTIME:本轮当前成功次数,统计成功次数用来积分。SPEED:控制字符下落速度,这个值会与难度条上的值具有映射关系。3.1.4全局方法说明:publicstaticvoidinit();在新的一轮游戏开始前,全局变量中的值任然是上一轮的数据,需要对其中的数据进行初始化,设置为公共方法便于调用,其中的操作都是必须的操作,无多余也无漏缺。3.2字符下落模块3.2.1publicclassWordLabelextendsJLabel{}:这个类主要负责创建一个下落的字符。由于共有26个字母和10个数字会在游戏中被记为字符,通过随机函数(int)(Math.random()*35)产生36个随机数,根据ASCII码的规则,字符0-9对应的职位48-57,根据产生的值加上48,便可以得到字符0-9,同理字符A-Z对应的值为65-90,根据产生的值,由于是从10开始,所以加上55,就可以得到对应的字母字符,每产生一个字符,便将该字符添加到CODE_LIST中,以作他用。Java课程设计83.2.2publicclassWordFallControlextendsThread{}:在WordLabel被实例化后,需要有个方法控制其下落,由于会产生喝多字符,对众多字符进行统一管理,并且还要考虑到字符在其他情况下的动作,太过复杂,所以在这个组件中,只考虑字符的下落,每个字符交由一个控制对象控制。每过SD.SLEEP毫秒的时间,WordLabel的位置便会下移一个单位,这个单位设置为50。交由线
本文标题:Java课程设计打字游戏
链接地址:https://www.777doc.com/doc-4465620 .html