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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

小游戏 Java 课程设计报告书.docx

1、小游戏 Java 课程设计报告书 JAVA语言程序设计课程设计报告 2048智力小游戏设计专业班级: 计算机科学与技术嵌入13-1 * * 学生学号: 小组成员: 单建飞 堵文斐 李栋承 梅孔伟指导教师姓名: 宋 强 一、前言最近以来,移动手游越来越成为当下游戏产业中重要的一环,市场也在加大对这一产业的投入,涌现出了愤怒的小鸟,水果忍者,flappy bird,2048等诸多优秀的手游,然而任何一款手游能够风靡,主要还就是依靠其简单的操作性,因此本次java课设我选择其中的典型2048PC版作为本次课设的课题。2048游戏规则很简单,玩家每次可以选择上下左右其中一个方向去移动,每移动一次,所有

2、的数字方块都会往移动的方向靠拢外,系统也会在空白的地方随机出现一个数字方块,相同数字的方块在靠拢、相撞时会相加。系统给予的数字方块不就是2就就是4,玩家要想办法在这小小的16格范围中凑出“2048”这个数字方块。二、游戏需求分析2、1需求分析 现代社会对休闲小游戏的需求就是:提高游戏的操作可行性,降低游戏的操作难度,降低游戏的上手难度,降低游戏的竞争需求,对使用设备的要求趋于简单化与多样化,游戏界面更加人性化,功能更加贴合使用。(1)界面一款的好的游戏其界面必须友好,简洁已经成为当今UI设计的主流,简单易上手才能得到玩家的青睐。(2)功能需求能够显示游戏的当前得得分,并记录游戏的最高分并显示,

3、当在次打开游戏时,能够显示最高分;在游戏进行的过程中循环播放音乐,并能够关闭音乐或者打开音乐;游戏的主界面上,相同的数字要显示相同的颜色。游戏结束要有相应的提示。游戏的主要目的就是通过上下左右移动来将相邻相同的数字相加,通过不断地累加最终加到2048。(3)操作性需求游戏的体验就是衡量一款游戏的关键,本游戏可通过键盘w,s,a,d以及方向键来控制方块的移动,还可以通过在游戏的主面板中向上下左右拖动鼠标来控制方块的移动,左右手都可以操作,充分考虑便捷性。 不同的人有不一样习惯,通过多种方式来操作游戏,可以各种习惯的人的需求。2、2可行性分析 (1)面向对象的程序设计方法 Java面向对象程序设计

4、的基本思想就是通过构造与组织对象来求解问题的。对象就是很好理解的,任何一种物体都可以被认为就是对象,例如,汽车就就是一种对象。对象具有两个最基本的属性:具有一定的物质基础与一定的功能,这两种基本属性在Java语言中表现为拥有一定的存储单元并具备一定的功能。理解了Java的这种面向对象程序设计的基本思想之后,在以后的编程过程中,就应当个构造人们容易理解的更接近于真实物理世界物体的对象。Java面向对象程序设计的过程非常简单。这里介绍一种自顶向下的程序设计方法,首先构造一个类来处理需要解决的问题,然后根据已经拥有的类(例如以前求解其它问题时实现的类),分析与构造新的类,设法将问题分解下去,而最开始

5、构造的类通过组织这些新构造的类、已有的类及由她们生成的实例来求解指定的问题。这个过程可以继续递归下去,用在新构造的类上,直到最后解决了指定的问题,例如Java的应用程序与小应用程序都必须有一个类作为入口求解问题。在计算机语言中,面向对象的类一般具有三个基本特性:封装性、继承性与多态性,这三种特性进一步简化了Java求解模型,提高了程序的复用性,节省了程序的代码量,从而提高了软件的生产率。(2)java技术分析图形用户界面不仅可以提供各种数据的基本图形的直观表示形式,而且可以建立友好的交互方式,从而使计算机软件可以设计得十分简单易用。从Java语言诞生到现在,Java语言已经提供了两代图形用户界

6、面。第一代图形用户界面AWT提供了基本的图形用户界面,它强烈地依赖于具体的计算机操作系统,而且缺少基本的剪贴板与打印支持功能。现在第二代图形用户界面Swing对AWT进行了扩展,Swing不仅在功能上比AWT强大,而且在很大程度上克服了AWT的上述缺点,它所设计的图形用户界面与具体的计算机操作相关性很小,而且可以定制指定的操作系统风格的图形用户界面。GUI(图形用户界面)组件构成了图形用户界面的基础。在Java程序设计中,要求按照一定的布局方式将组件安排在容器中,然后通过事件处理的方式实现人机交互,而容器本身也就是组件,这样在容器中也可以含有容器,从而可以通过这种嵌套方式方便地组合各种组件。事

