欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:5684468       资源大小:66.79KB        全文页数:24页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、java火柴游戏课程设计报告成绩评定表学生姓名盛丽丽班级学号1303050208专业计算机科学与技术课程设计题目小游戏评语组长签字:成绩日期2015年12月29日课程设计任务书学院信息工程与科学学院专业计算机科学与技术学生姓名盛丽丽班级学号1303050208课程设计题目小游戏实践教学要求与任务:任务:程序随机产生20 50根火柴,由人与计算机轮流拿,每次拿的数量不超过 3根,拿到最后一根为胜。(使用图形界面)要求:1.在java兼容环境完成上述题目的代码编写与调试;2.程序运行界面交互性好;3.软件运行,给出测试数据。工作计划与进度安排:课程实训设计(二)设计时间安排在教学第15周内完成,按

    2、上述题目要求完成 查阅资料、程序设计、调试、运行等工作。时间安排如下:1、 查阅资料、与初步设计;1-2天2、 整体功能设计、代码编码与初步调试。1-3天3、 调试和软件功能的测试和验收。1-3天4、 答辩与论文撰写。1-2天指导教师:2014年12月12日专业负责人:2014年12月12日学院教学副院长:2014年12月12日一、 需求分析1.1设计要求 11.2技术原理 1二、 概要设计 1三、 详细设计3.1程序类 23.2主要代码 2四、 测试 10五、 收获和体会 12六、 参考文献 12需求分析1.1 设计要求 程序随机产生 20 50 根火柴,由人与计算机轮流拿,每次拿的数量不超

    3、过 3根,拿到最后一根为胜。 (使用图形界面)1.2 技术原理该游戏程序设计的主要内容是使用 java 中的各种组件与容器互相搭配来完 成的一个小游戏。游戏设计中的主要的知识要点包括 java 的 awt 包中的颜色类,图形类,图 像类,事件监听器类,和 util 包中的 stack 类, timer 类,和 timertask 类的 使用方法,以及 swing 包中的窗口类,按钮类,标签类,面板类,复选框类等一 些常用组件的用法。通过这些组件来掌握事件监听器的用法, java 中栈的用法,以及实现了 Runnable 类的 TimerTask 类的用法,通过这个类实现线程技术,还有 Grap

    4、hics 类中的主要方法的使用,学会运用这些方法来来绘制火柴,绘制图片的目的。概要设计1.设置随机数的范围2.获取随机数3.设计出人性化的图形界面4.给予不同的提示完成游戏三、详细设计3.1程序类. Package Enplorer 或-j_r (.default package.)d m J RE System Library Jc -iSE-1 7- resourcesjar - D:Proram FileJavajre#园 rtjar - D:Pragrafn0 辰已jn- D:PrQgr3m FifC5Javajfe7Jib o 畐 j-csjar - D:Program fil es

    5、J avajre7libp thartsjar - D;Pt?gym FilesJavajrcAD 邑 jfrjar - D:Program File&Javajre7Jlbw acce-bridge.jflr D:-,Frcg日=1 匚ikf 后阳 l 邑 dnsnsjar - D:Program FilesJavare7libOio jsrces.jr - P:Pcig力m F:leC lx .于jr7l4 星 localedatajar - DProgram FltesJavajrj B 邑 unecjar - D:Program RtfreIavajre7libToia eunjce_

    6、providr.jar - - ”二:织: ,爲 sunmstapijsr C ;:了ugmTi 刁鬥 皿乩丘 oh- suripkcsll jar - L .-,- f.: c:lp.? i 三三.j ? d eeii ziph.jr ?: -ogrf!n Fi jre? Jibt图3.1程序类3.2主要代码import java.awt.Color; / 引入颜色类import java.awt.Comp onent; import java.awt.Dime nsio n;import java.awt.Graphics;import java.awt.Graphics2D;/引入组件类

    7、/弓I入封装单个对象中组件的宽度和高度(精确到整数)的类/引入图形类/引入二维图形类import java.awt.eve nt.Acti on Eve nt;/引入事件类import java.awt.eve nt.Acti on Liste ner;/引入事件监听器类import java.awt.image.Bufferedlmage;/引入缓冲图像类import java.util.Stack;import java.util.Timer;import java.util.TimerTask;/引入栈类/引入计时器类/引入了实现Runnable接口的类,并具有了线程的功能import

    8、javax.swi ng.JButt on;/引入按钮类import javax.sw in g.JComboBox;import javax.swi ng.JFrame;import javax.sw in g.JLabel;/引入下拉列表框类/引入主框架主窗口类/引入标签类import javax.swi ng.JOptio nPane;/引入选项面板类public class ha /定义一个公共的主类 Testpublic static void main( Str in g args) / 定义主方法 mainnew ha(); /调用Test类的构造方法Test()privates

    9、taticfinalintMIN_CNT = 20;/定义一个常量,设置为最小火柴棍数量为20privatestaticfinalintMAX_CNT= 50;/定义一个常量,设置为最大火柴棍数量为50privatestaticfinalintMAX_TAKE= 3;/定义一个常量,设置为最大拿火柴数量为3privatestaticfinalintDELAY = 1000;/定义一个常量,设置为延迟时间为 1000private JFrame mainFrame ; / 定义主框架变量private MyPaintPanel paints ; /定义我自己画的面板数组变量private JBu

    10、tton userBtn ; /定义我的按钮属性private JComboBox userNum ; / 定义我的下拉列表private JButton compBtn ; /定义电脑按钮属性private JLabel compTxt ; / 定义电脑标签private Timer timer ; /定义计时器的变量private ha() /定义一个私有的构造方法,来完成游戏的初始化动作mainFrame = new JFrame(); / 实例化一个主窗口mainFrame .setResizable( false ); / 设置窗体大小不可调整mainFrame .setDefaul

    11、tCloseOperation(JFrame. EXIT_ON_CLOSE); / 设置默认的关闭操作为关闭窗口JPanel mainPanel = new JPanel(); / 实例化一个主面板对象main Panel.setLayout( null ); /设置布局为空,即没有任何布局mainPanel.setPreferredSize( new Dimension(600, 400); / 将组件的首选大小设置为常量值ma inF rame .add(ma in Pa nel); /将主面板添加到框架(窗口)中JLabel lab11 = new JLabel(电脑”);/创建并设置标

    12、签按钮的内容为电脑 lab11.setHorizontalAlignment(JLabel. CENTEFR; / 设置标签内容沿 X 轴的对齐方式lab11.setBounds(0, 10, 200, 20); /设置该标签显示位置为坐标( 0,10 ),宽200,高 20mainPanel.add(lab11); /将标签加入主面板JButton btn 11 = new JButton( Reset ); / 定义一个重新来的按钮btn11.addActionListener( new ActionListener() / 为 “ Reset 1添加行为事件监听器,采用匿名类的方式Ove

    13、rridepublic void actionPerformed(ActionEvent e) / 实现监听器中的方法init(); / 当单击此按钮时,调用该初始化方法);btn11.setBounds(250, 10, 100, 20); / 设置重置按钮的位置, 左上角坐标为 (250 , 10 ),大小为宽 100 ,高 20mainPanel.add(btn11); / 重来标签添加到主面板上JLabel lab12 = new JLabel( 用户 ); / 定义用户标签lab12.setHorizontalAlignment(JLabel. CENTER); / 设置用户水平方式

    14、为居中 lab12.setBounds(400, 10, 200, 20); / 设置用户标签的位置,左上角坐标为(400,10 ),大小为宽 200,高 20mainPanel.add(lab12); / 将用户标签添加到主面板上compBtn = new JButton( Computer First ); / 定义一个电脑首先拿的按钮 compBtn .addActionListener( new ActionListener() / 为电脑开始按钮定义行为 事件监听器Overridepublic void actionPerformed(ActionEvent e) / 行为监听器中的

    15、默认方法compTake(); / 当单击电脑按钮时,调用电脑拿方法);compBtn .setBounds(10, 40, 180, 20); / 设置电脑按钮的位置, 左上角坐标为 ( 10 , 40 ),大小为宽 180 ,高 20mainPanel.add( compBtn ); / 按钮添加到主面板上compTxt = new JLabel(); / 定义一个空标签 compTxt .setBounds(10, 70, 400, 20); / 设置空标签的位置,左上角坐标为( 10 ,70),大小为宽 400,高 20mainPanel.add( compTxt ); / 将空标签加

    16、到主面板上userBtn = new JButton( Take ); / 定义用户拿按钮 userBtn .addActionListener( new ActionListener() / 为用户按钮定义行为事件 监听器Overridepublic void actionPerformed(ActionEvent e)userTake(); /当单击用户拿按钮时,调用用户拿方法);userBtn .setBounds(400, 40, 90, 20); /设置用户拿按钮的位置,左上角的坐标为(400,40 ),大小为宽90,高20mainPanel.add( userBtn ); /用户按

    17、钮添加到主面板上 userNum = new JComboBox(); / 定义一个下拉列表框for ( int i = 0; i MAX_TAKE i+) / 定义一个拿最大的循环userNum .addltem(i + 1); /通过循环给列表框逐个添加选项userNum .setBounds(495, 40, 90, 20); /设置下拉列表框中的位置,左上角的坐标为(495,40 ),大小为宽90,高20mainPanel.add( userNum ); /将列表框添加到主面板上paints = new MyPaintPanel3; / 定义我画的面板for ( int i = 0;

    18、i 3; i+) /用3次循环来画岀三个面板paints i = new MyPaintPanel(); /分别创建3个面板,并调用构造方法初始化三个面板paints i.setBounds(5 + 200 * i, 110, 190, 285); / 设置三个面板的位置和坐标,间距为5main Pa nel.add( paints i); /将三个面板分别添加到主面板上mainFrame .pack(); /调整此窗口的大小,以适合其子组件的首选大小和布局。mainFrame .setVisible( true ); /设置当前主窗口的可见性init(); /调用初始化方法private v

    19、oid init() /定义初始化的方法if ( timer != null ) /如果计时器不为空的话就执行下面的语句timer .cancel(); /快速终止计时器的任务执行线程timer = new Timer(); /实例化一个计时器的对象compTxt .setText( );/设置空标签的文本为空compBtn .setEnabled( true ); /设置是否启用电脑按钮组件,即电脑组件可用 userBtn .setEnabled( true ); /设置是否启用用户按钮组件,即用户组件可用 paints 0.reset(); /调用重置方法,来重新定义第一块面板paints

    20、 1.reset(); /调用重置方法,来重新定义第二块面板paints 2.reset(); /调用重置方法,来重新定义第三块面板int num = MIN_CNT + ( int ) ( MAX_CNT+ 1 - MIN_CNT) * Math. random (); / 随机产生一个大于20小于50的数for ( int i = 0; i rel) /如果用户拿火柴棍的数量比面板中的数量大的话,执行下面的语句JOptionPane. showMessageDialog ( mainFrame , There is only + rel+ matches. ); /用标准对话框类调用显示

    21、” There is only machi nes 的对话框return ;for (int i = 0; i takeC nt; i+) /定义一个将第二块面板中的火柴棍的数量移动到用户面板的循环int index = paints 1.remove(); /将第二个面板要移除的火柴棍的数量给index变量paints 2.add(index); /将index的值添加到用户拿的面板上if (takeCnt = rel) /如果用户拿的火柴棍的数量和第二个相等执行下面的语句JOptionPane. showMessageDialog ( mainFrame , You are the win

    22、ner. ); /显示”你胜利的对话框 “init(); /并重新初始化else /如果不相等的话,执行下面的语句,compTake(); /让电脑接着拿火柴棍private void compTake() /定义电脑拿的方法compBtn .setEnabled( false ); /设置电脑按钮的当前状态为不可用userBtn .setEnabled( false ); /设置用户按钮的当前状态为不可用MyTask task = new MyTask(); / 实例化一个 MyTask 的对象timer .schedule(task, DELAY); /执行线程,安排在指定延迟 1秒后执行

    23、指定的任务private class MyTask extends TimerTask / 定义一个继承了实现 Runnable 接口的类使自己也具有线程功能Overridepublic void run() / 因为TimerTask 实现了 Runnable 接口,重写父类的 run 方法 int rel = paints 1.getCnt(); /将火柴棍面板中的火柴的数量赋给 relint takeCnt = 0; /设置当前拿火柴棍的数量为 0if (rel 0) /如果面板中的火柴棍的数量对 4取余大于0的话执行下面的语句takeCnt = rel % ( MAX_TAKE+ 1)

    24、; /将面板中的火柴的数量对 4取余之后赋给电脑要拿的火柴的数量else /否则面板中的火柴棍的数量对 4取余小于或等于0的话执行下面的语句takeCnt = 1 + ( int ) ( MAX_TAKE* Math. random (); / 随机产生一个小于4的数,给电脑要拿的数量for ( int i = 0; i privateMyPa in tPa nel()true ); /设置用户按钮重新可用)extends Component /定义一个自定义的面板类并继承bimg ; / 仓U建一个 BufferedImage 的变量 bimgdata ; /定义一个私有的栈类型的变量 da

    25、ta/构造我的初始面板的方法bimg = new Bufferedlmage(190, 285,BufferedImage. TYPE_3BYTE_BGR); /表示一个具有 8 位RGB颜色分量的图像,Graphics2D g2 = bimg .createGraphics(); / 创建一个 Graphics2D ,并将它绘制到此 BufferedImage 中g2.setColor(Color. WHITE); /设置要画的颜色,即面板的颜色g2.fillRect(0, 0, 190, 285); / 在坐标(0,0 )处画一个大小为宽 190,高为285的白色矩形区域g2.dispos

    26、e(); /释放此图形的上下文以及它使用的所有系统资源。调用 dispose 之后,就不能再使用 Graphics 对象。/定义画图形的默认方法data = new Stack(); /在此面板中实例化一个具体的栈的对象 public void paint(Graphics g) g.drawImage( bimg , 0, 0, null ); / 从坐标(0,0 )岀开始画图片g.dispose(); /释放此图形的上下文以及它使用的所有系统资源。调用对象dispose 之后,就不能再使用 Graphics private void add( int num) /添加火柴棍的方法Graphics2D g2 = bimg .createGraphics(); / 创建一个 Graphics2D ,并将它绘制到此 BufferedImage 中int loc = data .size(); /将当前栈的大小赋给变量 loc/System.out.pri ntl n(当前


    注意事项

    本文(java火柴游戏课程设计报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开