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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

打飞机小游戏 Java课程设计.docx

1、打飞机小游戏 Java课程设计四 川 理 工 学 院课 程 设 计 书学院 计算机学院 专业 计算机科学与技术 班级 计科2014级 题目 打飞机小游戏 教师 王非 学生 雷元刚 张柯 摘 要随着Java语言的兴起,越来越多的平台开始使用java语言编写的程序,虽然不及C语言的高效,但是Java拥有的平台无关性是其他平台所不能企及的。几乎所有的银行系统都是运用Java来编写的,主要是因为其安全性较高。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。而运用Java编写图形化界面也是

2、比较容易的,因为其有专门的框架和界面,这样使得几行代码就可以创建一个图形化界面了。而本次要编写的打飞机小游戏,重复运用了图形化界面的知识,多线程,重画,添加监听器等。锻炼了我们实践编写界面代码的能力,提高了我们对于图形化界面编程的理解和运用各种容器和组件来实现我们所需要的界面。关键词:打飞机,多线程,重画,图形化第一章 前言随着网络的不断发展,在中国网民的数量越来越多。人们也对于互联网所能提供的功能有了一定的要求,比如能够在线观看视频,在线游戏,大数据服务。互联网经过短短几十年的发展,相比起当初,已经发生了翻天覆地的变化。而游对于互联网的发展也有着一定的推动作用.SQL Server是目前应用

3、比较广泛的关系型数据库标准语言之一。现在,SQL已成为国际标准语言,各种类型的计算机和DBS都采用SQL作为其存取语言和标准接口,从而使数据库世界有可能链接为一个统一的整体.Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一.对于广大用户而言,Access数据库的操作简便,和Office一起安装的,所以也有广泛的通用性。以数据库技术作为后台的可视化应用也越来越受到人们的喜爱,Java是目前应用比较流行的可视化编程软件之一

4、。它的功能强大,系统自带的代码较为齐,容易操作,受到很多用户的喜欢。Java开发游戏也是比较容易的,对于广大的网民和学生,在工作之余能够玩玩游戏也是一种不错的选择的休闲的方式,并且伴随着网络的普及化,越来越多的人们开始加入到游戏的大军中来,所以开发一款适合的游戏显的尤为重要。1.1开发背景游戏自古以来就有,以前的象棋,围棋,到现在的军旗,跳跳棋.毫不夸张的说,游戏是人类智慧的结晶,是我们休闲娱乐的一种方式。数据库技术产生于20世纪60年代末70年代初,其主要目的是有效地管理和存取大量的数据资源。数据库技术主要研究如何存储,使用和管理数据. 数年来,数据库技术和计算机网络技术的发展相互渗透,相互

5、促进,已成为当今计算机领域发展迅速,应用广泛的两大领域.数据库技术不仅应用于事务处理,并且进一步应用到情报检索,人工智能,专家系统,计算机辅助设计等领域。游戏加入数据库技术,能够在一定程度上减轻服务器的负担,提高服务器的负载能力.有利用实现更好的用户体验和数据的离线保存,有助于对于游戏数据的分析和处理。在大数据时代,对于数据的分析和处理显的更加重要。1。1。1开发环境Windos系统,JDK1.8,jre7,Access数据库,Mysql数据库,Eclipse MARS软件一套。1。2游戏功能简介本游戏能够实现游戏和音乐同步播放,当飞机被摧毁是还有特殊音效。加入了游戏数据保存到本地数据库的功能

6、,能够保存在MYSQL以及ACCESS中,满足各种环境下的需求。第二章 需求分析2.1 开发目的打飞机游戏,是我们儿时在游戏厅中经常玩的游戏。它能勾起我们对于儿时的种种美好的回忆,而游戏本身难度适中,能够提升我们对于这种游戏的编写能力和逻辑思维能力。打飞机游戏也需要多线程的支持,而Java对于多线程的支持程度是比较好的的.2。2 系统需求分析 1、功能需求对于游戏结果的记录,判断是否有子弹击中飞机,判断是否2架飞机相撞.2、可靠性可用性需求能够在在程序异常的时候提示,在断电的情况下自动保存游戏数据。3、出错处理需求当游戏出错是,能够弹出一个对话框来提醒用户。4、游戏数据的处理对于生成的游戏数据

7、,能够存入数据库的不同字段中。能够记录游戏数据插入数据库中的时间.2.3 系统性能分析为了保证系统能够长期、安全、稳定、可靠、高效地运行,本系统应该满足以下的性能需求。(1)准确性和及时性程序采用的是坐标定位的方式,对于碰撞检测还是比较全面,能够在一定的范围内检测,并提供了飞机碰撞检测和子弹碰撞检测这2种不同的检测方式。(2)易用性 由于采用的2套数据库,能够保证数据部分的通用性,而java又是与平台无关性的,所有能够保证程序的易用性。(3)安全性将游戏的数据放入数据库中,能够增加数据的安全性,需要程序在连接数据库的时候输入密码。2。4 系统模块分析1、子弹模块:(1)用来管理自己的飞机所需要

