1100以内的猜数游戏.docx

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

1100以内的猜数游戏.docx

《1100以内的猜数游戏.docx》由会员分享,可在线阅读,更多相关《1100以内的猜数游戏.docx(28页珍藏版)》请在冰点文库上搜索。

1100以内的猜数游戏.docx

1100以内的猜数游戏

*******************

实践教学

*******************

软件学院

2014年春季学期

Java课程设计说明书

题目:

1-100以内的猜数游戏

专业班级:

姓名:

学号:

指导教师:

成绩:

摘要

本设计将一个1-100以内的猜数字游戏作为研究对象。

设计出一个有系统随机选出一个1-100的数字不显示出来,由玩家猜这个数字,直到猜中为止,并显示出玩家猜中数字所用时间和次数对玩家做出评判,并对所涉及的相关技术进行初步的探讨。

程序运行就进入游戏玩家就可以进行数字猜猜看了。

 

关键字:

数字游戏java代码图形化界面(GUI)编程

序言

这次课程设计内容是猜数游戏,利用java平台进行设计编程。

这次课程设计让我们更深入的了解了java编程,并且能更熟练的编写java程序能力,还提升了我们分析和解决问题的能力,这次程序设计使我们对于java语言的认识更加透彻。

对于这次的猜数游戏课程设计十分有意思,过程也遇到了各种问题,通过查找资料和各种调试,并且能在5天内完成这次课设体现了团队的合作能力。

本猜数游戏的程序是将一个1-100以内的猜数字游戏作为研究对象。

设计出一个有系统随机选出一个1-100的数字不显示出来,由玩家猜这个数字,直到猜中为止,并显示出玩家猜中数字所用时间和次数对玩家做出评判。

操作简单易懂,对于玩家的评判的语言风趣幽默。

虽然按时完成了这次的猜数游戏程序设计,但我们还有许多不足之处,需要进行更多的机会来编写java程序。

1、需求分析

1.1课程设计目的

(1)使学生巩固和提高Java编程技术;

(2)培养学生掌握程序设计的基本思路和方法;

(3)加强学生研发、调试程序的能力;

(4)培养学生分析、解决问题的能力;

(5)提高学生的科技论文写作能力。

1.2课程设计的任务及要求

任务:

图形化界面(GUI)编程,开发一个猜数游戏程序

(1)计算机产生随机数(1-100),不显示

(2)由玩家来测数字猜中即胜

(3)猜不中,提示是大了还是小了,继续猜,直至猜准

(4)给出所用时间和评语

2.设计思路

2.1系统总体设计

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

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

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

图一

游戏界面:

采用图形界面显示。

页面有如下功能:

开始,结束,重来。

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

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

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

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

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

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

2.2功能模块设计

 

图二

2.2.1功能模块详细设计

1、随机数的获取

功能描述:

玩家输入一个数字,数字的范围在1-100之间,系统获取随机数。

2、输入输出模块

功能描述:

对玩家输入的数字进行判断和提示。

如果玩家输入的不是系统要求的数字,系统将提示您,您输入的不是数字请重新输入.。

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

如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示您,数字太大请您重新输入。

图三

3、判断模块

功能描述:

算出所用时间在玩家猜中时给出其所用时间,系统给出对其水平的判断和是否继续的提示;对玩家要求判断执行。

 

4、自动计数模块

功能描述:

系统根据您猜数字的次数,自动计数.

 

5、结果输出模块

功能描述:

直到用户猜到数字为止,提示信息是否重新猜数字,如果重新开始将进入下一次游戏,如果关闭将退出游戏系统。

3、详细设计

3.1程序流程图

 

3.2源程序和关键算法

3.2.1源程序

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

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

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

 * 并且供计时功能 

 */

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.KeyAdapter;

importjava.awt.event.KeyEvent;

importjava.util.Random;

importjavax.swing.*;

publicclassGuessNumextendsjavax.swing.JFrame{

{

//SetLook&Feel

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

javax.swing.UIManager.setLookAndFeel

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

}catch(ClassNotFoundException|InstantiationException|IllegalAccessException|UnsupportedLookAndFeelExceptione){

}

}

privateJLabeljLabel1;

privateJTextFieldjTextField1;

privateJButtonjButton1;

privateJButtonjButton2;

privateintnumber=0;

privateintcounter=0;

longstartTime=System.currentTimeMillis();

longendTime;

/**

*Auto-generatedmainmethodtodisplaythisJFrame

*/

publicstaticvoidmain(String[]args){

GuessNuminst=newGuessNum();

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

}

