java课程设计——猜数字游戏.doc

上传人:大张伟 文档编号:6059227 上传时间:2020-09-02 格式:DOC 页数:20 大小:164.50KB
返回 下载 相关 举报
java课程设计——猜数字游戏.doc_第1页
第1页 / 共20页
java课程设计——猜数字游戏.doc_第2页
第2页 / 共20页
java课程设计——猜数字游戏.doc_第3页
第3页 / 共20页
java课程设计——猜数字游戏.doc_第4页
第4页 / 共20页
java课程设计——猜数字游戏.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《java课程设计——猜数字游戏.doc》由会员分享,可在线阅读,更多相关《java课程设计——猜数字游戏.doc(20页珍藏版)》请在三一文库上搜索。

1、目 录前言1正文11、设计任务与要求11.1 设计任务与要求11.2 选题目的与意义12、需求分析22.1 用户需求分析22.2 开发环境分析23、系统设计33.1 系统总体设计:33.1.1 总体设计分析33.1.2 程序结构33.2 功能模块设计53.2.1 功能模块图53.2.2 功能模块详细设计63.3 类的设计:74、程序实现94.1 程序流程图94.2 关键算法与技术实现104.2.1 随机数的获取104.2.2 输入输出104.2.3 判断时间114.2.4 自动计数114.2.5 结果输出124.2.6 图形界面的实现124.3 类的实现135、源程序:146、测试运行186.

2、1 系统测试方案186.2 运行结果分析186.3结论19致谢19参考文献20前言Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。猜数字游戏是一个简单,有趣的小游戏。通过设计猜数字游戏,可以进一步了解Swing图形用户界面设计,事件处理和异常处理机制。利用Eclipse平台,综合运用Java基础知识,设计猜数字游戏。正文1、设计任务与要求1.1 设计任务与要求功能要求:该程序用图形界面实现下面功能:用计算机产生一个100以内的随机数,游戏者进行猜数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜对为止。游戏结束后给出评语

3、并计算出玩家所用的时间与所猜的次数。具体要求:(1) 输入任意一个数字。数字的要求是1100的自然数即可。(2) 系统对您输入的数字进行判断。如果玩家输入的数字与计算机随机生成数相比较,输入的数字比随机生成数小.系统将提示您,数字太小请您重新输入。如果玩家输入的数字与计算机随机生成数相比较,如果输入的数字比随机生成数大。系统将提示您,数字太大请您重新输入。如果玩家输入的字符不是合法字符,系统将提示您,您输入的数字不合法,请从新输入。(3) 每猜测一次,系统会记录下来,游戏结束后,显示共猜测多少次。(4) 欢迎界面:通过这里提供的选项(或按钮),进入游戏界面。(5) 游戏界面提供“获取随机数”按

4、钮,系统获取到随机数,游戏者输入自己的猜测结果,通过按“确认”按钮完成输入。每次提示输入猜测结果时,给出猜测的准确度提示。(6) 按“获取随机数”按钮,继续游戏。(7) 游戏结束后给出评语并计算出玩家所用的时间与所猜次数。界面要示:用图形界面实现。1.2 选题目的与意义通过猜数游戏这个课题我可以学到文本框、标签框、按钮、布局、对话框方面的知识和应用,达到设计登陆界面、加入图像显示功能以及设计按钮的目的,让我更加的掌握和理解java面向对象语言的需求分析、系统设计,所以我选择猜数游戏这个课题。2、需求分析2.1 用户需求分析1玩家输入一个数字,数字的范围在1-100之间,系统获取随机数。2对玩家

