计算机与通信学院软件职业技术学院课程设计说明书1-100以内猜数游戏作者:刘正翔学号:11700215专业:软件技术班级:软件2班指导教师:高玮军答辩时间:1-100以内猜数游戏刘正翔11700215摘要本设计将一个1-100以内的猜数字游戏作为研究对象。设计出一个有系统随机选出一个1-100的数字不显示出来,由玩家猜这个数字,直到猜中为止,并显示出玩家猜中数字所用时间和次数对玩家做出评判,并对所涉及的相关技术进行初步的探讨。程序运行就进入游戏玩家就可以进行数字猜猜看了。关键字:数字游戏java代码目录一、设计任务与要求...............................11.1课程设计的任务.............................11.2课程设计的要求.............................1二、需求分析.....................................12.1用户需求分析..............................1三、设计思路.....................................23.1系统总体设计..............................23.2功能模块设计..............................3四、详细设计.....................................64.1程序流程图................................64.2关键算法与技术实现........................74.3类与数据结构实现.........................16五、运行调试与分析讨论..........................175.1系统测试方案.............................175.2运行结果分析.............................17六、设计体会与小结..............................21致谢...........................................23七、参考文献....................................24兰州理工大学课程设计1一、设计任务与要求1.1课程设计的任务根据所选题目,完成课程设计的分析、设计和编码,写出课程设计报告。(1)掌握Java的语言规范,面向对象的核心概念和特性;(2)掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;(3)掌握Java应用软件的开发环境和开发过程;(4)掌握面向对象的思想和程序设计方法。1.2课程设计的要求设计一个猜数字游戏程序,该游戏可以由程序随机产生整数,玩游戏者通过由用户输入数字来匹配上面所产生的数字。用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息,当有偏差时,将会提醒偏差,如偏大或者是偏小。二、需求分析2.1用户需求分析设计一个猜数字游戏程序,要求具体如下特性:(1)趣味性:要求游戏内容丰富多彩,语言风趣幽默。(2)大众性:要求游戏界面操作简单,游戏规则简单易懂。(3)合理性:游戏设计严谨,有条理,具体需求如下①输入任意一个数字。数字的要求是1—100的自然数即可。②系统对您输入的数字进行判断。如果玩家输入的数字与计算机随机生成数相比较,输入的数字比随机生成数小.系统将提示您,数字太小请您重新输入。兰州理工大学课程设计2如果玩家输入的数字与计算机随机生成数相比较,如果输入的数字比随机生成数大。系统将提示您,数字太大请您重新输入。如果玩家输入的字符不是合法字符,系统将提示您,您输入的数字不合法,请从新输入。③游戏开始时,系统自动记录您猜数字的时间,结束后显示游戏共花费的时间。④每猜测一次,系统会记录下来,游戏结束后,显示共猜测多少次。⑤在游戏开始时,自动显示游戏规则。⑥在游戏结束时,可以选择关闭游戏,或者再来一局。三、设计思路3.1系统总体设计猜数字游戏—游戏随机给出一个1—100(包括1和100)之间的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终推出答案。(如图1)图1系统设计结构图游戏界面:采用图形界面显示。页面有如下功能:开始,结束,重来。游戏界面产生随机数游戏说明重新开始游戏开始关闭游戏记录次数输出字符记录时间兰州理工大学课程设计3游戏开始后,由计算机产生一个1-100的随机数,不显示在图形界面,但显示在字符界面。用户只需输入所猜想的数字,打印在输入框内,按“确定”按钮表示确定,游戏返回提示语句,按照提示语句操作,直至游戏结束。同时,计算机开始对游戏进行计时和计数功能。游戏过程中,如果不想继续玩了,可以直接退出,想重新开局,按“重新开始”按钮即可。想控制界面大小只需拖拽图形界面边框即可。游戏结束后,可以选择“关闭”游戏,或者是“重新开始”。3.2功能模块设计(如图2)图2功能模块图3.2.1功能模块详细设计1、随机数的获取功能描述:玩家输入一个数字,数字的范围在1-100之间,系统获取随机数。猜数游戏随机数的获取输入输出模块系统对玩家给出的数进行判断和输出判断模块时间是否继续的选择水平自动计数模块结果输出模块兰州理工大学课程设计42、输入输出模块功能描述:对玩家输入的数字进行判断和提示。如果玩家输入的不是系统要求的数字,系统将提示您,您输入的不是数字请重新输入.。如果玩家输入的数字与随机生成数相比较,比随机生成数小.系统提示您,数字太小请您重新输入。如果玩家输入的数字与随机生成数相比较,比随机生成数大.系统提示您,数字太大请您重新输入。(如图3)图3输入输出模块图3、判断模块功能描述:算出所用时间在玩家猜中时给出其所用时间,系统给出对其水平的判断和是否继续的提示;对玩家要求判断执行。(如图4)输入输出模块对玩家输入的数字进行判断和提示您输入的不是数字您输入的太小您输入的太大猜对了兰州理工大学课程设计5图4判断模块图4、自动计数模块功能描述:系统根据您猜数字的次数,自动计数.(如图5)图5自动计数模块图5、结果输出模块功能描述:直到用户猜到数字为止,提示信息是否重新猜数字,如果重新开始将进入下一次游戏,如果关闭将退出游戏系统。判断模块时间计算功能系统对玩家的水平做出判断提示玩家重新开始玩家猜数字,若猜错计数器加1兰州理工大学课程设计6四、详细设计4.1程序流程图(如图6)图6程序流程图开始系统开始计时由用户输入一个数yxy输入的大了,再小一点吧输入的小了,再大一点吧YN由计算机产生随机数xx=y系统结束计时系统统计猜数次数结束兰州理工大学课程设计74.2关键算法与技术实现4.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&Feeltry{//设置窗口外观为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兰州理工大学课程设计8*/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(html欢迎进入有趣的猜数字游戏;brbrbr+1到100之间的整数,你猜是什么?快来猜猜看(^.^)brbrbr+请输入你想猜的数:/html);jLabel1.setBounds(45,0,420,150);//设置标签位置}{jTextField1=newJTextField();getContentPane().add(jTextField1);jTextField1.setBounds(42,168,112,28);//输入窗口大小jTextField1.addKeyListener(newKeyAdapter(){//文本框添加键盘按键监听-监听回车键publicvoidkeyPressed(KeyEventevt){jTextField1KeyPressed(evt);}});}{兰州理工大学课程设计9jButton1=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(450,280);//设置窗口大小setLocationRelativeTo(null);//设置窗口在显示器居中显示}catch(Exceptione){e.printS