《java程序设计课程设计猜数字游戏设计》.docx

上传人:b****1 文档编号:13842077 上传时间:2023-06-17 格式:DOCX 页数:25 大小:350.43KB
下载 相关 举报
《java程序设计课程设计猜数字游戏设计》.docx_第1页
第1页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第2页
第2页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第3页
第3页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第4页
第4页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第5页
第5页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第6页
第6页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第7页
第7页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第8页
第8页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第9页
第9页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第10页
第10页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第11页
第11页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第12页
第12页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第13页
第13页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第14页
第14页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第15页
第15页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第16页
第16页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第17页
第17页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第18页
第18页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第19页
第19页 / 共25页
《java程序设计课程设计猜数字游戏设计》.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《java程序设计课程设计猜数字游戏设计》.docx

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

《java程序设计课程设计猜数字游戏设计》.docx

《java程序设计课程设计猜数字游戏设计》

 

课程设计报告

课程设计名称Java程序设计

专业计算机科学与技术

班级2班

学号08030212

姓名

指导教师

成绩

 

2011年3月10日

目录根据word生成

一、设计任务与要求

1.1设计任务与要求

程序设计专题的任务与要求:

课程设计的任务:

根据所选题目,完成课程设计的分析、设计和编码,写出课程设计报告。

(1)掌握Java的语言规范,面向对象的核心概念和特性;

(2)掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;

(3)掌握Java应用软件的开发环境和开发过程;

(4)掌握面向对象的思想和程序设计方法。

课程设计的要求:

设计一个猜数字游戏程序,该游戏可以由程序随机产生整数,玩游戏者通过由用户输入数字来匹配上面所产生的数字。

用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息,当有偏差时,将会提醒偏差,如偏大或者是偏小。

1.2选题目的与意义

通过选择猜数字游戏这个题目,可以让我掌握Java中的包和类,并且可以灵活的使用myeclipse软件。

同时更加深入的了解字符界面的编程过程。

使我更熟练的掌握Java程序框架的搭建和类的创建格式。

在分析阶段,要进行面向对象的需求分析、系统设计、画出相应的需求分析图、系统设计模型图,这些工作更能锻炼我的逻辑思维,更能培养我思考的全面性。

让我学会了多角度思考问题,对我以后的编程奠定了更好的基础。

 

二、需求分析

2.1用户需求分析

设计一个猜数字游戏程序,要求具体如下特性:

(1)趣味性:

要求游戏内容丰富多彩,语言风趣幽默。

(2)大众性:

要求游戏界面操作简单,游戏规则简单易懂。

(3)合理性:

游戏设计严谨,有条理,具体需求如下

输入任意一个数字。

数字的要求是1—100的自然数即可。

系统对您输入的数字进行判断。

如果玩家输入的数字与计算机随机生成数相比较,输入的数字将提示您,数字太小请您重新输入。

如果玩家输入的数字与计算机随机生成数相比较,如果输入的数字比随机生成数大。

系统将提示您,数字太大请您重新输入。

如果玩家输入的字符不是合法字符,系统将提示您,您输入的数字不合法,请从新输入。

游戏开始时,系统自动记录您猜数字的时间,结束后显示游戏共花费的时间。

每猜测一次,系统会记录下来,游戏结束后,显示共猜测多少次。

在游戏开始时,自动显示游戏规则。

⑥在游戏结束时,可以选择关闭游戏,或者再来一局。

2.2开发环境分析

硬件要求能运行Windows9.X操作系统的微机系统。

JAVA程序设计语言及相应的集成开发环境,J2SDK和eclipse开发工具。

J2SDK简介:

j2sdk是就阿Java的开发环境包。

它包含JDK(开发工具包)和JRE(运行时环境包)。

JDK包含JRE,JDK是开发人员必装软件,JRE是客户端运行时必装软件,J2SDK就是JDK,J2JRE就是JRE。

Jcreator是开发JAVA的软件。

开发JAVA也可以用记事本开发原程序

eclipse简介:

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。

Eclipse的设计思想是:

一切皆为插件。

它自身的核心是非常小的,其它所有的功能都以插件的形式附加到该核心上。

Eclipse中三个最吸引人的地方:

