JAVA猜数游戏

玛丽莲梦兔
724次浏览
2021年01月01日 03:02
最佳经验
本文由作者推荐

爱情誓言-薄荷日记

2021年1月1日发(作者:陈昌浩)


一、设计任务与要求
1.1 设计任务与要求
通过本课程设计实践,达到以下目的:
(1)培养学生严谨务实的工作态度,并在老师的指导 下,提高分析问题和解
决问题的能力,促进理论联系实际学风养成。
(2)巩固和加深对面向对象程序设计的基本概念、基本理论和实现技术的理
解。
(3)掌握Java开发的主要环境与工具,掌握面向对象的常用控件的使用方
法。
(4)初步掌握面向对象系统分析与设计的基本方法和步骤,并能针对简单的
实际应用问题进行初步地分 析和设计。
(5)掌握Java编程语言,并针对具体应用问题进行编程实现。
(6)通过撰写课程设计论文,锻炼学生科技论文写作能力。

具体任务如下:
设计一个猜数字游戏,使该游戏实现比较数字大小等功能,并给予用户游戏
的喜悦感。
具体的游戏规则如下:
1). 输入一个数字,数字的范围再0-99之间,系统随机生成数也在此范围
内.
2).如果玩家 输入的不是系统要求的数字,系统将报错,并继续提示用户:
请输入在0~99之间的数字.
3).如果玩家输入的数字与随机生成数相比较,比随机生成数小.系统提示
您:您输入的数字偏小,请 您重新输入.
4). 如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示
您:你输入的数字偏大,请您重新输入.
5).系统根据您猜数字的次数,自动计数,并在用户完成游 戏时显示该次游
戏的猜数次数和游戏评语.
6).除了猜数过程,用户可以在想退出的情况下 之间输入退出口令,或者显
示答案口令来完成该次游戏,亦可查询以往的游戏记录并清除游戏记录。


1.2 选题目的与意义

Java语言作为当今 INTERNET上最流行的编程语言,它的产生自然与游戏
密切相关. 本课程设计是为了配合Jav a程序设计课程,帮助学生深入学习掌握
Java语言,熟练运用这个工具而设立的课程。通过课程设计 各个项目的综合训练,
加强学生对JAVA语言的理解,检验学生对专业理论知识理解与掌握的程度,锻
炼学生综合运用JAVA程序设计处理所学的知识实际分析问题、解决问题的能力。
通过对猜 数游戏程序设计的学习,使学生掌握网络编程的基本方法,能够根
据现实生活实践编制出一些实用的小程 序.为进一步学习网站信息的建设打下基
础.
此学习过程中,一方面巩固了学生的JAVA程 序设计的应用,加深对JAVA
语言的掌握及对面向对象程序设计基本思想的理解,提高对面向对象技术 的具体
应用;另一方面,猜数游戏可以通过JAVA设计展现其娱乐性,游戏简单易懂,
容易操 作上手。

二、需求分析
2.1 用户需求分析
游戏随机自动生成一个随机数random number即0~99(包括0和99)的整
数 字,然后让用户猜是什么数字。用户可以随便猜一个数字,游戏会提示太大
还是太小,从而缩小猜数范围 。经过几次猜测与提示后,直至猜到,给出所用
猜数次数和评语最终退出游戏。在游戏过程中。记录用户 最终猜对时所需要的
次数。游戏结束后公布结果。
具体要求:通过菜单栏里提供的选项,进入 游戏界面。系统提示猜数字游戏
的运行情况,一般情况下为正常,随即游戏者可以输入自己的猜数结果, 可以通
过按回车键完成输入。每次完成一次游戏时,给出猜测的次数的统计。按其他选
项还可以 选择退出游戏,查询答案,查询游戏记录,清除游戏记录。
游戏中要求完成一下内容:
1)要求记录产生的随机数并计算用户猜数次数、并完成提示玩家游戏信息
等功能;
2)要求在玩家输入不是数字或输入范围不符合时会提示错误信息;
3)要求能判断程序随机生成数字与用户猜的数字的大小,玩家猜的数字偏

1


大于随机生成数就提示“您猜的数字偏大,请重新输入”或玩家猜的数字偏小于
随机 生成数就提示“您猜的数字偏小,请重新输入”;
4)要求在玩家猜对的时候,提示信息“猜对啦!”,并统计玩家猜数次数,
反馈给玩家;
5)要求在玩家发出“enter”口令时能进入游戏;
6)要求在玩家发出“answer”口令时能显示该次游戏的答案;
7)要求在玩家发出“record”口令时能显示以往游戏中的最好成绩;
8)要求在玩家发出“clear”口令时能清除以往的游戏记录,并显示记录已
被清除;
9)要求在玩家发出“exit”口令时能退出游戏。