8、发出的子弹,放在Bulletlist的List类型的数组中。并提供了draw()函数,用来画出不同位置的子弹并利用重画功能,实现子弹的移动。(2)敌机子弹功能,也是相应的重画功能,并能够通过EnemyBullet()功能初始化敌机子弹的位置。通过isLive()判读子弹是否有效.getY(),getX()获取子弹的横坐标和纵坐标,为碰撞检测提供依据。2、飞机模块:(1)敌机管理拥有1号级和2号级,并通过随机函数来调用不同的敌机出现在画面中。draw()能够实现对于飞机的重画,实现敌机的下落功能。(2)我机管理 我机也包含初始化的X方向和Y方向上的速度,并设置dl,du,dr,dd为false.

9、并添加了键盘监听器,能够对键盘的按钮做出响应,按下w,a,s,d分别对应的是飞机向上左下右移动.(3)数据管理对用户的信息和数据进行存入数据库的操作,和通过数据库调用用户数据。第三章 数据库设计3.1 数据库概述 数据库是整个系统的核心,它的设计直接关系系统执行的效率和系统的稳定性。因此在软件系统开发中,数据库设计应遵循必要的数据库范式理论,以减少冗余、保证数据的完整性与正确性。只有在合适的数据库产品上设计出合理的数据库模型,才能降低整个系统的编程和维护难度,提高系统的实际运行效率.3。2数据库设计(1)分数数据表 如表3。1表3。1分数数据表 字段名数据类型宽度是否为空说明User_Name

10、varchar10不允许为空记录者IDUser_Scorevarchar10不允许为空记录者成绩(2)数据库管理软件采用Mysql或者Acess,通过这两款软件来管理程序中需要存储管理的数据,并且能够加强我们的数据库思维,为以后的开发打好基础.数据库的详细代码设计如下:package Tools;public class DB private String url=”jdbc:mysql:/localhost:3306/plane”; private String driver=com。mysql.jdbc。Driver; private Connection conn; private St

11、atement stmt; public DB() try Class。forName(driver); conn=DriverManager.getConnection(url,”root,”123); stmt=conn.createStatement(); System。out.println(”数据库连接成功。.。.。.); catch (ClassNotFoundException e) e。printStackTrace(); catch (SQLException e) e.printStackTrace(); public boolean excuteWrite(String

12、name,String score) String sql=”insert into score values(+name+”,”+score+”)”; try int result=stmt.executeUpdate(sql); System。out.println(”Insert:”+result); return true; catch (SQLException e) e。printStackTrace(); return false; public String excuteRead() String sql=select * from score”; String name=”,

13、score=; StringBuffer end=new StringBuffer(); try ResultSet result=stmt.executeQuery(sql); while(result。next()) name=result.getString(1); score=result。getString(2); end。append(name+”t+score+n”); catch (SQLException e) e。printStackTrace(); return (null=end) ? ”: end。toString(); 第四章 详细设计4。1 游戏概要 程序启动后,

14、进入游戏界面,用户就可以进行游戏了。本游戏采用的简便的操作,保留了大部分人的按键习惯。不仅可以用VK_UP、VK_DOWN、VK_RIGHT、VK_LEFT等按键来进行操作,还可以使用游戏中惯用的W、A、S、D等按键来进行上下左右操作.并且采用的数据库MySql和Acess能够对用户的成绩进行保存,方便用户查看成绩记录。4.1.1 游戏运行界面 4.1。2 分数查看界面4.2类的详细设计4。2.1 MyPlane类1UML类图2。 详细分析(1)成员变量x,y是int类型的变量,用来记录我方战机的当前位置,进行位图绘制。du,dd,dr,dl是boolean类型的变量,用来判断我方战机正在向那

15、一个方向行进,一直按下某一个方向,将会向那个方向一直行进,直到边界。MYPLANE_XSPEED, MYPLANE_YSPEED是int类型的变量,作用是控制我方战机横向和纵向的运行速度,保证一定的速率移动。live是boolean类型的变量,作用是判断我方战机是否死亡.(2)成员方法MyPlane(int x,int y)构造函数,初始化我方战的位置,使之居于中央。draw(Graphics g)绘图方法,我方战机位置改变时重新绘制。keyPressed(KeyEvent e)按键方法,键盘上按下相应的键码进行相应的移动。keyReleased(KeyEvent e)按键释放方法,按键释放使

