ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:84.99KB ,
资源ID:24825500      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24825500.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JAVA火柴小游戏课程设计报告.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JAVA火柴小游戏课程设计报告.docx

1、JAVA火柴小游戏课程设计报告成绩:课程设计报告书所属课程名称JaVa综合实践题 目 取火柴小游戏院係) 信息工程学院班 级 软件工程班学 号 学生 指导教师 2016年12月26日课程设计(论文)任务书学院 信息工程学院 专 业 15软件工程 班 级 _1_、课程设计(论文)题目 取火柴小游戏二、 课程设计(论文)工作:自2016年12月20曰起至2016年12月 31日止。三、 课程设计(论文)的容要求:1本课程设计的目的(】)堂握JQVO语言的程序设计方法;(2) 理论联系实际,进一步提高学生的软件开发技术; (3) 培养学生分析、解决问题的能力; (4)提高学生实践论文撰写能力。2.课

2、程设计的任务及要求 1) 基本要求: (】)熟悉JAVA开发环境,堂握JAVA程序的编译和运行; (2) 堂握JAVA基本编程技术和方法; (3) 堂握GUl图形界面编程技术;(4) 了解异常处理机制。2) 课程设计论文编写要求 (】)理论设计部分以课程设计论文的形式提交,格式必须按照课程设计论文标准 格式进行书写和装订。 (2)课程设计报告(论文)包括目录、设计目的、实现思路、实现步骤、设计心得 参老文献、附录等; 3) 课程设计评分标准: (】)学习态度:】0分;(2)系统设计20分;(3)编程调试20分;(4)回答问题20分;(5)论文撰写30分。4)參考文献: 丁振凡主编.JoVCI语

3、言实用教程M邮电大学20042 丁振凡主编.JOvQ语言实用教程实验指导M.邮电大学.2004.12(3) 5)课程设计进度安排】.准备阶段(4学时):选择设计题目、了解设计目的要求、查阅相关资料2程序模块设计分析阶段(8学时):程序总体设计、详细设计3.代码编写调试阶段(8学时):程序模块代码编写、调试、测试4撰写论文阶段(4学时):总结课程设计任务和设计容,撰写课程设计论文6)课程设计题目具体要求: 编写一个程序使计算机随机产生20-50根火柴,由人与计算机轮流拿,每次麺 数量不超过3根,拿到最后一根为胜。使用图形界面编写,要求界面布局合理, 并旦能够顺利关闭界面,退出程序。学生签名:20

4、16年12月25日章章章章章章章1 2 3 4 5 6 7 ra6-J6-p7 SP系统设计目的 1系统实现思路 2系统详细设计 3系统调试运行 10课程设计心得 13参考文献 13附录 1 4第1章系统设计目的D设计一个简单的取火柴小游戏,可以实现以下功能:1:使计算机随机产生数;2:设计岀人性化的游戏界面;3:给予不同的提示完成游戏;4:能够顺利关闭游戏,退岀游戏。2)通过这次设计,可以帮助学生:1:提高对JClVO语言设计的掌握能力;2:理论联系实际,进一步提高学生的软件开发技术;3:培养学生分析、解决问题的能力。第2章系统实现思路该游戏程序设计的主要容是使用Java中的各种组件与容器互

5、相搭配来 完成的一个小游戏。游戏设计中的主要的知识要点包括jOVO的OWt包中的 颜色类,图形类,图像类,事件监听器类,和Util包中的StQCk类,timer 类,和timertask类的使用方法,以及SWing包中的窗口类,按钮类,标签 类,面板类,复选框类等一些常用组件的用法。通过这些组件来掌握事件监 听器的用法,jovc中栈的用法,以及实现了 RUngbIe类的TimerTaSk类 的用法,通过这个类实现线程技术,还有GraPhiCS类中的主要方法的使用, 学会运用这些方法来来绘制火柴,绘制图片的目的。1:界面设计设責重責按钮的位責,左上角坐标为(250, 10),大小为宽】00,高2

6、0; 设責用户标签的位責,左上角坐标为(400,10),大小为宽200,高20;2:功能设计为“Reset”添加行为事件监听器,采用匿名类的方式。为用户按钮定义 行为事件监听器。3:代码设计编写每个控件的相关代码,并进行调试。第3章系统详细设计1:界面设计创建一个游戏界面,设責用户拿按钮的位責,下拉列表框中的位責,游戏中 火柴的颜色,位責和大小。主要代码:import jv.wt.Color;/ 引入颜色关import java.awt.Compo nent; 引入组件类importjava.awt.Dimension;/?|2封装单个对棣中组件的究度和高度(精确到SJ数)的类im POft