/**

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

*/

publicGuessNum(){

super();

initGUI();

Randomrandom=newRandom();

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

}

/**

*初始化窗口组件

*/

privatevoidinitGUI(){

try{

setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);//窗口关闭时销毁窗口

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

{

jLabel1=newJLabel();

getContentPane().add(jLabel1);

jLabel1.setText("欢迎进入有趣的猜数字游戏;


"+

"1到100之间的整数,你猜是什么?

快来猜猜看(^.^)


"+

"请输入你想猜的数:

");

jLabel1.setBounds(45,0,420,150);//设置标签位置

}

{

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(){//按钮添加监听

@Override

publicvoidactionPerformed(ActionEventevt){

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

}

});

}

{

jButton2=newJButton();

getContentPane().add(jButton2);

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

jButton2.setBounds(280,168,91,28);//设置重新开始按钮

jButton2.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEventevt){

jButton2ActionPerformed(evt);

}

});

}

pack();

this.setSize(450,280);//设置窗口大小

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,"这么快就猜对了,好厉害哦!

↖(^ω^)↗");

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();//文本框按回车键执行“确定”按钮的事件

}

}

privatevoidsetText(Stringstring){

thrownewUnsupportedOperationException("Notyetimplemented");

}

}

3.2.2关键算法

(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,"这么快就猜对了,好厉害哦!

↖(^ω^)↗");

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时,都打印“这么快就猜对了,好厉害哦!

”字样。

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

”的字样。

(4)计时模块

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

longstartTime=System.currentTimeMillis();

longendTime=System.currentTimeMillis();

(5)异常处理

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

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

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

当异常出现时,一个异常对象将被自动生成并传递给Java“运行时环境”(runtimesystem),说得专业一点,就是抛出一个异常。

异常对象包含了异常类型、程序运行状态等信息。

“运行时环境”得到异常对象后便打断程序的正常流程,自动寻找一个专门处理该异常的代码块来解决问题。

这样的代码块称作异常句柄(ExceptionHandler)。

你可以在异常句柄中尝试修复错误、重试或者报错,或者实在无法进行下去的时候来个自我了断。

如果“运行时环境”找不到异常句柄,Java程序便会自行中断。

一个典型的异常处理如下:

try{

statement(s);

}catch(exceptiontype1name){

statement(s);

}catch(exceptiontype2name){

statement(s);

}finally{

statement(s);

}

其中:

try语句括起来的语句可能抛出异常。

try语句至少要搭配一个catch语句或finally语句,不能单独使用。

catch语句必须和一个try语句配套使用,根据异常类型(exceptiontype)分别处理不同的异常。

也就是说,Java有许多预先定义的异常,你可以通过多个catch语句对它们分门别类地处理。

你还可以自己定义异常类型。

如果try语句块中没有抛出异常,这里自然不会被执行。

finally语句也必须和一个try语句配套使用,与catch语句不同,无论try语句块中是否抛出异常,finally所包括的语句块都会被执行

我设计的猜数字游戏需要从控制台获取玩家输入的数字,有多个异常处理

可以编写如下代码:

{

//SetLook&Feel

try{

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

}catch(Exceptione){

e.printStackTrace();

}

}

//try,catch的异常管理。

try{

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

}catch(Exceptione){

使用异常机制的诸多好处:

使得程序更健壮,界面更友善。

把程序的业务逻辑与错误处理分开,代码更合理,更美观。

异常可以分层次处理,使得代码更简洁。

同类的异常可以归到一类一起处理,处理更方便。

4、运行调试与分析讨论

4.1测试方案

点击运行程序后,显示出图形界面。

系统自动获取到一个随机数。

玩家输入一个数,点击“确定”按钮。

如果玩家输入的数比系统给出的随机数小,系统会提示“您猜的太小了,请继续猜!

”。

如果玩家输入的数比系统给出的随机数大,系统提示“您猜的太大了,请继续猜!

”。

如果玩家猜对了数,但是所用时间大于七次,系统会提示“猜了半天才猜出来,小同志,尚须努力啊!

”,并且会计算出玩家所用的时间和所猜的次数。

如果玩家猜对了数,而且所用时间小于七次,系统会提示“这么快就猜对了,好厉害哦!

”,并且会计算出玩家所用的时间和所猜的次数。

如果玩家想重新再玩一次,点击“重新开始”按钮即可继续玩下一轮游戏。

4.2运行结果分析

开始运行程序时图形界面的显示

 

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

当前位置:首页 > 经管营销 > 经济市场

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

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