您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 设计一个GUI猜数字游戏程序
软件学院课程设计报告书课程名称面向对象程序设计设计题目设计一个GUI猜数字游戏程序专业班级学号姓名指导教师2011年6月目录1设计时间................................................................................................12设计目的................................................................................................13设计任务................................................................................................14设计内容…………………………………………………………………………14.1概要设计........................................................................................24.2自定义类及接口说明....................................................................34.3程序源码........................................................................................44.3.1程序.......................................................................................54.3.2程序运行与调试...................................................................85总结与展望............................................................................................9参考文献..................................................................................................10成绩评定..................................................................................................101设计时间:2011年6月6日——2011年6月10日2设计目的:目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。3设计任务:该游戏可以由程序随机产生四个0到9之间的整数,且不重复。玩游戏者通过由用户输入四个数字来匹配上面所产生的数字。A表示位置正确且数字正确,B表示数字正确而位置不正确。假设随机数据为3792时,分析如下数据:3792输入:12340A2B输入:56780A1B输入:08670A1B输入:97861A1B输入:17942A0B输入:27932A2B输入:37924A0B4设计内容4.1概要设计:本段代码中主要有GuessNumber和ActionHandler两个类,程序中设置了a,b两个变量作为对与错数量的显示,并且设置了一个计数器count为所猜次数进行计数,设置了监听接口ActionAHandler类来实现,并且用for循环和if语句来为变量I,j服务。后面设置了一个异常处理,使用try和catch来捕获异常。使用GUI技术实现猜数字和游戏的图形界面。4.2自定义类及接口说明:类名:GuessNumber父类:JFrame作用:实例化对象主要成员变量:intA=0//位置和树枝都正确的个数intB=0//数值正确位置不正确的个数intcount//所猜次数计数器int[]Random=newint[4]//正确的四个数字int[]Enter=newint[4]//你猜的四个数字privateJTextFieldtf_1//定义一个文本区域-用户输入区privateJLabellb_1,lb_2//定义两个标签——信息显示区privateJButtonbtn_1//游戏按钮主要成员方法:publicGuessNumber()//构造方法privatevoidnewi()//产生四个不相同的数catch(Exceptione)//捕获例外publicvoidactionPerformed(ActionEventevent)//设置监听器setText(“”)//清空文本区域4.3程序源码4.3.1程序importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassGuessNumberimplementsActionListener{inti,j;intA,B;inta,b,c,d,x,z,y=8;intRandom[]=newint[4];intEnter[]=newint[4];TextFieldEnterNum=newTextField(18);TextAreashow=newTextArea(5,1);JFramef=newJFrame();JButtonbutton1;publicvoidRandomnum(){for(b=0;b==0;){for(i=0;i4;i++)Random[i]=(int)(10*Math.random());for(i=0;i4;i++)for(j=0;j=i;j++)if(Random[i]==Random[j]&&i!=j){i=5;break;}elseif(i==3&&j==3)b++;}}publicvoidaa(intz){a=z/1000;b=z/100-10*a;c=z/10-100*a-10*b;d=z-1000*a-100*b-10*c;}publicvoidpeidui(){A=0;B=0;for(i=0;i4;i++)for(j=0;j4;j++)if(Random[i]==Enter[j]){if(i==j)A++;elseB++;}show.append(\n+A+A+B+B+Enter[0]+Enter[1]+Enter[2]+Enter[3]);while(true){if(y!=0){show.append(你还有+y+次机会!+\n);y--;}elseshow.append(你猜错了,请重新游戏!+\n+\n正确结果是:+Random[0]+Random[1]+Random[2]+Random[3]);break;}if(A==4&&B==0){show.append(\n+恭喜你猜对了!);}}publicGuessNumber(){Randomnum();Containern=f.getContentPane();n.setLayout(newBorderLayout());button1=newJButton(确定);button1.addActionListener(this);n.add(North,show);n.add(West,EnterNum);n.add(East,button1);f.pack();f.setVisible(true);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}publicvoidactionPerformed(ActionEventn){if(n.getActionCommand()==确定){try{x=0;intz=Integer.valueOf(EnterNum.getText());aa(z);Enter[0]=a;Enter[1]=b;Enter[2]=c;Enter[3]=d;}catch(Exceptionm){show.append(\n+请检查输入值的格式!);x=1;}if(EnterNum.getText().length()!=4){show.append(\n+请输入四位数字!);}elseif(x==0){for(i=0;i4;i++)for(j=0;j4;j++){if(Enter[i]==(Enter[j])&&i!=j){show.append(\n+请输入4不同的数字!);i=5;break;}elseif(i==3&&j==3)peidui();}}}}publicstaticvoidmain(String[]args){newGuessNumber();}}4.3.2程序运行与调试1.运行界面2.错误调试(1)在ActionHandler类中try语句出现错误。原因:try语句单独使用。如何解决:加入catch捕获异常,与try搭配使用。(2)在GuessNumber类出现错误。原因:少打了一个}。如何解决:在末尾加上}(3)0与O的混淆。原因:0与O不好区别。如何解决:将打错的0改为O。(4)在ActionHandler类中没有创建number对象。原因:由于代码较多,比较复杂,所以在写代码是遗忘。如何解决:创建int型的number对象(5)在ActionHandler类中没有实现接口。原因:没有实现ActionHandler监听。如何解决:定义类时后面加上implementsActionHandler(6)if语句语法错误。原因:if()后加了。如何解决:删除。(7)在GuessNumber类newi()方法中出现忘记设置返回值类型错误。原因:没有设置返回值类型,编译时不识别。如何解决:加上void,使此方法没有返回值。5总结与展望进行了几天的课程设计,经过反复的修改,我的猜数字程序终于得以完成,Java是这学期才开的一门课,语法较多,对于我这个入门者来说有点困难,尤其是GUI部分,听课的时候就觉得那一章比较杂乱,一直也没有掌握太好,所以设计出来的程序界面实现较少,不是很好看。本次设计使得我在GUI和类,接口这几方面的掌握能力有了提高,在使用面向对象语言编写程序这方面,我有了深深的体会,曾经听说过一句话,学习java“不走弯路,就是捷径”。进行了课程设计后,我更加感觉到了这句话的深刻内涵。Java是一种平台,也是一种程序设计语言,如何学习好程序设计是非常重要的。学习Java要脚踏实地,快餐式的学习方法不可取,要从平日里就勤加练习,多多实践,只要实践的多,写代码才能熟练。参考文献[1]Java程序设计作者:刘万军,梁清华,王松波等清华大学出版社,2006[2]王路群,Java高级程序设计。北京:中国水利水电出版社,2006[3]朱福喜编著,Java语言习题与解析。北京:清华大学出版社,2006成绩评定成绩教师签字
本文标题:设计一个GUI猜数字游戏程序
链接地址:https://www.777doc.com/doc-5432131 .html