2.2 开发环境分析
本软件的组成程序为JAVA程序设计语言,组够均较简单,直观意义上的较
独立。因 此,给予电子化的所构成的硬件的简单的可维护性的特点,决定该软件
的简单可维护性。
在装载程序时,正常就运行,异常就停止;JAVA编程系统出现错误,将会
产生不可预见的问题,热启 ,整个终端程序就会再次启动;程序出现错误,重新
装载。若依然有错,按照提示逐渐装载。
程序开发中会使用到MyEclipse软件,它是一个十分优秀的用于开发Java,
J2 EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其
是对各种 开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse
Enterprise Workbench ,简称MyEclipse)是对Eclipse ID E的扩展,利用它我们
可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大 的
提高工作效率。它是功能丰富的JavaEE集集成开发环境,包括了完备的编码、
调试、测 试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL,
Hibernate。
表2.2.1游戏运行环境分析表:
操作系统
内存容量
外用设备
CPU
光驱
磁盘空间
开发软件
中央处理器

2
Windowsxp2003
1G
鼠标 键盘
奔腾133
4倍速
250G
MyEclipse (8.0 GA)
双核1.6GHZ



三、系统设计
3.1 系统总体设计
本系统总共分为:进入游戏系统、退出游戏系统、记录成绩系统、清除 成绩
系统,和显示答案功能系统。
进入游戏系统包括游戏提示、游戏时间计算、游戏 次数计算、生成随机数、
用户猜数、显示状态、显示记录、清除记录等功能;
开发整 个系统具备了周期时间短、简单易用、休闲益智等几大类显著的特性。
本次系统开发设计出了界面大方简 洁美化的游戏模式。

游戏规则如下:
1). 输入一个数字,数字的范围再0-99之间,系统随机生成数也在此范围
内.
2).如果玩家 输入的不是系统要求的数字,系统将报错,并继续提示用户:
请输入在0~99之间的数字.
3).如果玩家输入的数字与随机生成数相比较,比随机生成数小.系统提示
您:您输入的数字偏小,请 您重新输入.
4). 如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示
您:你输入的数字偏大,请您重新输入.
5).系统根据您猜数字的次数,自动计数,并在用户完成游 戏时显示该次游
戏的猜数次数和游戏评语.
6).除了猜数过程,用户可以在想退出的情况下 之间输入退出口令,或者显
示答案口令来完成该次游戏,亦可查询以往的游戏记录并清除游戏记录。


3.2 功能模块设计
猜数游戏的功能模块包含进入游戏模块,用来初 始游戏,并记录用户猜测的
数据与游戏随机产生的随机数;成绩记录模块用来将用户游戏数据记录在计算 机
中,以便随时调用。答案显示模块用来提供用户正确的答案。记录清空模块用来
将用户之前的 游戏成绩记录删除清空。退出游戏模块可以使用户在后悔进入游戏

3


的情况下,立即结束游戏。

猜数游戏系统功能模块图如下:



猜数游戏







































退






图3.2.1 猜数游戏功能模块图

3.3 类的设计
游戏中,game作为类,负责创建游戏系统的运行,记忆测试系统由该类开
始执行。其中定义int i 为猜数次数,定义n 为用户猜的数字,定义number
为一个随机数math random, 用于产生随机的数字,范围要求在0~99之间;程
序中运用方法,用于记录用户输入的数据,使用if 语句判断数字的大
小,使用while语句循环判断数字大小,并逐个与其后的值相比较,当表达式的< br>值与随机数字值相等时, 即执行其后的语句,若程序中出现错误,则可通过try
catch 语句来跳出错误,继续执行下面的语句。使用n方法输
出语句,给出数字判断或评价。程序中设置了pr intStackTrace()方法来打印异
常信息在程序中出错的位置及原因。

具体的成员方法说明及个别实现语句说明请见下表:





4


表3.3.1 成员方法说明表

方法
():
():
n():
printStackTrace()

表3.3.2 实现语句说明表