16、之不再移动.move()战机移动方法,键按下后进行移动。getX()获得战机的横向位置。getY()获得战机的纵向位置。isLive()战机是否存活。setLive(boolean live)设置飞机存活状态。4。2。2 Bullet1UML类图2. 详细分析(1) 成员变量BULLET_SPEED为int类型变量,初始为15.战机发射子弹的速率.x,y为int类型变量,记录子弹的位置。live为boolean类型的变量,判断子弹是否为有效状态。bullet为Image类型变量,加载的子弹类图。(2) 成员方法Bullet(int x,int y)构造方法,子弹位图绘制的位置。draw(Gra

17、phics g)绘制子弹位图的方法.isLive()判断子弹是否为有效状态.setLive(boolean live)设置子弹是否有效。getX(),getY()获得子弹的位置坐标。4.2。3 EnemyBullet1UML类图2。 详细分析(1)成员变量x,y为int类型变量,记录敌机位置坐标。bulletspeed为int类型变量,初始值为15,用来设置子弹速度的变量。live为boolean类型变量,判断子弹是否为有效状态。enemyplanebullet为Image类型变量,敌机子弹所加载的位图.(2)成员方法EnemyBullet(int x,int y)构造方法,初始敌机子弹的位置

18、。draw(Graphics g)绘制敌机子弹的方法,用来重新绘制。isLive()敌机子弹是否为存活状态.setLive(boolean live)设置子弹的状态。getX(),getY()获取敌机子弹的坐标,用来重新绘制。4.2.4 EnemyPlane1UML类图2。 详细分析(1)成员变量xpeed为敌机的横向运动速度。yspeed这敌机的纵向运动速度.live为boolean类型变量,用来设置和判断敌机是否存活.fired 为boolean类型变量,判断敌机是否为开火状态。x,y为int类型变量,用来记录敌机的位置.enemy为 Image类型变量,用来加载敌机位图。rand 为Ra

19、ndom类型对象,用来产生随机数.(2)成员方法EnemyPlane(StartFrame sf)构造方法,用来初始化敌机。draw(Graphics g)方法用来重新绘制敌机,重绘方法。move()方法用来对敌机进行移动,移动方法。getx(),getY()方法用来获取敌机的位置。isLive()判断敌机是否为存活状态。setLive(boolean live)设置敌机是否为存活。getXpeed()得到敌机的横向运动速度。setXpeed(int xpeed)设置横向运动速度。getYspeed()得到纵向运动速度。setYspeed(int yspeed)设置纵向运动速度。isFired

20、()是否为开火状态。setFired(boolean fired)设置开火状态。4。2.5 Explode1UML类图2. 详细分析(1)成员变量x,y为int类型变量,记录爆炸位置.live 为boolean类型变量,判断爆炸状态.Explode1为Image类型对象,用来加载爆炸的位图。(2)成员方法Explode(int x,int y)构造方法,初始化爆炸位置及位图.draw(Graphics g)绘制方法,用来绘制爆炸位图。isLive()是否为存活状态。setLive(boolean live)设置是否为存活状态。getCount()得到爆炸次数。setCount()设置爆炸次数.

21、4.2。6 PlayMusic1UML类图2。 详细分析(1)成员变量musicFile为File类型对象,用来播放的文件。clip为 AudioClip类型对象,进行播放的对象。fileURI 为URI类型对象,文件的URI路径。fileURL 为URL类型对象,文件的URL路径。(2)成员方法PlayMusic(String music)构造方法,初始化播放的音频文件.play()播放方法,进行音频播放。stop()停止方法,音频停止方法。loop()循环方法,使音频循环播放.4。2。7 GameBox1UML类图2。 详细分析(1)成员变量GAME_WIDTH是int型变量 设置游戏面板

22、的宽度为800。GAME_HEIGHT 是int型变量设置面板的高度为600。f1I Image类型的对象,用来设置字体的颜色大小和行间距。backgroundimage 用来加载背景图片。plane Image类型变量,用来设置加载飞机的图片。PLANE_WIDTH int类型变量,用来设置飞机的高度。PLANE_HEIGHT int类型变量 用来设置飞机的宽度.Explode1 Image类型的对象。用来加载爆炸的图片。EXPLODE1_WIDTH int类型变量,用来设置爆炸的范围的高度。EXPLODE1_HEIGHT int类型变量,用来设置爆炸范围的宽度。Bullet Image类型

23、的对象,用来设置子弹需要加载的图片.BULLET_WIDTH int型变量,用来设置子弹的宽度。BULLET_HEIGHT int 型变量,用来设置子弹的高度。enemy1 Image类型的对象,用来设置敌机的宽度。enemy2 Image类型的对象,用来设置敌机的高度。enemybullet Image类型的对象,用来加载敌机发出的子弹.ENEMYBULLET_WIDTH int类型的变量,用来设置子弹的大小。ENEMYBULLET_HEIGHT int 类型的变量,用来设置子弹的大小。back_music 字符串类型变量,加载背景音乐。bomb_music字符串类型变量,加载子弹爆炸音乐.

