当前位置:文档之家› Java课程设计 1-100以内猜数游戏

Java课程设计 1-100以内猜数游戏

计算机与通信学院软件学院课程设计说明书1-100以内猜数游戏*者:***学号:********专业:软件技术班级: 11级软件2班指导教师:***答辩时间: 2012/6/21-100以内猜数游戏刘正翔11700215摘要本设计将一个1-100以内的猜数字游戏作为研究对象。

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

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

关键字:数字游戏 java代码目录摘要 (3)一、设计任务与要求 (1)1.1课程设计的任务 (1)1.2课程设计的要求 (1)二、需求分析 (1)2.1 用户需求分析 (1)三、设计思路 (2)3.1 系统总体设计 (2)3.2 功能模块设计 (3)四、详细设计 (5)4.1 程序流程图 (5)4.2 关键算法与技术实现 (7)4.3 类与数据结构实现 (16)五、运行调试与分析讨论 (17)5.1 系统测试方案 (17)5.2 运行结果分析 (18)六、设计体会与小结 (22)致谢 (24)七、参考文献 (25)一、设计任务与要求1.1课程设计的任务根据所选题目,完成课程设计的分析、设计和编码,写出课程设计报告。

(1)掌握Java的语言规范,面向对象的核心概念和特性;(2)掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;(3)掌握Java应用软件的开发环境和开发过程;(4)掌握面向对象的思想和程序设计方法。

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

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

二、需求分析2.1 用户需求分析设计一个猜数字游戏程序,要求具体如下特性:(1)趣味性:要求游戏内容丰富多彩,语言风趣幽默。

(2)大众性:要求游戏界面操作简单,游戏规则简单易懂。

(3)合理性:游戏设计严谨,有条理,具体需求如下①输入任意一个数字。

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

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

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

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

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

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

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

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

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

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

三、设计思路3.1 系统总体设计猜数字游戏—游戏随机给出一个1—100 (包括1和100) 之间的数字,然后让你猜是什么数字。

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

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

(如图1)图1系统设计结构图游戏界面:采用图形界面显示。

页面有如下功能:开始,结束,重来。

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

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

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

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

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

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

3.2 功能模块设计(如图2)图2 功能模块图3.2.1 功能模块详细设计1、随机数的获取功能描述:玩家输入一个数字,数字的范围在1-100之间,系统获取随机数。

2 、输入输出模块功能描述:对玩家输入的数字进行判断和提示。

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

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

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

(如图3)图3 输入输出模块图3 、判断模块功能描述:算出所用时间在玩家猜中时给出其所用时间,系统给出对其水平的判断和是否继续的提示;对玩家要求判断执行。

(如图4)图4 判断模块图4、自动计数模块功能描述:系统根据您猜数字的次数,自动计数. (如图5)图5 自动计数模块图5、结果输出模块功能描述:直到用户猜到数字为止,提示信息是否重新猜数字,如果重新开始将进入下一次游戏,如果关闭将退出游戏系统。

四、详细设计4.1 程序流程图(如图6)图6程序流程图4.2 关键算法与技术实现4.2.1源程序/* 程序运行时自动产生1-100的随机数* 接受用户键盘输入数据并给出指示信息* 直至猜对,游戏者猜对后,显示猜对次数* 并且供计时功能*/import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.Random;import javax.swing.*;public class GuessNum extends javax.swing.JFrame {{//Set Look & Feeltry { //设置窗口外观为windows外观javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch(Exception e) {e.printStackTrace();}}private JLabel jLabel1;private JTextField jTextField1;private JButton jButton1;private JButton jButton2;private int number=0;private int counter=0;long startTime = System.currentTimeMillis();long endTime;/*** Auto-generated main method to display this JFrame*/public static void main(String[] args) {GuessNum inst = new GuessNum();}/***新建一个随机数产生器,然后生成一个1到100之间的整数*/public GuessNum() {super();initGUI();Random random = new Random();number = random.nextInt(100); //产生一个1-100间的随机数}/***初始化窗口组件*/private void initGUI() {try {setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);//窗口关闭时销毁窗口getContentPane().setLayout(null);//设置窗口布局为绝对布局{jLabel1 = new JLabel();getContentPane().add(jLabel1);jLabel1.setText("<html>欢迎进入有趣的猜数字游戏;<br><br><br>"+" 1到100之间的整数,你猜是什么?快来猜猜看(^.^)<br><br><br>"+"请输入你想猜的数:</html>");jLabel1.setBounds(45, 0, 420, 150);//设置标签位置}{jTextField1 = new JTextField();getContentPane().add(jTextField1);jTextField1.setBounds(42, 168, 112, 28);//输入窗口大小jTextField1.addKeyListener(new KeyAdapter(){//文本框添加键盘按键监听-监听回车键public void keyPressed(KeyEvent evt) {jTextField1KeyPressed(evt);}});}{jButton1 = new JButton();jButton1.setText("确定");jButton1.setBounds(182, 168, 77, 28);//确定按钮jButton1.addActionListener(new ActionListener(){//按钮添加监听public void actionPerformed(ActionEvent evt) {jButton1ActionPerformed(evt);//按钮被点击时执行该方法}});}{jButton2 = new JButton();getContentPane().add(jButton2);jButton2.setText("重新开始");jButton2.setBounds(280, 168, 91, 28);//设置重新开始按钮jButton2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {jButton2ActionPerformed(evt);}});}pack();this.setSize(450, 280);// 设置窗口大小setLocationRelativeTo(null);// 设置窗口在显示器居中显示} catch (Exception e) {e.printStackTrace();}}/*** “确定”按钮事件监听* @param evt*/private void jButton1ActionPerformed(ActionEvent evt) {int guess=0; // 记录玩家所猜测的数字counter++; // 计数器增加一// try,catch的异常管理。

相关主题