5、输入的数字进行判断大小,如果不是系统要求的数字,系统将提示您,您输入的不是数字请重新输入,给出提醒以便玩家进一步选择。3.玩家猜中时系统给出所用时间和游戏水平的判断,系统给出是否继续的提示及判断。4.系统根据您猜数字的次数,自动计数.5.直到用户猜到数字为止,提示信息是否继续猜数字,如果继续将进入下一次游戏,如果退出将退出游戏系统.2.2 开发环境分析Eclipse企业级工作平台(Eclipse Enterprise Workbench ,简称Eclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及服务器的整合方面极大的提高工作效率。它是功能丰富

6、的JavaEE,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。在结构上, Eclipse的特征可以被分为7类:1. JavaEE模型2. WEB开发工具3. EJB开发工具4. 应用程序服务器的连接器5. JavaEE项目部署服务6. 数据库服务7. Eclipse整合帮助 对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。Eclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,Eclips

7、e是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错。该程序基于JDK和Eclipse编写,选用Eclipse是界面设计所需。根据系统范围随机产生一个数字,可根据玩家选择给出不同的数字。玩家输入所猜数字时给出与真实数字的大小比较。在玩家猜中时,可给出其所用时间,并给出评价。最后,游戏的结束与继续可由玩家控制。3、系统设计3.1 系统总体设计:3.1.1 总体设计分析1.随机数的获取:玩家输入一个数字,数字的范围在1-100之间,系统获取随机数。2. 输入输出模块:对玩家输入的数字进行判断和提示。如果玩家输入的不是系统要求的数字,系统将提示您,您

8、输入的不是数字请重新输入.。如果玩家输入的数字与随机生成数相比较,比随机生成数小.系统提示您,数字太小请您重新输入。如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示您,数字太大请您重新输入。3. 判断模块:算出所用时间在玩家猜中时给出其所用时间,系统给出对其水平的判断和是否继续的提示;对玩家要求判断执行。4.自动计数模块:系统根据您猜数字的次数,自动计数.5.结果输出模块:直到用户猜到数字为止,提示信息是否继续猜数字,如果继续将进入下一次游戏,如果退出将退出游戏系统.3.1.2 程序结构点击“获取随机数”按钮,系统获取到一个随机数。 玩家输入一个数,如果玩家输入的数比系统给出的随

9、机数小,系统会提示“您猜的太小了,请继续猜!”。如果玩家输入的数比系统给出的随机数大,系统提示“您猜的太大了,请继续猜!”。 如果玩家猜对了数,但是所用时间大于十秒,系统会提示“这么久才猜出来,有点笨!”,并且会计算出玩家所用的时间和所猜的次数。如果玩家猜对了数,而且所用时间小于十秒,系统会提示“恭喜您,猜对了!您真棒,智商真高!”,并且会计算出玩家所用的时间和所猜的次数。 开 始系统产生一个随机数X玩家输入一个在099范围内的数Y若XY 输出“您猜的太小了,请继续猜”若XY 输出“您猜的太小了,请继续猜”若XY 猜对输出“您猜的太大了,请继续猜”储存记录这么久才猜出来,有点笨恭喜您,猜对了!

10、您真棒! 结 束 图6 程序流程图4.2 关键算法与技术实现4.2.1 随机数的获取num=(int)(Math.random()*100);String answer;Scanner input=new Scanner(System.in);4.2.2 输入输出 for(i=1;i=10;i+) if(num2num)lbshow.setText(您猜的太大了,请继续猜!);continue;long endTime=System.currentTimeMillis();long t;t=(endTime-startTime)/1000;strshow=您总共猜了+counter+次,您猜数

11、字总共花了+(endTime-startTime)/1000+秒;if(t10)lbshow.setText(这么久才猜出来,有点笨!+strshow); 4.2.3 判断时间startTime=System.currentTimeMillis();long endTime=System.currentTimeMillis();strshow=您猜数字总共花了+(endTime-startTime)/1000+秒;4.2.4 自动计数 int geust=0; counter+;strshow=您总共猜了+counter+次;4.2.5 结果输出 long t;t=(endTime-start

12、Time)/1000;strshow=您总共猜了+counter+次,您猜数字总共花了+(endTime-startTime)/1000+秒;if(t10)lbshow.setText(这么久才猜出来,有点笨!+strshow);4.2.6 图形界面的实现 BorderLayout bdmg=new BorderLayout(); Button button1=new Button(获取随机数); Button button2=new Button(确定); String str=null; String str2=null;long startTime; int num,num2; int

13、counter=0; myGeustNum my1=new myGeustNum(); TextField input; Label lbshow=new Label(); Label lbshow2=new Label(); int i; String strshow; public void init() setLayout(bdmg); add(button1,BorderLayout.NORTH); button1.addActionListener(this); button1.setSize(50,50); Label lb1=new Label( 请输入); lb1.setSiz

14、e(50,20); this.add(lb1,BorderLayout.WEST); input=new TextField(10); input.setSize(40,50); add(input,BorderLayout.CENTER); add(button2,BorderLayout.EAST); lb1.setSize(50,20); button2.addActionListener(this); button2.setSize(50,20); add(lbshow,BorderLayout.SOUTH); setSize(450,200); 4.3 类的实现首先搭建Java程序框

15、架。打开Eclipse,新建名为GuessNumberGame的项目,然后新建名为GuessNumber的Java类。GuessNumber加上合适的javadoc。第一步:随机数的产生我们可以借助Java API提供的Random类来产生一个随机数。首先在main函数中加入以下三行代码:/ 新建一个随机数产生器,然后生成一个1到100之间的整数。 num=(int)(Math.random()*100);String answer;Scanner input=new Scanner(System.in); Eclipse立即在错误语句处划出红线,把鼠标移动到红线上。包(Package)的概念

16、Java API中包含了极其丰富、类似于Random这样由Sun预先定义好的类。不同包中可以有同名同姓的类,如果没有包的概念,就会遇到命名冲突问题。此外,包还能进行安全控制。Random类是在java.util这个包中。可以手动在源程序顶部输入import java.util.Random;语句来申明该程序将要使用java.util包中的Random类,然而有了Eclipse,就不用那么麻烦了把光标移动到有红色波浪线的Random上,然后按下CtrlShiftM,Eclipse会自动帮你完成导入的工作了,此时保存一下源代码。第二句语句定义一个整型变量number来保存随机产生的整数,并且用直接

17、初始化的方法把random产生的随机数赋给number变量。第二步:标准输入输出标准输入输出(Standard I/O)是指可以被应用程序使用的信息流。应用程序可以从标准输入(Standard input)读取数据,向标准输出(Standard output)写数据,把出错信息发送到标准错误(Standard error)。通过输入输出,应用程序和应用程序之间可以被串联起来使用。虽然标准输入输出是从UNIX发展出来的概念,在Windows中也广泛应用。猜数字游戏主要用到标准输入,更明确一些,就是控制台输入。相反,要从控制台输入,就需要用到System.in。它是一个纯粹的输入流,而猜数字游戏主

18、要是通过控制台获取玩家的字符输入,我们需要把它包装成一个BufferedReader。 第三步:使用BorderLayout对图形界面的窗口进行设计。5、源程序:Package a;import java.awt.Color; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Box; import javax.swing.JButton; import

19、 javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField; class WindowButton extends JFrame implements ActionListener /* * */ private static final long serialVersionUID = 1L; int number; JTextField inputNumber; JLabel feedBack; JButton buttonGetNu

20、mber,buttonEnter; WindowButton(String s) super(猜数字小游戏); buttonGetNumber=new JButton(得到一个随机数); feedBack=new JLabel(无反馈信息,JLabel.CENTER); feedBack.setBackground(Color.green); inputNumber=new JTextField(0,5); buttonEnter=new JButton(确定); buttonEnter.addActionListener(this); buttonGetNumber.addActionLis

21、tener(this); buttonGetNumber.addActionListener(this); Box boxH1=Box.createHorizontalBox(); boxH1.add(new JLabel(获取1-100之间的随机数:); boxH1.add(buttonGetNumber); Box boxH2=Box.createHorizontalBox(); boxH2.add(new JLabel(输入您的猜测: );boxH2.add(inputNumber); Box boxH3=Box.createHorizontalBox(); boxH3.add(new

22、JLabel(单击确定按钮: );boxH3.add(buttonEnter); Box boxH4=Box.createHorizontalBox(); boxH4.add(new JLabel(反馈信息: ); boxH4.add(feedBack); Box baseBox=Box.createVerticalBox(); baseBox.add(boxH1); baseBox.add(boxH2); baseBox.add(boxH3); baseBox.add(boxH4); Container con=getContentPane(); con.setLayout(new Flow

23、Layout(); con.add(baseBox); con.validate(); setBounds(120,125,279,200); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100,100,150,150); setVisible(true); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=buttonGetNumber) number=(int)(Math.random()*

24、100)+1; else if(e.getSource()=buttonEnter)int guess=0; try guess=Integer.parseInt(inputNumber.getText(); if(guess=number) JOptionPane.showMessageDialog(this,猜对了); else if(guessnumber) JOptionPane.showMessageDialog(this,猜大了); inputNumber.setText(null); else if(guessnumber) JOptionPane.showMessageDial

25、og(this,猜小了); inputNumber.setText(null); catch(NumberFormatException event) JOptionPane.showMessageDialog(this,请输入数字字符); public class 猜数字游戏 public static void main(String args)new WindowButton(猜数字小游戏); package b;import java.util.Date;import java.util.Scanner;public class test2 public static void mai

26、n(String args) /给定生成随机数的范围11000Scanner input = new Scanner(System.in);int num = (int) (Math.random() * 100) + 1;System.out.println(系统已经生成数字,猜猜看这个数字是多少?(如果实在猜不出来,就输入投降吧);Date d1 = new Date();int gNum = 0;int count = 0;boolean isHandup = false;do count+;System.out.print(第 + count + 次:);try gNum = inpu

27、t.nextInt();if (gNum num) System.out.println(猜大了); catch (Exception ex) if (input.next().trim().equals(投降) isHandup = true;break;System.out.println(输入数字格式不正确,请重新输入。);count-;continue; while (gNum != num);Date d2 = new Date();int time = (int) (d2.getTime() - d1.getTime() / 1000 + 0.5);if (isHandup) Sy

28、stem.out.println(悲剧,你投降了!共用了 + time + 秒,猜了 + (count-1)+ 次。);isHandup=false; else if (count * time 10) System.out.println(太棒了!你运气真好!共用了 + time + 秒,猜了 + count+ 次。); else if (count * time 50) System.out.println(你真聪明!共用了 + time + 秒,猜了 + count + 次。); else if (count * time 1000) System.out.println(真棒!你竟然猜

29、出来了!共用了 + time + 秒,猜了 + count+ 次。); else System.out.println(终于猜对了,你也太笨 了吧。共用了 + time + 秒,猜了 + count+ 次。);6、测试运行6.1 系统测试方案1.点击运行程序后,显示出图形界面。2.点击“获取随机数”按钮,系统获取到一个随机数。3 .玩家输入一个数,点击“确定”按钮。如果玩家输入的数比系统给出的随机数小,系统会提示“您猜的太小了,请继续猜!”。如果玩家输入的数比系统给出的随机数大,系统提示“您猜的太大了,请继续猜!”。4 .如果玩家猜对了数,但是所用时间大于十秒,系统会提示“这么久才猜出来,有点

30、笨!”,并且会计算出玩家所用的时间和所猜的次数。如果玩家猜对了数,而且所用时间小于十秒,系统会提示“恭喜您,猜对了!您真棒,智商真高!”,并且会计算出玩家所用的时间和所猜的次数。5. 如果玩家想重新再玩一次,点击“获取随机数”按钮即可继续玩下一轮游戏。6.2 运行结果分析开始运行程序时图形界面的显示图7 图形显示界面玩家输入一个数“10”后,点击“确定”,系统提示“您猜的太小了”。玩家再次输入一个数“70”后,点击“确定”,系统提示“您猜的太大了”。 玩家再次输入一个数“32”,点击“确定”,系统提示“猜对了”。6.3结论经过差不多两个星期的努力,基本上完成我的Java课程设计简单的记事本程序

31、,也基本上实现了我在需求分析时所预期的功能。通过这次的课程设计,使将我从书本上学习到的理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识,让我更深层次地认识到Java及其强大的功能。同时,做这门课程设计也进一步加强了我的动手能力。为了完成好这次课程设计,我提前做了较多的准备,一边上网查找相关资料,另一方面查阅相关书籍。在这过程中也无形中锻炼了我的思维分析、遇到问题及想方设法通过各种途径解决问题的能力。但是,设计过程中也存在一些问题,本来一开始想给这个记事本程序加上一张背景图片,以及添加字体设置功能,但是由于本人知识浅陋以及各种其他原因,使得这些想法没有实现,这是这次课程设计的一点遗憾。

32、致谢在这次课程设计的撰写过程中,我得到了许多人的帮助。首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。同时也感谢学院为我提供良好的做毕业设计的环境。最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学。 参考文献1 印旻Java与面向对象程序设计教程北京:清华大学出版社,1999.112 Cay S.Horstmann,Gary Cornell著.Java核心技术.北京:机械工业出版社,2008.53 张跃平.Java2实用教程实验指导与习题解答(第三版)M. 北京:清华大学出版社, 20044 布洛克.Effective Java中文版.机械工业出版社,2009.01

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1