24、4.2。8 DB1UML类图2。 详细分析(1)成员变量url为String类型对象,数据库URL路径.用来连接数据库。driver为String类型对象,加载数据库的驱动。conn为Connection类型对象,用来与数据库进行连接.stmt为Statement类型对象,用来操作Sql语句从而操纵数据库。(2)成员方法DB()构造方法,加载数据库驱动,实现数据库连接.excuteWrite(String name,String score)将数据写入数据库方法。excuteRead()从数据库中读取数据方法。4。2。9 StartFrame1UML类图2。 详细分析(1)成员变量bk为Ima

25、ge类型对象,用来加载游戏的背景位图。myplane为MyPlane类型对象,建立我方战机。sourse 为float类型变量,存储分数。death, life为我方战机死亡次数和生命值。bulletlist为 ArrayListBullet对象,用来存储子弹的线性表。explodelist 为ArrayList对象,用来存储爆炸对象的线性表。enemybulletlist为 ArrayListEnemyBullet对象,用来存储敌机子弹对象的线性表。exItem,score为Jmenu类型对象,菜单条目。jp为Jpanel对象,框架类的面板对象。db为DB对象,用来进行数据库操作。music

26、Background musicBomb为PlayMusic对象,用来播放背景音乐。(2)成员方法StartFrame()构造方法,初始化面板及位图.加载游戏界面。queryRecord()查询分数记录方法。void run()游戏进行线程方法,实现游戏的运行.clearEnemyBullet()清除无效的敌机子弹.clearBullet()清除无效的子弹.createBullet()创建子弹。clearEnemyplane()清除敌机状态为False的对象.clearExplode()清除爆炸状态为False的对象。hitPlane()攻击敌机的方法。impactMyplane()判断是否碰

27、撞。hitMyplane()我方战机被攻击的方法.endGame()结束游戏,扫尾方法。recored()记录成绩方法.ifEnd()判断是否结束。actionPerformed(ActionEvent e)菜单条目的动作事件实现方法。第五章 测试5.1 测试方案本游戏的测试方法采用检查各个功能,各个模块是否实现的方法。测试能否正常的运行,游戏是否流畅,是否会卡顿等一系列体验为测试主要因素。5。2 测试人员及目的测试人员:雷元刚 张柯测试目的:游戏功能实现、流畅度以及体验感。5.3 测试项目及功能5.3.1控制区功能测试VK_UP按键:实现飞机的向上运动VK_DOWN按键:实现飞机的向下运动V

28、K_LFET按键:实现飞机的向左运动VK_RIGHT按键:实现飞机的向右移动VK_UP及VK_LFET按键:实现飞机的左上飞行VK_DOWN及VK_LFET按键:实现飞机的左下飞机VK_UP及VK_RIGHT按键:实现飞机的右上飞行VK_DOWN及VK_RIGHT按键:实现飞机的右下飞行5.3。2菜单区功能测试分数菜单选项:查看游戏中保存的分数记录设置菜单选项:设置游戏中的背景音乐退出菜单选项:退出游戏5。3.3游戏区功能测试:敌机的正常行进以及我方战机的正常显示。5。3。4子弹的测试:敌机子弹的正常发射,我方战机的子弹正常发射。5。4 测试结果及分析测试1:控制区功能测试测试内容: 我方战机

29、的向上移动、向下移动、向左移动、向右移动、向左上移动、向左下移动、向右下移动、向右上移动的功能实现.测试目的:VK_UP、VK_DOWN、VK_LEFT、VK_RIGHT等四个功能按键.测试图:如图5. 4。1 图5。 4。1 控制区功能测试测试结果及分析:能够正确的通过WASD和方向键控制飞机的运动。测试2:菜单项功能测试。测试内容:对菜单项的各个菜单条目进行功能测试.点击相应的菜单条目,功能能否实现。测试目的:菜单项的各个功能实现.测试图如图5。4.2: 图5。4.2 数据保存测试结果及分析:能够正常显示分数,用户名。实现了该部分功能的需求测试3:显示区功能测试测试内容:我方战机和敌机的正常显示以及敌我双方子弹的正常行进.测试目的:通过测试,判断程序的功能是否正常测试图如图5。4.3: 图5.4.3 测试子弹功能测试结果及分析:通过测试,我方飞机和敌方飞机都能够正常发射子弹,子弹能够正确击中目标。第六章 小结在本次课程设计中,我们小组采用分工合作方式。在程序代码和设计报告书写中,小组两人均分工占比达到的50左右,在代码的设计以及调试中,互相学习交流,对程序代码中有迷糊时,通过讨论、查阅资料来解决这些问题,从而保证了进度.这次课程设计遇到了许多问题,这也充分暴露了Java知识存储量的不够,在一些Java基础知识上比较薄弱,不明以。通过了课

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

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