JAVA猜数字游戏论文.docx
- 文档编号:2345876
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:21
- 大小:83.03KB
JAVA猜数字游戏论文.docx
《JAVA猜数字游戏论文.docx》由会员分享,可在线阅读,更多相关《JAVA猜数字游戏论文.docx(21页珍藏版)》请在冰点文库上搜索。
JAVA猜数字游戏论文
攀枝花学院
学生课程设计(论文)
题目:
猜数字游戏
学生姓名:
刘鹏
学号:
200810801037
所在院(系):
计算机
专业:
计算机科学与技术
班级:
08计本
(2)班
指导教师:
吴建兵职称:
年月日
攀枝花学院教务处制
题 目
猜数字游戏
1、课程设计的目的
通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。
2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)
编写一个猜数字游戏,要求:
计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。
3、主要参考文献
[1]朱福喜.《Java语言程序设计》(第二版).科学出版社
[2]陈国君等.《Java程序设计基础》(第二版).清华大学出版社
[3]Deitel.《Java大学基础教程》(第六版).电子工业出版社
[4]MaryCampione.《Java语言导学》(第四版).机械工业出版社
[5]Y.DanielLiang.《Java语言程序设计基础篇》(第六版).机械工业出版社
[6]KathySierra.《HeadFirstJava》(第二版).东南大学出版社
4、课程设计工作进度计划
序号
时间(天)
内容安排
备注
1
1
分析设计准备
周一
2
2
编程调试阶段
周二至周三
3
1
编写课程设计报告
周四
4
1
考核
周五
总计
5(天)
指导教师(签字)
日期
年月日
教研室意见:
年月日
学生(签字):
接受任务时间:
年月日
题目名称
猜数字游戏
评分项目
分值
得分
评价内涵
工作
表现
20%
01
学习态度
6
遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。
02
科学实践、调研
7
通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。
03
课题工作量
7
按期圆满完成规定的任务,工作量饱满。
能力
水平
35%
04
综合运用知识的能力
10
能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。
05
应用文献的能力
5
能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。
06
设计(实验)能力,方案的设计能力
5
能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。
07
计算及计算机应用能力
5
具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。
08
对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)
10
具有较强的数据收集、分析、处理、综合的能力。
成果
质量
45%
09
插图(或图纸)质量、篇幅、设计(论文)规范化程度
5
符合本专业相关规范或规定要求;规范化符合本文件第五条要求。
10
设计说明书(论文)质量
30
综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。
11
创新
10
对前人工作有改进或突破,或有独特见解。
成绩
指导教师评语
指导教师签名:
年 月 日
摘要2
1.需求分析3
1.1用户需求分析3
2.2开发环境分析3
2.问题描述4
2.1课程设计的任务:
4
2.2.课程设计的要求:
4
3模块设计5
3.1系统总体设计5
3.2功能模块设计5
4功能设计6
4.1.随机数的产生模块6
4.2.输入判断模块6
4.3.记录猜测次数模块6
4.4.计时模块6
4.5.输入输出模块6
4.6.成绩判断模块7
5.程序流程图9
6.异常处理10
7.调试分析11
总结12
参考文献13
程序附页14
摘要
猜数字是一款非常经典的脑力游戏,游戏规则简单,但是玩起来难度较大,是消磨时间、锻炼脑力的好选择。
通过选择猜数字游戏这个题目,可以让我掌握Java中的包和类,并且可以灵活的使用myeclipse软件。
同时更加深入的了解字符界面的编程过程。
使我更熟练的掌握Java程序框架的搭建和类的创建格式。
在分析阶段,要进行面向对象的需求分析、系统设计、画出相应的需求分析图、系统设计模型图,这些工作更能锻炼我的逻辑思维,更能培养我思考的全面性。
让我学会了多角度思考问题,对我以后的编程奠定了更好的基础。
关键词猜数字游戏,JAVA编程,课程设计
1.需求分析
1.1用户需求分析
设计一个猜数字游戏程序,要求具体如下特性:
a.输入任意一个数字。
数字的要求是1—100的自然数即可。
b.系统对您输入的数字进行判断。
如果玩家输入的数字与计算机随机生成数相比较,输入的数字比随机生成数小.系统将提示您,数字太小请您重新输入。
如果玩家输入的数字与计算机随机生成数相比较,如果输入的数字比随机生成数大。
系统将提示您,数字太大请您重新输入。
如果玩家输入的字符不是合法字符,系统将提示您,您输入的数字不合法,请从新输入。
c.游戏开始时,系统自动记录您猜数字的时间,结束后显示游戏共花费的时间。
d.每猜测一次,系统会记录下来,游戏结束后,显示共猜测多少次。
e.在游戏结束时,可以选择关闭游戏,或者再来一局。
2.2开发环境分析
硬件要求能运行Windows9.X操作系统的微机系统。
JAVA程序设计语言及相应的集成开发环境,J2SDK和eclipse开发工具。
J2SDK简介:
j2sdk是就阿Java的开发环境包。
它包含JDK(开发工具包)和JRE(运行时环境包)。
eclipse简介:
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentTools,JDT)。
2.问题描述
2.1课程设计的任务:
根据所选题目,完成课程设计的分析、设计和编码,写出课程设计报告。
(1)掌握Java的语言规范,面向对象的核心概念和特性;
(2)掌握Java的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;
(3)掌握Java应用软件的开发环境和开发过程;
(4)掌握面向对象的思想和程序设计方法。
2.2.课程设计的要求:
设计一个猜数字游戏程序,该游戏可以由程序随机产生整数,玩游戏者通过由用户输入数字来匹配上面所产生的数字。
用户随机输入数字,当与计算机产生的随机数相符合时,计算机将提醒用户,游戏成功的信息,当有偏差时,将会提醒偏差,如偏大或者是偏小。
3模块设计
3.1系统总体设计
猜数字游戏—游戏随机给出一个1—100(包括1和100)之间的数字,然后让你猜是什么数字。
你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。
经过几次猜测与提示后,最终推出答案。
游戏开始后,由计算机产生一个1-100的随机数,不显示在图形界面,但显示在字符界面。
用户只需输入所猜想的数字,打印在输入框内,按“确定”按钮表示确定,游戏返回提示语句,按照提示语句操作,直至游戏结束。
同时,计算机开始对游戏进行计时和计数功能。
3.2功能模块设计
4功能设计
4.1.随机数的产生模块
我们可以借助JavaAPI提供的Random类来产生一个随机数。
首先在main函数中加入以下代码:
Randomrandom=newRandom();
number=random.nextInt(100);//产生一个1-100间的随机数
4.2输入判断模块
JOptionPane.showMessageDialog(null,"数字不合法,请输入一个1-100之间的整数!
");//显示一个对话框
jTextField1.setText("");//清空文本框内容
jTextField1.requestFocus();//文本框获取输入焦点
4.3.记录猜测次数模块
//记录玩家猜测的次数
counter=0;
//计数器增加一
counter++;
4.4.计时模块
计时模块的代码分别写在游戏的开始和游戏的结束,取得时间差,以毫秒为单位。
longstartTime=System.currentTimeMillis();
longendTime=System.currentTimeMillis();
4.5.输入输出模块
//对玩家的输入进行判断。
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(); 4.6.成绩判断模块 //判断成绩。 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(); } 5.程序流程图 6.异常处理 我们在运行程序时往往会出现许多错误,而Java语言提供了异常(Exception)处理机制帮助程序员发现并处理异常。 所谓异常,就是在程序执行过程中能干扰程序正常流程的事件。 导致异常的原因很多,比如文件找不到、数组越界、除以零等。 当异常出现时,一个异常对象将被自动生成并传递给Java“运行时环境”,如果“运行时环境”找不到异常句柄,Java程序便会自行中断。 try{statement(s); }catch(exceptiontype1name){ statement(s); }catch(exceptiontype2name){ statement(s); }finally{ statement(s); } try语句括起来的语句可能抛出异常。 try语句至少要搭配一个catch语句或finally语句,不能单独使用,我设计的猜数字游戏需要从控制台获取玩家输入的数字,有多个异常处理 try{ setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);getContentPane().setLayout(null); }catch(Exceptione){ e.printStackTrace(); } try{ //获取玩家的输入 guess=Integer.parseInt(jTextField1.getText()); }catch(Exceptione) 7.调试分析 总结 经过这几天努力终于完成了这份课设,虽然在操作的过程中我都遇到了许多的困难,但是却使我得到了许多的意外收获。 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。 在写代码的过程中我们也遇到了一些的困难,就是对一些有关Java语言的不理解,我便又到课本中去查找。 一个项目的成败关键不全在于技术。 要想在一个愉快的氛围里边以轻松的心情来完成紧张的工作,严谨的态度和工作的热情都是必不可少的。 以前上课时有许多的问题并没有真正的认识到,但通过这次试验的制作,使我掌握了许多更重要的知识点。 参考文献 [1]黄明等,梁旭,周绍斌.《Java课程设计》电子工业出版社2006 [2]杨昭.《二级Java语言程序设计教程》中国水利水电出版社2006 [3]赵文靖.《Java程序设计基础与上机指导》清华大学出版社2006 [4]张广彬,孟红蕊,张永宝.《Java课程设计案例精编》清华大学出版社2007 [5]黄晓东.《Java课程设计案例精编(第一版)》中国水利水电出版社2004 [6][美]CayS.Horstmann程峰等译.《JAVA2核心技术》机械工业出版社2003 [7]赵毅主.《跨平台程序设计语言—Java》西安电子科技大学出版社2006 [8]王路群.《Java高级程序设计》中国水利水电出版社2006 [9]夏宽理.《Java语言程序设计》机械工业出版社.2008. [10]丁新民.《Java程序设计教程》人民邮电出版社.2006. 程序附页 packageliupeng; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjava.awt.event.KeyAdapter; importjava.awt.event.KeyEvent; importjava.util.Random; importjavax.swing.JButton; importjavax.swing.JLabel; importjavax.swing.JFrame; importjavax.swing.JOptionPane; importjavax.swing.JTextField; importjavax.swing.WindowConstants; importjava.awt.FlowLayout; publicclassGuessNumextendsjavax.swing.JFrame{ privateJLabeljLabel1; privateJTextFieldjTextField1; privateJButtonjButton1; privateintnumber=0; privateintcounter=0; longstartTime=System.currentTimeMillis(); longendTime; /** *新建一个随机数产生器,然后生成一个1到100之间的整数 */ publicGuessNum(){ super("刘鹏"); initChuankou(); Randomrandom=newRandom(); number=random.nextInt(100);//产生一个1-100间的随机数 } /** *初始化窗口组件 */ privatevoidinitChuankou(){ try{ setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);//窗口关闭时销毁窗口 getContentPane().setLayout(null);//设置窗口布局为绝对布局 JFrameframe=newJFrame("TestButtons"); frame.setLayout(newFlowLayout()); jLabel1=newJLabel(); getContentPane().add(jLabel1); jLabel1.setText("欢迎进入有趣的猜数字游戏! 请输入1~100中的任意一个数: "); jLabel1.setBounds(2,0,200,50);//设置标签位置 jTextField1=newJTextField(); getContentPane().add(jTextField1); jTextField1.setBounds(50,60,112,28); jTextField1.addKeyListener(newKeyAdapter(){//文本框添加键盘按键监听-监听回车键 publicvoidkeyPressed(KeyEventevt){ jTextField1KeyPressed(evt); } }); jButton1=newJButton(); getContentPane().add(jButton1); jButton1.setText("确定"); jButton1.setBounds(70,110,60,28); jButton1.addActionListener(newActionListener(){//按钮添加监听 publicvoidactionPerformed(ActionEventevt){ jButton1ActionPerformed(evt);//按钮被点击时执行该方法 } }); pack(); this.setSize(220,200);//设置窗口大小 setLocationRelativeTo(null);//设置窗口在显示器居中显示 }catch(Exceptione){ e.printStackTrace(); } setVisible(true); } privatevoidjButton1ActionPerformed(ActionEventevt){ intguess=0;//记录玩家所猜测的数字 counter++;//计数器增加一。 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(); } privatevoidjTextField1KeyPressed(KeyEventevt){ //监听文本框回车 if(evt.getKeyCode()==KeyEvent.VK_ENTER){ jButton1.doClick();//文本框按回车键执行“确定”按钮的事件 } } publicstaticvoid
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 数字 游戏 论文