猜数字小游戏JAVA程序报告.doc

上传人:大张伟 文档编号:5683531 上传时间:2020-07-22 格式:DOC 页数:19 大小:149KB
返回 下载 相关 举报
猜数字小游戏JAVA程序报告.doc_第1页
第1页 / 共19页
猜数字小游戏JAVA程序报告.doc_第2页
第2页 / 共19页
猜数字小游戏JAVA程序报告.doc_第3页
第3页 / 共19页
猜数字小游戏JAVA程序报告.doc_第4页
第4页 / 共19页
猜数字小游戏JAVA程序报告.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《猜数字小游戏JAVA程序报告.doc》由会员分享,可在线阅读,更多相关《猜数字小游戏JAVA程序报告.doc(19页珍藏版)》请在三一文库上搜索。

1、JAVA程序设计报告猜数字小游戏 目录一、 猜数字小游戏简介4二、 用户需求分析4三、 问题描述41 课程设计的任务2 课程设计的要求四、 模块设计51 课程设计的要求2 功能模块设计3 流程图五、 功能设计71 . 随机数的产生模块2 . 输入判断模块 3 . 记录猜测次数模块4 计时模块5 输入输出模块6 成绩判断模块 六、 异常处理9七、 调试分析10八、 不足之处11九、 总结12十、 程序附页13摘 要猜数字是一款非常经典的脑力游戏,游戏规则简单,是消磨时间、锻炼脑力的好选择。通过选择猜数字游戏这个题目,可以让我掌握Java中的包和类,并且可以灵活的使用my eclipse软件。同时

2、更加深入的了解字符界面的编程过程。使我更熟练的掌握Java程序框架的搭建和类的创建格式。在分析阶段,要进行面向对象的需求分析、系统设计、画出相应的需求分析图、系统设计模型图,这些工作更能锻炼我的逻辑思维,更能培养我思考的全面性。让我学会了多角度思考问题,对我以后的编程奠定了更好的基础。一、猜数字小游戏简介系统随机产生任意一个1100的自然数,玩家输入数字,若输入的数字比随机生成数小,系统将提示,数字太小请您重新输入;如果输入的数字比随机生成数大,系统将提示,数字太大请您重新输入;若输入的字符不是合法字符,系统将提示,您输入的数字不合法,请从新输入,游戏开始时,系统自动记录您猜数字的时间和次数,

3、结束后显示游戏共花费的次数和时间及对游戏结果的评价。二、用户需求分析设计一个猜数字游戏程序,要求具体如下特性:a.输入任意一个数字。数字的要求是1100的自然数即可。b.系统对您输入的数字进行判断。如果玩家输入的数字与计算机随机生成数相比较,输入的数字比随机生成数小.系统将提示您,数字太小请您重新输入。如果玩家输入的数字与计算机随机生成数相比较,如果输入的数字比随机生成数大。系统将提示您,数字太大请您重新输入。如果玩家输入的字符不是合法字符,系统将提示您,您输入的数字不合法,请从新输入。c. 游戏开始时,系统自动记录您猜数字的时间,结束后显示游戏共花费的时间。d. 每猜测一次,系统会记录下来,

4、游戏结束后,显示共猜测多少次。e. 在游戏结束时,可以选择关闭游戏,或者再来一局f. 游戏结束前可选择直接显示答案三、问题描述1课程设计的任务:根据所选题目,完成课程设计的分析、设计和编码,写出课程设计报告。(1)掌握Java的语言规范,面向对象的核心概念和特性;(2)掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;(3)掌握Java应用软件的开发环境和开发过程;(4)掌握面向对象的思想和程序设计方法。2课程设计的要求:设计一个猜数字游戏程序,该游戏可以由程序随机产生整数,玩游戏者通过由用户输入数字来匹配上面所产生的数字。用户随机输入数字,当与计算机产生的随机数相符

5、合时,计算机将提醒用户,游戏成功的信息,当有偏差时,将会提醒偏差,如偏大或者是偏小。四、模块设计1 . 系统总体设计开始游戏注册登陆开始界面记录时间次数产生随机数重新开始显示答案2 . 功能模块设计计时模块输出输入模块判断模块模块组成登陆模块3 . 流程图系统开始计时由用户输入一个数guess猜小Y产生随机数number系统结束计时系统统计猜数次数及对成绩的评价结 束开 始G=NGN猜大五、 功能设计1 . 随机数的产生模块我们可以借助Java API提供的Random类来产生一个随机数。首先在main函数中加入以下代码:Random random = new Random(); number