7、件处理模型就是Java语言提供的一种人机交互模型,它使得用户能够通过鼠标、键盘或其她输入设备来控制程序的执行流程,从而达到人机交互的目的。对鼠标、键盘或其她输入设备的各种操作一般也称为事件。Java语言对这些事件的处理模型就是采用面向对象的方法,即通过对象的形式把各种事件进行封装与处理。这种事件处理模型的三个基本要素就是事件源、事件对象以及事件监听器。事件源就是各种组件,就是接受各种事件的对象。在各种事件源上运用鼠标、键盘或其她输入设备进行各种操作,就会有事件发生。每种操作一般都对应着事件,Java语言通过事件对象来包装这些事件。对事件进行处理就是通过事件监听器实现的。因为鼠标事件也就是一种事

8、件,所以对鼠标事件进行处理要遵循事件处理模型。鼠标事件的处理也就是建立在事件源的基础之上,以事件对象本身,最后通过事件监听器进行处理。类java、awt、event、MouseEvent包装常用的鼠标事件,例如,按下鼠标键与放开鼠标键等。类MouseEvent的实例对象记录了鼠标的当前位置与状态发生变化的鼠标键等。对鼠标事件进行处理最关键的就是实现事件监听器接口。这些相关接口包括MouseListener,MouseMotionListener,MouseWheelListener,MouseInputListener。前面三个就是包java、awt、event中的接口,最后一个接口Mouse

9、Inputlistener来自包javax、swing、event。接口Java、awt、event、MouseListener主要用来处理按下鼠标键、放开鼠标键、单击鼠标键、鼠标进入组件内与鼠标离开组件区域等事件。对鼠标事件进行处理,就就是要设计类,实现上面的鼠标事件监听器接口,然后在事件源中注册处理鼠标事件监听器的对象,以便对鼠标事件进行处理。三、 概要设计 四、详细设计(1)流程图(2)界面的整体布局分别构建mainPane,scoresPane两大模块放入游戏窗体,其中scoresPane包含2048字样的提示,当前得分与最高分,当得分超过最高分时,将得分存入工程文件夹下的myReco