7、java.awt. Gfa PhiCs;/引入自形黄import java.awt.Gfaphics2D;/ 引入二维图形类import java.awt.event.Actio “Event;/ 引入亭件类import java.awt.event.Actio nLfctener; 引入亭件监圻晁类import java.awt.image.Bufferedlmage; 引入缓冲图儉类import java.util.Stack;/引入栈类import java.UtiLTimer;/引入计时品类importjava.util.TimerTask:/?|A75?现 Runnable 按口的类

8、.并具有了线程的功能import javax.swi ngButton;/弓 入按钮类import javax.swi ngCOmbOBox;/ 引入下拉列裘框关import javax.swing.JFrame;/ 引入主框架主宙口类import javax.swi ng.J Label; 引入标签类import javax.swi ngO PtiOnPane;/ 引入选项面极类import javax.swi ng.J PaneI;/ 引入面极类PUbliC CIaSS ho定义一个公共的主类TeStPUbIiC StatiC VOid mai(String OrgH定义主方法 moinn

9、ew ho();洞用TeSt类的构造方法Test()PriVote StatiC final inf MlN-CNT = 20;/定义一个常fit,设置为最小火柴棍黴fit为20PriVOte StatiC final inf MA)CCNT = 50:定义一个洋fit.设置为最大火柴棍鞍fit为50PriVOte StatiC final it MAXAKE = 3;定义一个常fit,设置为最大拿火柴数量为3PriVOte StatiC final inf DELAY = ICe0:/定义一个常fit.设置为延迟时间为 IOCOPriVOte JFrCme mainFrame;/定义主框果变

10、量PriVOte MyPaintPonel paints;/定义我自己画的面极散组变fitPriVote JBUttOn UserBtn;/定义我的按钮属性PriVOte JCOmbOBOX USerNUm;/定义我的下拉列裘PriVOte JButton COmPBtn;/定义电膜按钮属性PriVOte JLabel COmPTXt;/定义电胧标签PriVOte Timer timer; 定义计时 的变fitPriVote ha()/定义一个私有的构造方法,来充成游戏的初始化动作mainFrame = new JFrOme();/实例化一个主宜 IJmainFrame.setResioble

11、(fal5e;/设置宙体大小不可调整 maiFrame.setDefaltCl3eOperation(JFrome.EXIT-ON.CLOSE;/设置默认的关闭揀作为关闭虫口JPanel mainPo nel = new JPanel();/ 例化一个主面极对较mainPanel.setLoyout(null);/设置布局为空.即没有任何布局 mainPanel.setPrefeedSize(newDimension(600. 400);/将组件的首迭大小设置为當量值 mainFrame.odd(mainPanel):/将主面极溢加到框架(SLJ)中JLabel Iabll = new儿Obe

12、l电R:/创连并设置标签按钮的容为电威IablksetHorizontolAlignmEnt(JLObel.CENTER);/设置标签容沿 X 釉的对齐方或Iabl 1 .setBounds(0, IOz 2, 20);设置该标签显示位为坐标(OJO),究 200, Sf 20 mainPanel.add(labll);/将标签加入主面扳JBUtt On btnll = new JBUttO ReSer);/定义一个至新来的按钮btl 1 .oddActioListener(newACtiOnLfctener()为KReSet,添加行为亭件监听第,采用査合类的方丈 PUbliC VOid OC

13、tiOnPerfOfTned(ACtiOnEVer4 e)实现盎听舉中的方法iit():/当单击此按包时.调用该初始化方法);btl l.setBouds(250z 10. IOOz 20):/按钮的位置,左上角坐标为(250, 10),大小为X 100,商20mainPanel.add(btnl 1):/5 签游加到主面坝上JLabel Iabl2 = new儿Obelr用户“);/定义用户标签 lbl2.setHorizo ntolAlignment(JLobeLCENTER);/设置用户水平方 为居中labl2.setBounds(400, 10. 200, 20);/设用户标签的位SL

14、左上角坐标为(4J0) I大小为宽200,高 mainPanel.add(lobl2);/用户标签添加到主面扳上COmPBtn = new JBUtt On (“Computer First*);/定义一个倒筋首先拿的按钮COmPBtn.addActioListener(new Actio nListener() 为电脑开始按钮定义行为亭件监听餵OVerridePUbIiCVOid actioPerformed(ActioEvent e)/行为监听晁中的默认方法(ComPTake();/当羊击电膜按钮时.调用电廉拿方法);COmPBtn.setBounds(IOz 40,180z 20);/设

15、置电脑按钮的位 左上角坐标为(10, 40).大小为宽180,高20mainPanel.add(compBtn);/按钮滋加到主面按上COmPTXt = new JLabeI(): 定义一个空标签COmPTXt.setBouds(10, 70,4, 20);/设置空标签的位置.左上角坐标为(10, 70),大小为宽400,高20mainPanel.add(compTxt);/将空标签加到主面扱上UserBtn = new JBUttOnnOke,); 定义用户拿按钮USerBtn.OddActi On Listener! new ActionListenerI)/ 为用户按钮定义行为亭件监圻