6、 = random.nextInt(100); / 产生一个1-100间的随机数2 . 输入判断模块在游戏界面中输入不合法try guess = Integer.parseInt(jTextField1.getText(); /玩家输入获取 catch (Exception e) JOptionPane.showMessageDialog(null, 请输入一个1-100之间的整数); /显示对话框,输入不合法jTextField1.setText(); /清空文本框内容jTextField1.requestFocus();return; 3 . 记录猜测次数模块/ 记录玩家猜测的次数coun

7、ter = 0;/ 计数器增加一counter;4 . 计时模块计时模块的代码分别写在游戏的开始和游戏的结束,取得时间差,以毫秒为单位。long startTime = System.currentTimeMillis();long endTime = System.currentTimeMillis();5 . 输入输出模块/ 对玩家的输入进行判断。if (guess number) JOptionPane.showMessageDialog(null, o(v)o猜大了); jTextField1.setText(); jTextField1.requestFocus(); return;

8、if (guess number) JOptionPane.showMessageDialog(null, o(v)o太小啦); jTextField1.setText(); jTextField1.requestFocus(); return; if (guess = number) endTime = System.currentTimeMillis(); 6 . 成绩判断模块/ 判断成绩。switch (counter) case 1: JOptionPane.showMessageDialog(null, O(_)O太给力了 吧); break; case 2: case 3: JOp

9、tionPane.showMessageDialog(null,OH MY GOD!好腻害);break;case 4:case 5:case 6:JOptionPane.showMessageDialog(null,O(_)O猜对,很不错哦!);break;case 7: case 8:case 9:case 10:JOptionPane.showMessageDialog(null,(+)有点慢,还要多练习);break; default: JOptionPane.showMessageDialog(null, (+)oh! NO,太慢啦,); break; 六、 异常处理我们在运行程序时

10、往往会出现许多错误,而Java语言提供了异常(Exception)处理机制帮助程序员发现并处理异常。所谓异常,就是在程序执行过程中能干扰程序正常流程的事件。导致异常的原因很多,比如文件找不到、数组越界、除以零等。当异常出现时,一个异常对象将被自动生成并传递给Java“运行时环境”,如果“运行时环境”找不到异常句柄,Java程序便会自行中断。try statement(s); catch (exceptiontype1 name) statement(s); catch (exceptiontype2 name) statement(s); finally statement(s);try语句括

11、起来的语句可能抛出异常。try语句至少要搭配一个catch语句或finally语句,不能单独使用,我设计的猜数字游戏需要从控制台获取玩家输入的数字,有多个异常处理try setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); getContentPane().setLayout(null); catch (Exception e) e.printStackTrace();try / 获取玩家的输入guess = Integer.parseInt(jTextField1.getText(); catch (Exception e)七

12、、调试分析 八、不足之处本小游戏还未建立游戏记录部分,无法记录玩家游戏成绩记录和建立游戏排行榜在界面设计方面还较为简单,游戏还有很多可修改和增加难度的地方总结经过这几天努力终于完成了这份课设,虽然在操作的过程中我都遇到了许多的困难,但是却使我得到了许多的意外收获。Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。在写代码的过程中我们也遇到了一些的困难,就是对一些有关Java语言的不理解,我便又到课本中去查找。一个项目的成败关键不全在于技术。要想在一个愉快的氛围里边以轻松的心情来完成紧张的工作,严谨的态度和工作的热情都是必不可少的

13、。以前上课时有许多的问题并没有真正的认识到,但通过这次试验的制作,使我掌握了许多更重要的知识点。程序附页package JAVA;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;i

14、mport javax.swing.JPasswordField;import javax.swing.JTextField; public class Login extends JFrame ArrayList names = new ArrayList();ArrayList pwd = new ArrayList();private static final long serialVersionUID = 1L;public Login() this.setLocation(100, 100);this.setSize(400, 180);this.setTitle(欢迎进入有趣的猜数

15、字小游戏);loginWindow();setLocationRelativeTo(null); /窗口居中显示this.setVisible(true);public void loginWindow() JLabel name = new JLabel(请输入玩家姓名:);JLabel password = new JLabel(请输入登陆密码:);final JTextField tfName = new JTextField(20);final JPasswordField tfPassword = new JPasswordField(20);JButton ok = new JBu

16、tton(注册);JButton cancel = new JButton(登录);JPanel pm = new JPanel();JPanel p1 = new JPanel();JPanel p2 = new JPanel();JPanel p3 = new JPanel();p1.add(name);p1.add(tfName);p2.add(password);p2.add(tfPassword);ok.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) names.