一是它创新性的图形API,即SWT/JFace,在此之前,我曾经用过Java的AWT/SWING来开发Windows应用程序,AWT/SWING其界面客观地讲不够美观,而且界面响应速度比较慢;而SWT/JFace则大大改善了Java在这方面的能力。

二是它的插件机制。

三是利用它的插件机制开发的众多功能强大的插

 

三、系统设计

3.1系统总体设计

猜数字游戏—游戏随机给出一个1—100(包括1和100)之间的数字,然后让你猜是什么数字。

你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。

经过几次猜测与提示后,最终推出答案。

(系统设计如图3.1)

 

游戏界面:

采用图形界面显示。

页面有如下功能:

开始,结束,重来,帮助。

游戏开始后,由计算机产生一个1-100的随机数,不显示在图形界面,但显示在字符界面。

用户只需输入所猜想的数字,打印在输入框内,按“确定”按钮表示确定,游戏返回提示语句,按照提示语句操作,直至游戏结束。

同时,计算机开始对游戏进行计时和计数功能。

游戏过程中,如果不想继续玩了,可以直接退出,想重新开局,按“重新开始”按钮即可。

想控制界面大小只需拖拽图形界面边框即可。

游戏结束后,可以选择“关闭”游戏,或者是“重新开始”。

3.2功能模块设计

(模块功能设计)

 

 

3.3类的设计

类的定义

类是把具有相同属性的事物划分为一类,从而得出抽象的概念。

在面向对象程序设计中,类是一个独立的程序单位,是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了抽象描述。

类的概念使我们能对属于该类的全部对象进行统一的描述。

在定义对象之前应先定义类。

描述一个类需要指明下述三个方面内容:

类标识:

类的一个有别于其他类的名字。

属性说明:

用来描述相同对象的静态特征。

方法说明:

用来描述相同对象的动态特征。

定义类的格式

class类名

数据成员

成员方法

类的结构是由类说明和类体两部分组成的。

类的说明部分由关键字class与类名组成,类名的命名遵循Java标识符的定义规则。

类体是类声明中花括号所包括的全部内容,它又是由数据成员(属性)和成员方法(方法)两部分组成。

数据成员描述对象的属性;成员方法则刻画对象的行为或动作,每一个成员方法确定一个功能或操作。

类的分类

从用户的角度看,Java源程序中的类分为两种:

系统定义的类:

即Java类库,它是系统定义好的类。

Java语言由语法规则和类库两部分组成,语法规则确定Java程序的书写规范;类库则提供了Java程序与运行它的系统软件(Java虚拟机)之间的接口。

用户自定义类:

系统定义的类虽然实现了许多常见的功能,但是用户程序仍然需要针对特定问题的特定逻辑来定义自己的类。

进行Java程序设计,实际上就是定义类的过程。

一个Java源程序文件往往是由许多个类组成的。

3.3.4类的搭建

首先,搭建Java程序框架。

打开Eclipse,新建名为GuessNumberGame的项目,然后新建名为GuessNumber的Java类。

给GuessNumber加上合适的javadoc。

(1)Random(随机数)

Random(随机数)的功能就是借助JavaAPI提供的Random类来产生一个随机数。

定义一个整型变量number来保存随机产生的整数,并且用直接初始化的方法把random产生的随机数赋给number变量。

Random类是在java.util这个包中。

建立时可以手动在源程序顶部输入importjava.util.Random;语句来申明该程序将要使用java.util包中的Random类。

也可以运用Eclipse,把光标移动到有红色波浪线的Random上,然后按下Ctrl+Shift+M,Eclipse会自动完成导入的工作。

此时保存一下源代码,警告就会消失。

 

四、程序实现

4.1程序流程图()

 

4.2关键算法与技术实现

源程序

/* 程序运行时自动产生1-100的随机数

 * 接受用户键盘输入数据并给出指示信息

 * 直至猜对,游戏者猜对后,显示猜对次数

 * 并且供计时功能 

 */

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.KeyAdapter;

importjava.awt.event.KeyEvent;

importjava.util.Random;

importjavax.swing.JButton;

importjavax.swing.JLabel;

importjavax.swing.JOptionPane;

importjavax.swing.JTextField;

importjavax.swing.WindowConstants;

/**

*@author陈雪莹

*

*有趣的猜数字游戏

*/

