java课程设计猜数字游戏.docx
- 文档编号:11190193
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:22
- 大小:174.13KB
java课程设计猜数字游戏.docx
《java课程设计猜数字游戏.docx》由会员分享,可在线阅读,更多相关《java课程设计猜数字游戏.docx(22页珍藏版)》请在冰豆网上搜索。
java课程设计猜数字游戏
前言
Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。
猜数字游戏是一个简单,有趣的小游戏。
通过设计猜数字游戏,可以进一步了解Swing图形用户界面设计,事件处理和异常处理机制。
利用Eclipse平台,综合运用Java基础知识,设计猜数字游戏。
正文
1、设计任务与要求
1.1设计任务与要求
功能要求:
该程序用图形界面实现下面功能:
用计算机产生一个100以内的随机数,游戏者进行猜数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜对为止。
游戏结束后给出评语并计算出玩家所用的时间与所猜的次数。
具体要求:
(1)输入任意一个数字。
数字的要求是1—100的自然数即可。
(2)系统对您输入的数字进行判断。
如果玩家输入的数字与计算机随机生成数相比较,输入的数字比随机生成数小.系统将提示您,数字太小请您重新输入。
如果玩家输入的数字与计算机随机生成数相比较,如果输入的数字比随机生成数大。
系统将提示您,数字太大请您重新输入。
如果玩家输入的字符不是合法字符,系统将提示您,您输入的数字不合法,请从新输入。
(3)每猜测一次,系统会记录下来,游戏结束后,显示共猜测多少次。
(4)欢迎界面:
通过这里提供的选项(或按钮),进入游戏界面。
(5)游戏界面提供“获取随机数”按钮,系统获取到随机数,游戏者输入自己的猜测结果,通过按“确认”按钮完成输入。
每次提示输入猜测结果时,给出猜测的准确度提示。
(6)按“获取随机数”按钮,继续游戏。
(7)游戏结束后给出评语并计算出玩家所用的时间与所猜次数。
界面要示:
用图形界面实现。
1.2选题目的与意义
通过猜数游戏这个课题我可以学到文本框、标签框、按钮、布局、对话框方面的知识和应用,达到设计登陆界面、加入图像显示功能以及设计按钮的目的,让我更加的掌握和理解java面向对象语言的需求分析、系统设计,所以我选择猜数游戏这个课题。
2、需求分析
2.1用户需求分析
1.玩家输入一个数字,数字的范围在1-100之间,系统获取随机数。
2.对玩家输入的数字进行判断大小,如果不是系统要求的数字,系统将提示您,您输入的不是数字请重新输入,给出提醒以便玩家进一步选择。
3.玩家猜中时系统给出所用时间和游戏水平的判断,系统给出是否继续的提示及判断。
4.系统根据您猜数字的次数,自动计数.
5.直到用户猜到数字为止,提示信息是否继续猜数字,如果继续将进入下一次游戏,如果退出将退出游戏系统.
2.2开发环境分析
Eclipse企业级工作平台(EclipseEnterpriseWorkbench,简称Eclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。
它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSF,CSS,Javascript,SQL,Hibernate。
在结构上,Eclipse的特征可以被分为7类:
1.JavaEE模型
2.WEB开发工具
3.EJB开发工具
4.应用程序服务器的连接器
5.JavaEE项目部署服务
6.数据库服务
7.Eclipse整合帮助
对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。
Eclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。
简单而言,Eclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错。
该程序基于JDK和Eclipse编写,选用Eclipse是界面设计所需。
根据系统范围随机产生一个数字,可根据玩家选择给出不同的数字。
玩家输入所猜数字时给出与真实数字的大小比较。
在玩家猜中时,可给出其所用时间,并给出评价。
最后,游戏的结束与继续可由玩家控制。
3、系统设计
3.1系统总体设计:
3.1.1总体设计分析
1.随机数的获取:
玩家输入一个数字,数字的范围在1-100之间,系统获取随机数。
2.输入输出模块:
对玩家输入的数字进行判断和提示。
如果玩家输入的不是系统要求的数字,系统将提示您,您输入的不是数字请重新输入.。
如果玩家输入的数字与随机生成数相比较,比随机生成数小.系统提示您,数字太小请您重新输入。
如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示您,数字太大请您重新输入。
3.判断模块:
算出所用时间在玩家猜中时给出其所用时间,系统给出对其水平的判断和是否继续的提示;对玩家要求判断执行。
4.自动计数模块:
系统根据您猜数字的次数,自动计数.
5.结果输出模块:
直到用户猜到数字为止,提示信息是否继续猜数字,如果继续将进入下一次游戏,如果退出将退出游戏系统.
3.1.2程序结构
点击“获取随机数”按钮,系统获取到一个随机数。
玩家输入一个数,如果玩家输入的数比系统给出的随机数小,系统会提示“您猜的太小了,请继续猜!
”。
如果玩家输入的数比系统给出的随机数大,系统提示“您猜的太大了,请继续猜!
”。
如果玩家猜对了数,但是所用时间大于十秒,系统会提示“这么久才猜出来,有点笨!
”,并且会计算出玩家所用的时间和所猜的次数。
如果玩家猜对了数,而且所用时间小于十秒,系统会提示“恭喜您,猜对了!
您真棒,智商真高!
”,并且会计算出玩家所用的时间和所猜的次数。
图1程序结构图
3.2功能模块设计
3.2.1功能模块图
游戏分为随机数的获取,输入输出模块,判断模块,自动计数模块,结果输出模块。
其中输入输出模块中系统会对玩家给出的数进行判断和输出。
判断模块会对玩家的水平进行判断,并计算出玩家所用的时间和次数。
图2功能模块图
3.2.2功能模块详细设计
(1)随机数的获取
功能描述:
玩家输入一个数字,数字的范围在1-100之间,系统获取随机数。
(2)输入输出模块
功能描述:
对玩家输入的数字进行判断和提示。
如果玩家输入的不是系统要求的数字,系统将提示您,您输入的不是数字请重新输入.。
如果玩家输入的数字与随机生成数相比较,比随机生成数小.系统提示您,数字太小请您重新输入。
如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示您,数字太大请您重新输入。
图3输入输出模块图
(3)判断模块
功能描述:
算出所用时间在玩家猜中时给出其所用时间,系统给出对其水平的判断和是否继续的提示;对玩家要求判断执行。
图4判断模块图
(4)自动计数模块
功能描述:
系统根据您猜数字的次数,自动计数.
图5自动计数模块图
(5)结果输出模块
功能描述:
直到用户猜到数字为止,提示信息是否继续猜数字,如果继续将进入下一次游戏,如果退出将退出游戏系统.
3.3类的设计:
表1类的分类
类名
属性
Math.random
数学中的随机数。
BorderLayout
图形界面窗口的设计与调整
Concurrent
concurrent在并发编程中很常用的实用工具类。
从用户的角度看,Java源程序中的类分为两种:
系统定义的类:
即Java类库,它是系统定义好的类。
Java语言由语法规则和类库两部分组成,语法规则确定Java程序的书写规范;类库则提供了Java程序与运行它的系统软件(Java虚拟机)之间的接口。
用户自定义类:
系统定义的类虽然实现了许多常见的功能,但是用户程序仍然需要针对特定问题的特定逻辑来定义自己的类。
在Java程序中,用户自定义类的一般格式如下:
class类名
数据成员
成员方法
类的结构是由类说明和类体两部分组成的。
类的说明部分由关键字class与类名组成,类名的命名遵循Java标识符的定义规则。
类体是类声明中花括号所包括的全部内容,它又是由数据成员(属性)和成员方法(方法)两部分组成。
数据成员描述对象的属性;成员方法则刻画对象的行为或动作,每一个成员方法确定一个功能或操作。
首先搭建Java程序框架。
打开Eclipse,新建名为GuessNumberGame的项目,然后新建名为GuessNumber的Java类。
GuessNumber加上合适的javadoc。
第一步:
随机数的产生
我们可以借助JavaAPI提供的Random类来产生一个随机数。
首先在main函数中加入以下三行代码:
//新建一个随机数产生器,然后生成一个1到100之间的整数。
num=(int)(Math.random()*100);
Stringanswer;
Scannerinput=newScanner(System.in);
第二步:
标准输入输出
标准输入输出(StandardI/O)是指可以被应用程序使用的信息流。
应用程序可以从标准输入(Standardinput)读取数据,向标准输出(Standardoutput)写数据,把出错信息发送到标准错误(Standarderror)。
通过输入输出,应用程序和应用程序之间可以被串联起来使用。
虽然标准输入输出是从UNIX发展出来的概念,在Windows中也广泛应用。
猜数字游戏主要用到标准输入,更明确一些,就是控制台输入。
相反,要从控制台输入,就需要用到System.in。
它是一个纯粹的输入流,而猜数字游戏主要是通过控制台获取玩家的字符输入,我们需要把它包装成一个BufferedReader。
第三步:
使用BorderLayout对图形界面的窗口进行设计。
4、程序实现
4.1程序流程图
点击“获取随机数”按钮,系统获取到一个随机数。
玩家输入一个数,如果玩家输入的数比系统给出的随机数小,系统会提示“您猜的太小了,请继续猜!
”。
如果玩家输入的数比系统给出的随机数大,系统提示“您猜的太大了,请继续猜!
”。
如果玩家猜对了数,但是所用时间大于十秒,系统会提示“这么久才猜出来,有点笨!
”,并且会计算出玩家所用的时间和所猜的次数。
如果玩家猜对了数,而且所用时间小于十秒,系统会提示“恭喜您,猜对了!
您真棒,智商真高!
”,并且会计算出玩家所用的时间和所猜的次数。
图6程序流程图
4.2关键算法与技术实现
4.2.1随机数的获取
num=(int)(Math.random()*100);
Stringanswer;
Scannerinput=newScanner(System.in);
4.2.2输入输出
for(i=1;i<=10;i++)
{
if(num2 lbshow.setText("您猜的太小了,请继续猜! "); continue; } elseif(num2>num){ lbshow.setText("您猜的太大了,请继续猜! "); continue; } longendTime=System.currentTimeMillis(); longt; t=(endTime-startTime)/1000; strshow="您总共猜了"+counter+"次,您猜数字总共花了"+(endTime-startTime)/1000+"秒"; if(t<10) lbshow.setText("恭喜您,猜对了! 您真棒,智商真高! "+strshow); elseif(t>10) lbshow.setText("这么久才猜出来,有点笨! "+strshow); } } 4.2.3判断时间 startTime=System.currentTimeMillis(); longendTime=System.currentTimeMillis(); strshow="您猜数字总共花了"+(endTime-startTime)/1000+"秒"; 4.2.4自动计数 intgeust=0; counter++; strshow="您总共猜了"+counter+"次; 4.2.5结果输出 longt; t=(endTime-startTime)/1000; strshow="您总共猜了"+counter+"次,您猜数字总共花了"+(endTime-startTime)/1000+"秒"; if(t<10) lbshow.setText("恭喜您,猜对了! 您真棒,智商真高! "+strshow); elseif(t>10) lbshow.setText("这么久才猜出来,有点笨! "+strshow); 4.2.6图形界面的实现 BorderLayoutbdmg=newBorderLayout(); Buttonbutton1=newButton("获取随机数"); Buttonbutton2=newButton("确定"); Stringstr=null; Stringstr2=null; longstartTime; intnum,num2; intcounter=0; myGeustNummy1=newmyGeustNum(); TextFieldinput; Labellbshow=newLabel(""); Labellbshow2=newLabel(""); inti; Stringstrshow; publicvoidinit() { setLayout(bdmg); add(button1,BorderLayout.NORTH); button1.addActionListener(this); button1.setSize(50,50); Labellb1=newLabel("请输入"); lb1.setSize(50,20); this.add(lb1,BorderLayout.WEST); input=newTextField(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程序框架。 打开Eclipse,新建名为GuessNumberGame的项目,然后新建名为GuessNumber的Java类。 GuessNumber加上合适的javadoc。 第一步: 随机数的产生 我们可以借助JavaAPI提供的Random类来产生一个随机数。 首先在main函数中加入以下三行代码: //新建一个随机数产生器,然后生成一个1到100之间的整数。 num=(int)(Math.random()*100); Stringanswer; Scannerinput=newScanner(System.in); Eclipse立即在错误语句处划出红线,把鼠标移动到红线上。 包(Package)的概念 JavaAPI中包含了极其丰富、类似于Random这样由Sun预先定义好的类。 不同包中可以有同名同姓的类,如果没有包的概念,就会遇到命名冲突问题。 此外,包还能进行安全控制。 Random类是在java.util这个包中。 可以手动在源程序顶部输入importjava.util.Random;语句来申明该程序将要使用java.util包中的Random类,然而有了Eclipse,就不用那么麻烦了—把光标移动到有红色波浪线的Random上,然后按下Ctrl+Shift+M,Eclipse会自动帮你完成导入的工作了,此时保存一下源代码。 第二句语句定义一个整型变量number来保存随机产生的整数,并且用直接初始化的方法把random产生的随机数赋给number变量。 第二步: 标准输入输出 标准输入输出(StandardI/O)是指可以被应用程序使用的信息流。 应用程序可以从标准输入(Standardinput)读取数据,向标准输出(Standardoutput)写数据,把出错信息发送到标准错误(Standarderror)。 通过输入输出,应用程序和应用程序之间可以被串联起来使用。 虽然标准输入输出是从UNIX发展出来的概念,在Windows中也广泛应用。 猜数字游戏主要用到标准输入,更明确一些,就是控制台输入。 相反,要从控制台输入,就需要用到System.in。 它是一个纯粹的输入流,而猜数字游戏主要是通过控制台获取玩家的字符输入,我们需要把它包装成一个BufferedReader。 第三步: 使用BorderLayout对图形界面的窗口进行设计。 5、源程序: Packagea; importjava.awt.Color; importjava.awt.Container; importjava.awt.FlowLayout; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjavax.swing.Box; importjavax.swing.JButton; importjavax.swing.JFrame; importjavax.swing.JLabel; importjavax.swing.JOptionPane; importjavax.swing.JTextField; classWindowButtonextendsJFrameimplementsActionListener{/*** */ privatestaticfinallongserialVersionUID=1L; intnumber; JTextFieldinputNumber; JLabelfeedBack; JButtonbuttonGetNumber,buttonEnter; WindowButton(Strings){super("猜数字小游戏"); buttonGetNumber=newJButton("得到一个随机数"); feedBack=newJLabel("无反馈信息",JLabel.CENTER); feedBack.setBackground(Color.green); inputNumber=newJTextField("0",5); buttonEnter=newJButton("确定"); buttonEnter.addActionListener(this); buttonGetNumber.addActionListener(this); buttonGetNumber.addActionListener(this); BoxboxH1=Box.createHorizontalBox(); boxH1.add(newJLabel("获取1-100之间的随机数: ")); boxH1.add(buttonGetNumber); BoxboxH2=Box.createHorizontalBox(); boxH2.add(newJLabel("输入您的猜测: ")); boxH2.add(inputNumber); BoxboxH3=Box.createHorizontalBox(); boxH3.add(newJLabel("单击确定按钮: ")); boxH3.add(buttonEnter); BoxboxH4=Box.createHorizontalBox(); boxH4.add(newJLabel("反馈信息: ")); boxH4.add(feedBack); BoxbaseBox=Box.createVerticalBox(); baseBox.add(boxH1); baseBox.add(boxH2); baseBox.add(boxH3); baseBox.add(boxH4); Containercon=getContentPane(); con.setLayout(newFlowLayout()); 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();} publicvoidactionPerformed(ActionEvente){ if(e.getSource()==buttonGetNumber){ number=(int)(Math.random()*100)+1;} elseif(e.getSource()==buttonEnter){ intguess=0; try{ guess=Integer.parseInt(inputNumber.getText()); if(guess==number){ JOptionPane.showMessageDialog(this,"猜对了");} elseif(guess>number){ JOptionPane.showMessageDialog(this,"猜大了"); inputNumber.setText(null);} elseif(guess JOptionPane.showMessageDialog(this,"猜小了"); inputNumber.setText(null);}} catch(NumberFormatExceptionevent){ JOptionPane.showMessageDialog(this,"请输入数字字符");}} }} publicclass猜数字游戏{ publicstaticvoidmain(Stringargs[]){ newWindowButton("猜数字小游戏");} } packageb; importjava.util.Date; importj
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 数字 游戏