16、SgPUbliC VOid aCtiOnPerfOrmed(ACtiOnEVent e)USerTake);当单击用户拿按钮时.调用用户拿方法);USerBtn.setBonds(400, 40. 90z 20):/设置用B拿按包的位置.左上角的坐标为(4C0.40),大小为宽90, 商20HnainPaneLadd(UserBtn);/用户按钮添加到主面械上serNum = new JCOmbOBOX(); 定义一个下拉列裘框for (inti = O;i MAX-TAKE;汁+)定义一个拿最大的循环serNum.ddltem(i 1);/通过循环给列表框逐个添加选项serNum.setBo

17、unds(495, 40,90. 20);/设置下拉列裘框中的位置,左上角的坐标为(495,40),大小为究90, ft 20mainPanel.add(userNum);/将列表框游加到主面极上POintS = new MyPaintPa nel ;/定义我画的面按for (inti = 0;i 3; i+)/用3次循环来画出三个面极PaintSi = new MyPaintPaneH);/分别创建3个面极.并调用构造方法初始化三个面桩PaintSi.SetBoundsfS 200* L 110, 190z 285);/设置三个面桩的垃置和坐标,闾距为5 mainPael.add(paint

18、s(i);/将三个面极分别添加到主面桩上mainFrame.pack()riS此宝口的大小,以适合其子组件的首选大小和布局.mainFrame.se IVisibIe (true);/设置当前主虫口的可见性init(): 调用初始化方法2:功能设计定义初始化方法,调用重直方法,定义三块初始面板,定义用户拿火柴棒的方法和电脑拿火柴棒的方法,定义一个自定义的面板类并继承了组件类。主要代码:PriVOte VOid init()定义初始化的方法if (timer != null)/如果计时Sg不为空的话就扶行下面的诣句timer.cacel();/快速终止计时晁的任务执行线理timer = ewTi

19、mer();/实例化一个计时黑的对空COmPTXt.5etTextf-jiS置空标签的文本为空COmPBtn.SetEnabIed(true);/设置是否启用电脑按钮组件,即电脑组件可用USerBtn.SetEnobIed(true):设置是否启用用户按钮组件,即用户组件可用PaintSO.reset();/用至置方法.来21新定义第一坎面极PaintS(l.reset();/用至置方法.来里新定义第二块面极paints.3();/调用电置方法.来里新定义筆三块面桩int num = MIN.CNT (int) (MA)CCNT 1 MlN-CNT) Math.random!);/随机产生一个

20、大于20小于50的数for (inti = 0Jrel)n果用户拿火集棍的披fit比面极中的鞍fit大的话,执行下面的诒句JOPti OnPOn e.showMessageDialog(mainFrame, There is Only,* rel, matches?);/用标准对话框类调用显示” There is OnIY machines的对话框return;for (inti = OJtakeCnt;汁+)定义一个将策二块面极中的火柴棍的数童於动到用户面极的循环it index = PaintS1).removed;/将策二个面按要移除的火柴根的数fit给index吏fit PaintS2

21、.odd(index);/m index的值添加到用户拿的面扳上if (takeCnt= rel)/如果用户拿的火柴根的数和第二个相等执行下面的请句JOPtiOnPOne.showMessageDialog(mainFrame, You Ore the Winner.,)7S示 你胜利 的对话框Uiit():/并新初始化else/如果不相等的话,执行下面的诣句,COmPTake();/让电脑按着拿火柴橙PriVate VOid COmPTake()/定义电膜拿的方法COmPBtn.setEbled(flse);/设置电筋按钮的当前状态为不可用USerBtn.SetEnobIed (false)