publicclassGuessNumberextendsjavax.swing.JFrame{

{

//SetLook&Feel

try{//设置窗口外观为windows外观

javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

}catch(Exceptione){

e.printStackTrace();

}

}

privateJLabeljLabel1;

privateJTextFieldjTextField1;

privateJButtonjButton1;

privateJButtonjButton2;

privateintnumber=0;

privateintcounter=0;

longstartTime=System.currentTimeMillis();

longendTime;

/**

*Auto-generatedmainmethodtodisplaythisJFrame

*/

publicstaticvoidmain(String[]args){

GuessNumberinst=newGuessNumber();

inst.setVisible(true);//显示窗口

}

/**

*新建一个随机数产生器,然后生成一个1到100之间的整数

*/

publicGuessNumber(){

super();

initGUI();

Randomrandom=newRandom();

number=random.nextInt(100);//产生一个1-100间的随机数

}

/**

*初始化窗口组件

*/

privatevoidinitGUI(){

try{

); //窗口关闭时销毁窗口

getContentPane().setLayout(null); //设置窗口布局为绝对布局

{

jLabel1=newJLabel();

getContentPane().add(jLabel1);

jLabel1.setText("欢迎进入有趣的猜数字游戏,游戏规则如下:


"+

"游戏随机产生1-100的整数,玩家通过输入数字来匹配所产生的数字。


"+

"用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息
"+

"当有偏差时,将会提醒偏差,如偏大或者是偏小。

结束后记录游戏时间和猜测次数

"+

"我心里有一个1到100之间的整数,你猜是什么?

");

jLabel1.setBounds(7,0,420,147); //设置标签位置

}

{

jTextField1=newJTextField();

getContentPane().add(jTextField1);

jTextField1.setBounds(42,168,112,28);

jTextField1.addKeyListener(newKeyAdapter(){//文本框添加键盘按键监听-监听回车键

publicvoidkeyPressed(KeyEventevt){

jTextField1KeyPressed(evt);

}

});

}

{

jButton1=newJButton();

getContentPane().add(jButton1);

jButton1.setText("确定");

jButton1.setBounds(182,168,77,28);

jButton1.addActionListener(newActionListener(){ //按钮添加监听

publicvoidactionPerformed(ActionEventevt){

jButton1ActionPerformed(evt); //按钮被点击时执行该方法

}

});

}

{

jButton2=newJButton();

getContentPane().add(jButton2);

jButton2.setText("重新开始");

jButton2.setBounds(280,168,91,28);

jButton2.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEventevt){

jButton2ActionPerformed(evt);

}

});

}

pack();

this.setSize(442,265);//设置窗口大小

setLocationRelativeTo(null);//设置窗口在显示器居中显示

}catch(Exceptione){

e.printStackTrace();

}

}

/**

*“确定”按钮事件监听

*@paramevt

*/