finally
try catch
finally中的代码无论出现什么状况都会运行到。即使出现异常。
所以fi nally一般都是处理对资源的释放等操作。
try catch 成对出现的,一个try就一定 要有catch,被try包裹的
代码说明,如果这些代码中只要抛出异常的话,就会停止当前的
代码运行,而跳到catch中,对于异常进行处理。try中没有发生
异常,所以catch中的代 码是执行不到的.
程序中不知道循环的次数,使用我还while语句进行动作的循环
功能
随机产生一个数
输入消息对话框
输出消息对话框
在命令行打印异常信息在程序中出错的
位置及原因。
while


类与成员变量成员方法及语句之间的关系图如下:




















5


+game

成语变量
+i :int
+number :int
+n :int

成员方法
()
()
n()
printStackTrace()

语句
+while
+for
+if else
+finaly
+try...catch
图3.1.1类与成员变量成员方法及语句之间的关系图
用户可通过输入框选择任务,如:开 始游戏,退出游戏,显示答案,成绩记
录,清除记录等。进入游戏后,程序自动生成随机数,并发送请求 用户输入数字,
通过else if语句判断数字与生成数的大小,并弹出对话框,输出信息。之后再< br>重新输入直到猜对,程序可以无限次的输入数字。猜数正确后,会弹出对话框,
输出信息,给出游 戏最新记录,然后自动退出游戏。该游戏记录存档在D盘,以
记录猜数成绩信息,若输入clear,可 清除记录,显示记录空。Answer口令以显
示系统自动生成的随机数。Exit口令以直接退出游戏 。
游戏中,最重要的部分是判断数字大小,该过程中将定义好的n与随机生成
的数字numb er比较,运用到if else语句。猜对后,运用break语句跳转到评
价语句,显示游戏记录。Try catch语句用于输入错误时跳出语句。



6


四、程序实现
4.1程序流程图

开始



Record Answer Clear Exit


显示记录 显示答案 清除记录 直接退出


系统随机产生数字A

重新输入数字 重新输入数字



请求玩家输入数字B




判断数字A

与B的大小





A=B

A>B A


猜对啦,恭喜你!
你猜的数字偏小! 你猜的数字偏



显示猜数次数



结束



图4.1.1系统程序流程图

7


4.2 关键算法与技术实现
4.2.1 游戏菜单设置的具体算法
import edReader;
import
import ption;
import treamReader;
import AccessFile;