22、; 设置用户按钮的当前状态为不可用MyTaSk task = new MyTaSk():/$例化一个 MyTOSk 的对空 timer.schedle(task, DELAY);/执行线屋,安摊在指定延迟1秒后执行指定的任务PriVate CIaSS MyTaSk extends TimefTaSk /定义一个進承了实现RUnnabIe接口的类使自己也具有线屋 功能OVerridePUbIiC VOid run()/因为 TimerTaSk 实现了 RUnnObIe 接口,至可父类的 run 方法(it rel = PaintSl.getCnt();/将火柴棍面极中的火柴的给relit Iak

23、eCnt = 0;/设置当前拿火柴棍的数童为0if (rel 0)/如果面扳中的火柴根的数对4取余大于O的话执行下面 的话句takeCnt = rel % (MA)CTAKE 1);/将面扳中的火柴的数对4取余SC给电脑要拿 的火柴的披fitelse 否则面坝中的火柴棍的数对4取余小于或尊于O的话执行下面的诒句takeCnt = 1 (int) (MAX.TAKE * Math.random(H:随机产生一个小于 4 的数.给电 前要拿的数童for (inf i = O; i takeCnt; i+)it index = POintSl.remove();/将火柴面扳中的火柴移涂并販给inde

24、xPaintS(O.add(index);/将移除的火集添加到电筋拿的面桩上COmPTXt.setText(,Computer takes takeCnt + ” matches this time.);/设置电脑显示 拿火柴的数Stif (takeCnt = rel)如果和邑脑那的歎fit和面极中的数量相等执行下面的话句JOPtiO nPon e.showMessgeDiolog(mi nFrome, 显示信息对话框提示电脑肚利了!Computer is the Winner.n);iit);/并莖薪初始化USerBtn.SetEnabIed(True);/设置用 H 按匹新可用SU PPr

25、eSSWamingS (HSeriar,)PriVate CIaSS MyPaintPanel extends COmPOnent 定义一个包定义的面械类并绘承了组件类PriVOte BUfferedlmOge bimg;创建一个 BUfferedlmage 的支fit bimgPriVOte StaCk CIote;/定义一个私有的栈类型的芟 dataPriVote MyPaintPonel()造我的初始面极的方法bimg = new BUfferedlmage(190z 285, BUfferedImOge.TYPE-3BYTE-BGR);/表示一个具有 8位RGB颜色分St的图像.Gra

26、Phics2D g2 = bimg.createGaphics();/创建一个 GrOPhies2D,并将它绘制到此 BUfferedImage 中g2.setColor(Color.WHlTE);/设置要画的颜色,即面极的颜色g2.fillRect(0z 0, 190, 285;/在坐标(0,0)处画一个大小为190.高为285的白色矩形区域 g2.dispose(;/释放此图形的上下文以及它使用的所有系统资混调用dispose J.就不 能再使用GrOPhiCS对燎.data = new StaCk();/在此面极中实例化一个具体的栈的对燎PUbIiC VOid Paint(GfaPhiC

27、S g)定义画图形的默认方法g.drawlmoge(bimgz OZ 0, null);/从坐标(0.0)出开始画图片g.dispose()7放此图形的上下文以及它使用的所有系统资源调用dispose之厉,就不戢 再汝用GfQPhiCS对象.3:代码设计PnVate VOid Odd(ird num)/添加火集棍的方法GraPhics2D g2 = bimg.createGraphicc();/ 创 建一个 GfaPhics2D ,并 将它绘制到此 Bufferedlmage 中intloc = data.size();/将当前栈的大小蹴给吏fit IOC/System .out.printl

28、 f,当前栈为,+data.sie ();int OffX = IOC % 3塔65; 动态的坐标int OffY = loc3* 15;动态的坐标g2.setColorColor.YELLOW);/设置火柴樓的颜色为黄色g2.fillRect(offX 8, OffY 5, 50, 6);填充火柴檸的颜色区域 g2.setColorColor.GREEN);/设置火柴檸头的颜色为冬色g2.fillArc(offX + 50, OffY 3. 10. IOZ 0. 360);设置火柴棒头的坐标,大小为富和高为10的360度 的亚g2.setColor(Color.BLACK);/设置当前火集棒的根数的颜色 g2.drawString(String.valueOf(num), offX, OffY+ g2.gtFont() .getSiz ();/ 画出数宇data.push(num);/把数宇1压入堆栈顶部reoint)75 Sig2.dispose();/釋放此图张的上下文以及它使用的所有系统资舉 调用dispose fi.就不能再使 用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1