privatevoidjButton1ActionPerformed(ActionEventevt){

intguess=0;//记录玩家所猜测的数字

counter++;//计数器增加一。

//try,catch的异常管理。

try{

//获取玩家的输入

guess=Integer.parseInt(jTextField1.getText());

}catch(Exceptione){

//如果玩家不是输入一个合法的整数,则让他重新输入。

JOptionPane.showMessageDialog(null,"数字不合法,请输入一个1-100之间的整数!

");//显示一个对话框

jTextField1.setText("");//清空文本框内容

jTextField1.requestFocus();//文本框获取输入焦点

return;

}

//对玩家的输入进行判断。

if(guess>number){

JOptionPane.showMessageDialog(null,"输入的大了,再小一点吧!

");

jTextField1.setText("");

jTextField1.requestFocus();

return;

}

if(guess

JOptionPane.showMessageDialog(null,"输入的小了,再大一点吧!

");

jTextField1.setText("");

jTextField1.requestFocus();

return;

}

if(guess==number){

endTime=System.currentTimeMillis();

//判断成绩。

switch(counter){

case1:

JOptionPane.showMessageDialog(null,"你是神么?

这也太给力了吧!

");

break;

case2:

case3:

case4:

case5:

case6:

case7:

JOptionPane.showMessageDialog(null,"这么快就猜对了,你很smart啊!

");

break;

default:

JOptionPane.showMessageDialog(null,"猜了半天才猜出来,小同志,尚须努力啊!

");

break;

}

JOptionPane.showMessageDialog(null,"您总共猜了"+counter+"次共花了"+(endTime-startTime)/1000+"秒的时间答对正确答案!

");

}

jTextField1.setText("");

jTextField1.requestFocus();

}

privatevoidjButton2ActionPerformed(ActionEventevt){//重新开始

Randomrandom=newRandom();//重新生成随机数

number=random.nextInt(100);//产生一个1-100间的随机数

counter=0;//记录玩家猜测的次数

jTextField1.setText("");

startTime=System.currentTimeMillis();

}

privatevoidjTextField1KeyPressed(KeyEventevt){

//监听文本框回车

if(evt.getKeyCode()==KeyEvent.VK_ENTER){

jButton1.doClick();//文本框按回车键执行“确定”按钮的事件

}

}

}

关键算法

(1)记录猜测次数模块

//记录玩家猜测的次数

counter=0;

//计数器增加一

counter++;

首先定义了一个counter变量来记录玩家猜测的次数,并直接初始化为0。

在打印一行游戏提示以后,便开始一个do-while语句。

在do-while语句中,首先用异常处理语句获取玩家的输入,如果玩家输入不合法,提示以后用continue语句从头重新执行循环语句,等待玩家的输入。

从而,guess变量一定包含一个合法的整数。

之后要对玩家的输入进行判断。

如果玩家的猜测太大或者太小,都做出提示。

接着把计数器增加1,表示玩家做过一次猜测。

最后便是do-while语句的判断:

当玩家猜测的数字和随机产生的答案不同,则再次进入循环,否则便结束循环,执行下面的代码。

(用Eclipse的Alt+/快捷键帮助编写do-while语句。

(2)输入输出模块

//获取玩家的输入

guess=Integer.parseInt(jTextField1.getText());

//如果玩家不是输入一个合法的整数,则让他重新输入

JOptionPane.showMessageDialog(null,"数字不合法,请输入一个1-100之间的整数!

");

jTextField1.setText("");

jTextField1.requestFocus();

return;

}

//对玩家的输入进行判断。

if(guess>number){

JOptionPane.showMessageDialog(null,"输入的大了,再小一点吧!

");

jTextField1.setText("");

jTextField1.requestFocus();

return;

}

if(guess

JOptionPane.showMessageDialog(null,"输入的小了,再大一点吧!

");

jTextField1.setText("");

jTextField1.requestFocus();

return;

}

if(guess==number){

endTime=System.currentTimeMillis();

(3)判定成绩模块

//判断成绩。

switch(counter){

case1:

JOptionPane.showMessageDialog(null,"你是神么?

这也太给力了吧!

");

break;

case2:

case3:

case4:

case5:

case6:

case7:

JOptionPane.showMessageDialog(null,"这么快就猜对了,你很smart啊!

");

break;

default:

JOptionPane.showMessageDialog(null,"猜了半天才猜出来,小同志,尚须努力啊!

");

break;

}

JOptionPane.showMessageDialog(null,"您总共猜了"+counter+"次共花了"+(endTime-startTime)/1000+"秒的时间答对正确答案!

");

}

jTextField1.setText("");

jTextField1.requestFocus();

}

switch语句是基于整型表达式的条件判断语句,猜数字用它来进行成绩判断。

可以看出,switch语句是和若干case语句和一个default语句搭配使用的。

代码中的switch语句用counter变量的值进行判断。

当counter的值为1时,便执行case1里面的语句,即打印“你是神么?

这也太给力了吧!

”的字样,随后的break语句表示整个switch语句执行到这里结束了。

当counter的值为2时,便执行case2里面的语句。

可以发现case2到case6都没有break语句,这表示依次执行下面的语句,从而counter的值为2至7时,都打印“这么快就猜对了,你很smart啊!

”字样。

当counter的值不是1至7时,便执行default语句,打印“猜了半天才猜出来,小同志,尚须努力啊!

”的字样。

(4)计时模块

计时模块的代码分别写在游戏的开始和游戏的结束,取得时间差,以毫秒为单位。

longstartTime=System.currentTimeMillis();

longendTime=System.currentTimeMillis();

(5)异常处理

Java语言提供了异常(Exception)处理机制帮助程序员发现并处理异常。

所谓异常,就是在程序执行过程中能干扰程序正常流程的事件。

导致异常的原因很多,比如文件找不到、数组越界、除以零等。

当异常出现时,一个异常对象将被自动生成并传递

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2