public class
{
int i = 0;

void operate()
{
System.
out





System.
out

以上程序段通过定义
戏的菜单。

4.2.2 生成随机数的具体算法
void playGame(
{
int number = (int) (() * 100);
System.
InputStreamReader isr =
BufferedReader br =
String str =


蔡馨颜 开发的猜数字小游戏
输入“enter”进入游戏
输入“exit”退出游 戏
输入“record”最新的游戏记录
输入“answer”显示该次游戏的正确答案
输入“clear”清除记录
变量来记录猜数字的次数,并通过输出语句,来显示游

number)
游戏开始,请猜数,输入
new InputStreamReader(System.
new BufferedReader(isr);
8
game
记录猜数字的次数
.println(欢迎来到


;


.println(请选择上面的选项:
int

int
n(0-100之间的一个数:
in);


int n;
RandomAccessFile raf = null;
try
{
while (br != null && !(
{
str = ne();
n = nt(str);
i++; i记录输入数字的次数}}

以上程序段通过定义变量int来生成随机数,
数字,通过while语句实现退出。

4.2.3 比较数字大小的具体算法
if (a < number) {
n(你猜的数字偏小!
break;
}
else if (a > number) {
n(你猜的数字偏大!
break;

}
else if (a == number) {
n(猜对啦,恭喜你!
n(你输入了

以上程序段通过ifelse语句实现 生成随机数与用户猜数之间的比较,并通过输
出语句显示相关评价。


定义变量int来记录用户的猜测的





9


4.2.4 记录与清除成绩的具体算法
File f = new File(
raf = new RandomAccessFile(f,
(0);
while(()!=
gth(0); 写之前先将文件清空
nt(i); 输入数字的次数写入文件

(0); 定位到文件头
(()-1);定位到文件尾
n(最新的游戏记录:次
打印最新的猜数字记录
………
File f = new File(
RandomAccessFile raf = new RandomAccessFile(f,

if (() > 0) 如果文件中有记录,则输出此数,否则显示“记
录空”的提示
{
int i = t();
n(最新的猜数字记录: 次
}
else
n(无记录
}
else if ((输入“answer”显示该次游戏的正
确答案;
n(该次游戏的正确答案:

10


me(number); 进入游戏
}
else if ((
……

以上程序段将游戏中记录成绩的文件自动存档在D盘里,便于游戏 中用户查
询成绩记录,除了成绩的查询,程序段还具有清除记录的功能。

4.2.5 清空成绩的具体算法
File f = new File(

RandomAccessFile raf =
(0);
gth(0);
nt(i);

(0); 定位到文件头
n(
}

}

} catch (IOException e) {

TODO Auto- generated catch block
tackTrace();
}
以上程序段可以实现将记录在D
件,将其内记录的成绩清除,随后用
被清空的口令告知用户。


RandomAccessFile(f,



打印最新的猜数字记录
D盘的文
n输出语句将记录已

new写之前先将文件清空
输入数字的次数写入文件
记录已被清空
盘里的游戏记录清除的 功能,寻找处于
System.
11


4.2.6 错误跳转的具体算法
try {
if (raf != null)
();
}
catch (IOException e)
{
TODO Auto-generated catch block
tackTrace();
}

以上程序段通过try…catch语句实现错误状态下的跳出动作。
猜数游戏源程序如下:
import edReader;
import
import ption;
import treamReader;
import AccessFile;

public class game
{
int i = 0; 记录猜数字的次数

void operate()
{
n(欢迎来到 蔡馨颜 开发的猜数字小游戏










输入“ent er”进入游戏;
输入“exit”退出游戏;
输入“record”最新的游戏记录;
输入“answer”显示该次游戏的正确答案;
输入“clear”清除记录
n(请选择上 面的选项:

12


);
}

void playGame(int number)
{
int number = (int) (() * 100);
n(游戏开始,请猜数,输入0-100之间的一个数:
InputStreamReader isr = new InputStreamReader();
BufferedReader br = new BufferedReader(isr);
String str =
int n;
RandomAccessFile raf = null;
try
{
while (br != null && !(
str = ne();
n = nt(str);
i++; i记录输入数字的次数
if (n < number) {
n(你猜的数字偏小
break;
}
else if (n > number) {
n(你猜的数字偏大
break;

}
else if (n == number)
{
n(恭喜你,猜对啦!
n(你输入了次

File f = new File(
raf = new RandomAccessFile(f,
(0);
while(()!=
gth(0); 写之前先将文件清空

13


nt(i); 输入数字的次数写入文件

(0); 定位到文件头
(()-1);定位到文件尾
n(最新的游戏记录:次
打印最新的猜数字记录
(0);
}

}

}
catch (IOException e)
{
TODO Auto-generated catch block
tackTrace();
}
Finally
{
try {
if (raf != null)
();
}
catch (IOException e)
{
TODO Auto-generated catch block
tackTrace();
}
}

}

public static void main(String[] args)
{
int number = (int) (() * 100);

game r = new game();
e();
InputStreamReader isr = new InputStreamReader();

14


BufferedReader br = new BufferedReader(isr);
String s =
Try
{
while (s != null)
{
s = ne();
if ((输入“enter”进入游戏;
me(number);
else if ((输入“exit”退出游戏;
(0);
else if ((输入“record”打印最新的猜数字记
录;
{
File f = new File(
RandomAccessFile raf = new RandomAccessFile(f,

if (() > 0) 如果文件中有记录,则输出此数,否则显示“记
录空”的提示
{
int i = t();
n(最新的猜数字记录: 次
}
else
n(无记录
}
else if ((输入“answer”显示该次游戏的正
确答案;
n(该次游戏的正确答案:
me(number); 进入游戏
}
else if ((

15


{
输入“clear”清除记录

File f = new File(
RandomAccessFile raf = new RandomAccessFile(f,
(0);

gth(0); 写之前先将文件清空
nt(i); 输入数字的次数写入文件

(0); 定位到文件头

n(记录已被清空
}

}

}
catch (IOException e) {
TODO Auto- generated catch block
tackTrace();
}
finally {

try {
if (br != null)
();
}
catch (IOException e) {
TODO Auto-generated catch block
tackTrace();
}
}

}

}



打印最新的猜数字记录

16


五、测试运行
5.1 系统测试方案
1.游戏功能测试:运行程序,显示游戏菜单栏。菜单应显示游戏作者 ,进入
游戏,退出游戏,显示游戏记录,清除游戏记录,以及显示答案各选项; 若
无显示则程序错误。

2.查询功能测试:进入游戏菜单栏后,输入
答案;若无显示则程序出错。

3.极限 测试:由于该游戏的数字设置在
数字,则游戏永远提示数字大于答案,
游戏继续运行。

4.记录功能测试:显示游戏菜单栏后,输入
游戏中的最好成绩;若还未进行游戏就 选择输出记录,则显示无记录;若
未显示,则程序出错。

5.清除功能测试:显示游 戏菜单栏后,输入
录的成绩自动清除,并显示记录已被清除;若未显示则程序出错。

6.退出功能测试:显示游戏菜单栏后,输入
否则程序出错。

5.2 运行结果分析


answer口令,应显示该次游戏的
0~99范围内, 如用户输入超过
直至用户的数字在游戏允许范围内,
record口令,程序应该输出以往clear口令,程序应该将文件内记
exit口令,程序应该退出游戏,
17
99的





图5.2.1 游戏初始状态图




图5.2.2 游戏开始状态图






18




图5.2.3 游戏猜数过程图






图5.2.4 查询游戏记录状态图



19



图5.2.5 查询游戏答案状态图



图5.2.6 游戏记录清空状态图



图5.2.7 退出游戏状态图
显示菜单栏,供用户选择将要进行的工作。有四种选择:
answer指令用 于显示该次游戏中的正确答案,
exit指令用于选择直接退出游戏。进入游戏时,
,当输入的 数比随机数大时弹出对话框提示“大
20
record
clear



程序运行时,
指令用于显示游戏成绩记录,
指令用于清除系统记 录的成绩,
计算机产生一个随机数,系统请求用户输入猜的数字,当输入的数比随机数小

时弹出对话框提示“小了”


了”,要求玩家再次输入数字直到输入的 数和随机数一样时退出循环,并弹出成
功对话框,给出评语“恭喜你猜对了”,随即显示该次游戏中用户 猜数字的次数。
结束任务。

六、设计体会
本次课程设计定为任选一题 进行设计。
的课程设计。主要考虑到以前时间少课程内容多,
是很抓实,而对于设计一个猜数游 戏程序,
于我个人的学习情况比较合适,
对JAVA的一些基础知识掌握的更加牢固。
从这次实验中的学到了许多。比如:
没能实现的功能,它竟然能实现了!
前总是模模糊糊的,现 在心里十分清楚了。
平时的学习自身只注意到了书本上面的知识,
嫩,这次的学习让我从纸上 谈兵逐渐的过渡到实践出真知。
编写调试,课本和网上查阅相关资料相关文章,
个过程中,在把 书本上的知识给系统的复习了一下的同时,
太多不足,对JAVA语言整体知识构架不够熟悉,
自己的编程方式也不是太标准,
现。
通过这次课程设计,我明白了编写程序,
解, 同时要求程序设计者有较强的思维和动手能力。
编程思想,不能只关心程序的运行结果,
有严谨 地态度。
还有通过设计过程中大量地查阅网络文章,
解决相关问题。所以网络这个强大的工 具,
很好的帮手。终于可以自己设计程序了,
学的用途真大,想学编程是少不了的。以前感觉, 编程是多么的神秘,现在通过
自己实践,才知道,编程也没那么神秘,但却很有乐趣的。那种看到自己亲 手编
的程序运行出结果的感觉是无法用言语表达的
因此我建议,以后多组织一些这方面的实验,有一个挑战自己的机会。


思考一段时 间后,我决定做猜数游戏
JAVA课程基础内容掌握并不
由于其功能简单设计也相对较易,对< br>也能使自己

try…catch语句就妙不可言。想尽办法

对一些类及方法的运用显得稚
经过了长时间的反复
终于完成了整个课程设计。在这
同时也发现了自己的
不能灵活地运用所学的知识点。
不仅要求对课本知识有较深刻的了
还要熟悉常用的编程技巧和
更要注重程序代码的结构,编程者更要
对一些关键知识点逐个地了解 并
确实是我们学习之中可以借助的一个
以前感觉学的都用不到,现在才知以前


21
并且通过设计这样的一个猜数程序,
除此之个还由许多个方法也得到 了巩固。
经常出现代码写错而调试很久的低级错误情况出






22

排骨藕汤的做法-满招损谦受益


土豆泥的做法大全-有意思的事


铃兰图片-爱情诗


杀鸡儆猴-偶尔的反义词是什么


神舟十一-大学怎么样


二胡几根玄-黄鹤楼送孟浩然之广陵的诗意


寻宝走进临安-公共基础知识真题


全身美白的产品-教案怎么写