10、rding、txt,覆盖最高分,同时在最高分显示最新myRecording、txt的内容。通过Create方法随机产生2号方块或者4号方块,通过setColor方法设置每个数字代表的方块颜色。(3)方法模块分析方法1:设置标签颜色,每次随机产生2或4与数字合并之后就要调用该方法来设置标签的颜色 public void setColor(int i, int j, String str) if (、equals(str) textsij、setBackground(new Color(120,221,247); return; int result = Integer、parseInt(str)

11、; switch (result) case 2: textsij、setBackground(new Color(240,240,0); break; case 4: textsij、setBackground(Color、pink); break; case 8: textsij、setBackground(new Color(240,150,10); break; case 16: textsij、setBackground(Color、green); break; case 32: textsij、setBackground(Color、magenta); break; case 64

12、: textsij、setBackground(new Color(155,10,190);break;case 128: textsij、setBackground(Color、blue); break; case 256: textsij、setBackground(Color、gray); break; case 512: textsij、setBackground(Color、cyan); break; case 1024: textsij、setBackground(Color、DARK_GRAY); break; case 2048: textsij、setBackground(C

13、olor、red); break; case 4096: textsij、setBackground(Color、white); break; default: break; 方法2:在随机位置产生一个2号或4号方块的方法,同时该方法也用于判断游戏就是否结束。 public void Create() int i, j;/用于记录产生的二维方阵的下标值 boolean r = true; String str; if (times 0 & biaoji = 1) while (r) i = random、nextInt(4); j = random、nextInt(4); str = text

14、sij、getText(); if (str、compareTo() = 0) int ima = 2 * (int) (1 + Math、random() * 2);/ 随机产生2或4 String imass = String、valueOf(ima); textsij、setText(imass); setColor(i, j, imass); times-; r = false; p1 = p2 = p3 = p4 = 0; /记录当前的状态 for(int p = 0; p 4; +p) for(int q = 0; q 0 & p2 0 & p3 0 & p4 0) / l1到l4

15、同时被键盘赋值为1说明任何方向键都不能产生新的数字,说明游戏失败 tips、setText( 游 戏 结 束 !); currentScores、setText(SCORE+String、valueOf(scores)+); JOptionPane、showMessageDialog(null,游戏结束!); System、exit(0); 方法3:通过鼠标左键的按下与释放来判断向那个方向拖动,拖动实现主要就是通过记录按下鼠标左键时鼠标指针的位置,然后在记录鼠标左键释放时指针的位置坐标,通过对两次的坐标值计算处理,可以得到鼠标指针移动的方向,在将获得的方向值传到do_label_keyPres

16、sed(int)函数中,从而达到移动的目的。public void mousePressed(MouseEvent e) / TODO Auto-generated method stub /鼠标按下 /若鼠标位置在灰色的区域内则记录鼠标左键按下时的坐标 if(e、getX()=20&e、getX()=180&e、getY()=20&e、getX()=180&e、getY()x2)&(x1-x2)Math、abs(y2-y1) option=1;/移动的方向向左 System、out、println(向左方向移动); if(x1Math、abs(y2-y1) option=2;/移动的方向向右

17、 System、out、println(向右方向移动); if(y1y2)&(y1-y2)Math、abs(x1-x2) option=3;/移动的方向向上 System、out、println(向上方向移动); if(y1Math、abs(x1-x2) option=4;/移动的方向向下 System、out、println(向下方向移动); /将上一次的鼠标位置清零 this、x1=0; this、y1=0; this、x2=0; this、y2=0; do_label_keyPressed(option); 方法4:从文件中读取,记录。从文件中读取记录,同时也要将新的数据保存到文件中。读

18、取文件需要解决的问题就是,当程序首次运行的时候,文件不存在,这时不仅不能从文件中读数据,还要创建相应的文件。创建文件之后,接下来在运行程序就能读取到数据。文件读取结束要将文件关闭。 public static void getRecording() boolean flag=false;/用于判断文件就是否就是新创建的 try new File(src/myRecording、txt); if(f、exists() fr=new (f); br=new BufferedReader(fr); String n=br、readLine(); maxscores_2048=Integer、pars

19、eInt(n); else flag=f、createNewFile(); catch (Exception e) / TODO: handle exception e、printStackTrace(); finally try /关闭文件流的顺序,先开的后关闭 if(!flag) br、close(); fr、close(); catch (Exception e2) / TODO: handle exception e2、printStackTrace(); 五、测试(1)首次运行程序(在工程文件中建立保存最高分的文件)与再次运行程序(2)游戏结束六、总结在这次的课程设计中不仅检验了我所

20、学习的知识,也培养了我的实践能力,让我知道遇到一个问题,如何去寻找思路,如何去解决问题,最终完成整个事情。课程设计就是我们专业课程知识综合应用的实践训练,就是我们迈向社会,从事职业工作前一个必不少的过程。这次课程设计不仅就是对这学期所学知识的一种综合检验,而且也就是对自己动手能力的一种提高,增强了自己实践能力。通过这次课程设计使我明白了自己知识还比较欠缺,只就是学习书本知识还就是远远不够的,自己不会的东西还有太多,学习需要自己长期的积累,在以后的学习、工作中都应该不断的学习,将课本的理论知识与生活中的实践知识相结合,不断提高自己文化知识与实践能力。由于本次试验的很多知识都就是现学现用,以致很多

21、地方的代码显得累赘繁琐。但总体上主要功能就是实现了的,并且美化了一下主界面,使得界面更加简洁。最后也感谢老师给予的耐心指导与帮助。总之,此次课程设计让我获益匪浅,我将会继续把它完善做好参考文献 1 java语言程序设计基础篇M、机械工业出版社、2011、3、2 黄晓东、Java课程设计案例精编M、北京:中国水利水电出版社,2007、5、3 求就是科技、 Java信息管理系统开发实例导航M、北京:人民邮电出版社、2009、4、源代码清单package my2048game;import javax、sound、sampled、*;import javax、swing、*;import java、

22、io、*;import java、awt、*;import java、awt、event、*;import java、util、*;public class My2048Game extends JFrame /定义自己的面板 MyPanel mp=null; public static void main(String args) / TODO Auto-generated method stub My2048Game m2048=new My2048Game(); m2048、setFocusable(true);/(设置)该对象的焦点,不能用请求焦点 对象名、requestFocus()

23、; /构造函数 public My2048Game() mp=new MyPanel(); this、add(mp); /注册鼠标监听 this、addMouseListener(mp); /注册键盘监听 this、addKeyListener(mp); this、setTitle(2048游戏); this、setLocation(400, 30); this、setSize(500, 800); this、setResizable(false);/禁止调整窗口大小 this、setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE); this、setVi

24、sible(true); class MyPanel extends JPanel implements MouseListener,KeyListener,ActionListener/动作监听器 一般用于监听按钮或者菜单的点击事件 private int x1=0,y1=0;/按下鼠标左键的位置坐标 private int x2=0,y2=0;/释放鼠标左键的位置坐标 private int option=0;/记录鼠标移动的方向 /定义组件 private JButton jb1;/声音图标的按钮 private static boolean jb1_flag=true;/用于控制声音开

25、关的一个标志 private boolean jb1_flag2=true;/ public static boolean isJb1_flag() return jb1_flag; public static void setJb1_flag(boolean jb1_flag) MyPanel、jb1_flag = jb1_flag; private JPanel scoresPane; / 分数面板 private JPanel mainPane; / 游戏主面板 private JLabel labelMaxScores; / 最高分标签 private JLabel m2048;/显示

26、2048 private JLabel labelScores; / 当前得分标签 private JLabel tips;/ 提示操作标签 private JLabel currentScores; private JLabel textScores; private JLabel texts; / 创建文本框二维数组 private int temp1 = new int 44; /记录上一步的状态 private int temp2 = new int 44; /记录当前的状态 private int times = 16;/ 记录剩余空方块数目 private int scores = 0;/ 记录分数 private int maxscores=0;/最高分 private int temp1scores = 0; private int temp2scores = 0; private int p1, p2, p3, p4;/ 用于判断游戏就是否失败 private int biaoji = 1; /标记能否移动 Font font = new Font(, Font、BOLD, 14); / 设置字体类型与大小(标签字体的设置) Font font2 = new Font(, Font、BOLD, 30); /

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

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