17、add(tfName.getText();pwd.add(tfPassword.getText();JOptionPane.showMessageDialog(null, 注册成功);tfName.setText();tfPassword.setText(););cancel.addActionListener(new ActionListener() /SuppressWarnings(deprecation)/OverrideSuppressWarnings(deprecation)public void actionPerformed(ActionEvent arg0) / TODO A

18、uto-generated method stubfor (int i = 0; i names.size(); i+) if (names.get(i).equals(tfName.getText() if (pwd.get(i).equals(tfPassword.getText() JOptionPane.showMessageDialog(null, 登陆成功);setVisible(false);/隐藏原界面new GuessNum();/进入主界面else JOptionPane.showMessageDialog(null, 用户名或密码有误););p3.add(ok);p3.a

19、dd(cancel);pm.add(p1);pm.add(p2);pm.add(p3);this.add(pm);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public static void main(String args) new Login();package JAVA;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event

20、.KeyEvent; import java.util.Random; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JTextField; import javax.swing.WindowConstants; import java.awt.FlowLayout; public class GuessNum extends javax.swing.JFrame privat

21、e static final long serialVersionUID = 1L;private JLabel jLabel1; private JTextField jTextField1; private JButton jButton1; private JButton jButton2;private JButton jButton3;private int number = 0; private int counter = 0; long startTime = System.currentTimeMillis(); long endTime; /计算时间public GuessN

22、um() super (猜数字小游戏); initChuangkou(); Random random = new Random(); number = random.nextInt(100); /产生一个1100的随机数 private void initChuangkou() try setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); /窗口关闭时销毁窗口getContentPane().setLayout(null); /设置窗口布局为绝对布局JFrame frame = new JFrame(Test Buttons)

23、; frame.setLayout(new FlowLayout(); jLabel1 = new JLabel(); getContentPane().add(jLabel1); jLabel1.setText(欢迎进入有趣的猜数字游戏 请输入1100中的任 意一个数:); jLabel1.setBounds(75,20, 200, 50);jTextField1 = new JTextField(); getContentPane().add(jTextField1); jTextField1.setBounds(110, 100, 112, 28); jTextField1.addKey

24、Listener(new KeyAdapter() public void keyPressed(KeyEvent evt) jTextField1KeyPressed(evt); );jButton1 = new JButton(); getContentPane().add(jButton1); jButton1.setText(确定); jButton1.setBounds(120, 160, 100, 25); jButton1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent

25、evt) jButton1ActionPerformed(evt); / 按钮被点击时 执行该 方法);jButton2= new JButton();getContentPane().add(jButton2);jButton2.setText(显示答案);jButton2.setBounds(120, 200, 100, 25);jButton2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent evt2) jButton2ActionPerformed(evt2); / 按钮被点击

26、时 执行该 方法);jButton3= new JButton();getContentPane().add(jButton3);jButton3.setText(再来一次);jButton3.setBounds(120,240,100,25);jButton3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent evt3) jButton3ActionPerformed(evt3); / 按钮被点击时 执行该 方法);pack(); this.setSize(340, 400); /窗口

27、大小setLocationRelativeTo(null); /设置窗口在显示器居中显示 catch (Exception e) e.printStackTrace(); setVisible(true); private void jButton2ActionPerformed(ActionEvent evt2) JOptionPane.showMessageDialog(null, 答案是+number); /直接显示答案setVisible(false); /隐藏原界面return;private void jButton3ActionPerformed(ActionEvent evt3

28、)setVisible(false);new GuessNum();private void jButton1ActionPerformed(ActionEvent evt) int guess = 0; counter+; /计数器加一try guess = Integer.parseInt(jTextField1.getText(); /玩家输入获取 catch (Exception e) JOptionPane.showMessageDialog(null, 请输入一个1-100之间 的整数); /显示对话框,输入不合法jTextField1.setText(); /清空文本框内容jTe

29、xtField1.requestFocus();return; if (guess number) JOptionPane.showMessageDialog(null, o(v)o猜大了); jTextField1.setText(); jTextField1.requestFocus(); return;if (guess number) JOptionPane.showMessageDialog(null, o(v)o太小啦); jTextField1.setText(); jTextField1.requestFocus(); return; if (guess = number) e

30、ndTime = System.currentTimeMillis(); JOptionPane.showMessageDialog(null,您总共猜了 + counter + 次 共 花了 + (endTime - startTime) / 1000 + 秒的时间答对正确答案!); /成绩判断switch (counter) case 1: JOptionPane.showMessageDialog(null, O(_)O太给力了 吧); break; case 2: case 3: JOptionPane.showMessageDialog(null,OH MY GOD!好腻害);bre

31、ak;case 4:case 5:case 6:JOptionPane.showMessageDialog(null,O(_)O这么快就猜对,很不错哦!);break;case 7: case 8:case 9:case 10:JOptionPane.showMessageDialog(null,(+)有点慢,还要多练习); break; default: JOptionPane.showMessageDialog(null, (+)oh! NO,太慢啦,); break; jTextField1.setText(); /清空文本框内容jTextField1.requestFocus(); /文本框获取输入焦点setVisible(false); /隐藏原界面 private void jTextField1KeyPressed(KeyEvent evt) if (evt.getKeyCode() = KeyEvent.VK_ENTER) jButton1.doClick(); / 文本框按回车键 执行“确定”按钮的事件 public static void main(String args) System.out.println(欢迎来到猜数字游戏); new GuessNum();

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1