打飞机小游戏Java课程设计报告书.doc
《打飞机小游戏Java课程设计报告书.doc》由会员分享,可在线阅读,更多相关《打飞机小游戏Java课程设计报告书.doc(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.四 川 理 工 学 院课 程 设 计 书学院 计算机学院 专业计算机科学与技术班级 计科2014级题目 打飞机小游戏 教师王非学生 雷元刚 柯 摘要随着Java语言的兴起,越来越多的平台开始使用java语言编写的程序,虽然不及C语言的高效,但是Java拥有的平台无关性是其他平台所不能企及的。几乎所有的银行系统都是运用Java来编写的,主要是因为其安全性较高。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动和互联网,同时拥有全球最大的开发者专业社群。而运用Java编写图形化界面也是比较容易的,因为其有专门的框架和界面,这样使得
2、几行代码就可以创建一个图形化界面了。而本次要编写的打飞机小游戏,重复运用了图形化界面的知识,多线程,重画,添加监听器等。锻炼了我们实践编写界面代码的能力,提高了我们对于图形化界面编程的理解和运用各种容器和组件来实现我们所需要的界面。关键词:打飞机,多线程,重画,图形化目录第一章前言11.1开发背景11.1.1开发环境2第二章需求分析22.1 开发目的22.2 系统需求分析22.3 系统性能分析22.4 系统模块分析3第三章数据库设计43.1 数据库概述43.2数据库设计4第四章详细设计64.1 游戏概要64.2类的详细设计64.2.1 MyPlane类64.2.2 Bullet74.2.3 E
3、nemyBullet84.2.4 EnemyPlane84.2.5 Explode104.2.6 PlayMusic114.2.7 GameBox114.2.8 DB134.2.9 StartFrame13第五章测试15第六章小结19致20参考文献21附录2261 / 64第一章 前言随着网络的不断发展,在中国网民的数量越来越多。人们也对于互联网所能提供的功能有了一定的要求,比如能够在线观看视频,在线游戏,大数据服务。互联网经过短短几十年的发展,相比起当初,已经发生了翻天覆地的变化。而游对于互联网的发展也有着一定的推动作用。SQL Server是目前应用比较广泛的关系型数据库标准语言之一。现在
4、,SQL已成为国际标准语言,各种类型的计算机和DBS都采用SQL作为其存取语言和标准接口,从而使数据库世界有可能为一个统一的整体。Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点,是 Microsoft Office 的系统程序之一。对于广大用户而言,Access数据库的操作简便,和Office一起安装的,所以也有广泛的通用性。以数据库技术作为后台的可视化应用也越来越受到人们的喜爱,Java是目前应用比较流行的可视化编程软件之一。它的功能强大,系统自带的代码较为齐,容易操
5、作,受到很多用户的喜欢。Java开发游戏也是比较容易的,对于广大的网民和学生,在工作之余能够玩玩游戏也是一种不错的选择的休闲的方式,并且伴随着网络的普及化,越来越多的人们开始加入到游戏的大军中来,所以开发一款适合的游戏显的尤为重要。1.1开发背景游戏自古以来就有,以前的象棋,围棋,到现在的军旗,跳跳棋。毫不夸的说,游戏是人类智慧的结晶,是我们休闲娱乐的一种方式。数据库技术产生于20世纪60年代末70年代初,其主要目的是有效地管理和存取大量的数据资源.数据库技术主要研究如何存储,使用和管理数据. 数年来,数据库技术和计算机网络技术的发展相互渗透,相互促进,已成为当今计算机领域发展迅速,应用广泛的
6、两大领域.数据库技术不仅应用于事务处理,并且进一步应用到情报检索,人工智能,专家系统,计算机辅助设计等领域.游戏加入数据库技术,能够在一定程度上减轻服务器的负担,提高服务器的负载能力。有利用实现更好的用户体验和数据的离线保存,有助于对于游戏数据的分析和处理。在大数据时代,对于数据的分析和处理显的更加重要。1.1.1开发环境Windos系统,JDK1.8,jre7,Access数据库,Mysql数据库,Eclipse MARS软件一套。1.2游戏功能简介本游戏能够实现游戏和音乐同步播放,当飞机被摧毁是还有特殊音效。加入了游戏数据保存到本地数据库的功能,能够保存在MYSQL以及ACCESS中,满足
7、各种环境下的需求。第二章 需求分析2.1 开发目的打飞机游戏,是我们儿时在游戏厅中经常玩的游戏。它能勾起我们对于儿时的种种美好的回忆,而游戏本身难度适中,能够提升我们对于这种游戏的编写能力和逻辑思维能力。打飞机游戏也需要多线程的支持,而Java对于多线程的支持程度是比较好的的。2.2 系统需求分析 1、功能需求对于游戏结果的记录,判断是否有子弹击中飞机,判断是否2架飞机相撞。2、可靠性可用性需求能够在在程序异常的时候提示,在断电的情况下自动保存游戏数据。3、出错处理需求当游戏出错是,能够弹出一个对话框来提醒用户。4、游戏数据的处理对于生成的游戏数据,能够存入数据库的不同字段中。能够记录游戏数据
8、插入数据库中的时间。2.3 系统性能分析为了保证系统能够长期、安全、稳定、可靠、高效地运行,本系统应该满足以下的性能需求。(1) 准确性和及时性程序采用的是坐标定位的方式,对于碰撞检测还是比较全面,能够在一定的围检测,并提供了飞机碰撞检测和子弹碰撞检测这2种不同的检测方式。(2) 易用性 由于采用的2套数据库,能够保证数据部分的通用性,而java又是与平台无关性的,所有能够保证程序的易用性。(3)安全性将游戏的数据放入数据库中,能够增加数据的安全性,需要程序在连接数据库的时候输入密码。2.4 系统模块分析1、子弹模块:(1) 用来管理自己的飞机所需要发出的子弹,放在Bulletlist的Lis
9、t类型的数组中。并提供了draw()函数,用来画出不同位置的子弹并利用重画功能,实现子弹的移动。(2) 敌机子弹功能,也是相应的重画功能,并能够通过EnemyBullet()功能初始化敌机子弹的位置。通过isLive()判读子弹是否有效。getY(),getX()获取子弹的横坐标和纵坐标,为碰撞检测提供依据。2、飞机模块:(1)敌机管理拥有1号级和2号级,并通过随机函数来调用不同的敌机出现在画面中。draw()能够实现对于飞机的重画,实现敌机的下落功能。(2)我机管理 我机也包含初始化的X方向和Y方向上的速度,并设置dl,du,dr,dd为false。并添加了键盘监听器,能够对键盘的按钮做出响
10、应,按下w,a,s,d分别对应的是飞机向上左下右移动。(3)数据管理对用户的信息和数据进行存入数据库的操作,和通过数据库调用用户数据。第三章 数据库设计3.1 数据库概述 数据库是整个系统的核心,它的设计直接关系系统执行的效率和系统的稳定性。因此在软件系统开发中,数据库设计应遵循必要的数据库式理论,以减少冗余、保证数据的完整性与正确性。只有在合适的数据库产品上设计出合理的数据库模型,才能降低整个系统的编程和维护难度,提高系统的实际运行效率。3.2数据库设计(1)分数数据表 如表3.1表3.1分数数据表字段名数据类型宽度是否为空说明User_Namevarchar10不允许为空记录者IDUser
11、_Scorevarchar10不允许为空记录者成绩(2)数据库管理软件采用Mysql或者Acess,通过这两款软件来管理程序中需要存储管理的数据,并且能够加强我们的数据库思维,为以后的开发打好基础。数据库的详细代码设计如下:package Tools;public class DB private String url=jdbc:mysql:/localhost:3306/plane;private String driver=.mysql.jdbc.Driver;private Connection conn;private Statement stmt;public DB()try Cla
12、ss.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 name,String score)String sql=insert into scor
13、e 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=,score=;StringBuffer end=new StringBuffer();try ResultSet resul
14、t=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 游戏概要 程序启动后,进入游戏界面,用户就可以进行游戏了。本游戏采用的简便的操作,保留了大部分人的按键习惯。不仅可以用VK_UP、VK_DOWN、VK_RIGHT、VK
15、_LEFT等按键来进行操作,还可以使用游戏中惯用的W、A、S、D等按键来进行上下左右操作。并且采用的数据库MySql和Acess能够对用户的成绩进行保存,方便用户查看成绩记录。4.1.1游戏运行界面4.1.2分数查看界面4.2类的详细设计4.2.1MyPlane类1UML类图2. 详细分析(1) 成员变量l x,y是int类型的变量,用来记录我方战机的当前位置,进行位图绘制。l du,dd,dr,dl是boolean类型的变量,用来判断我方战机正在向那一个方向行进,一直按下某一个方向,将会向那个方向一直行进,直到边界。l MYPLANE_XSPEED, MYPLANE_YSPEED是int类型
16、的变量,作用是控制我方战机横向和纵向的运行速度,保证一定的速率移动。l live是boolean类型的变量,作用是判断我方战机是否死亡。(2) 成员方法l MyPlane(int x,int y)构造函数,初始化我方战的位置,使之居于中央。l draw(Graphics g)绘图方法,我方战机位置改变时重新绘制。l keyPressed(KeyEvent e)按键方法,键盘上按下相应的键码进行相应的移动。l keyReleased(KeyEvent e)按键释放方法,按键释放使之不再移动。l move()战机移动方法,键按下后进行移动。l getX()获得战机的横向位置。l getY()获得战
17、机的纵向位置。l isLive()战机是否存活。l setLive(boolean live)设置飞机存活状态。4.2.2Bullet1UML类图2. 详细分析(1) 成员变量l BULLET_SPEED为int类型变量,初始为15.战机发射子弹的速率。l x,y为int类型变量,记录子弹的位置。l live为boolean类型的变量,判断子弹是否为有效状态。l bullet为Image类型变量,加载的子弹类图。(2) 成员方法l Bullet(int x,int y)构造方法,子弹位图绘制的位置。l draw(Graphics g)绘制子弹位图的方法。l isLive()判断子弹是否为有效状
18、态。l setLive(boolean live)设置子弹是否有效。l getX(),getY()获得子弹的位置坐标。4.2.3EnemyBullet1UML类图2. 详细分析(1) 成员变量l x,y为int类型变量,记录敌机位置坐标。l bulletspeed为int类型变量,初始值为15,用来设置子弹速度的变量。l live为boolean类型变量,判断子弹是否为有效状态。l enemyplanebullet为Image类型变量,敌机子弹所加载的位图。(2) 成员方法l EnemyBullet(int x,int y)构造方法,初始敌机子弹的位置。l draw(Graphics g)绘制
19、敌机子弹的方法,用来重新绘制。l isLive()敌机子弹是否为存活状态。l setLive(boolean live)设置子弹的状态。l getX(),getY()获取敌机子弹的坐标,用来重新绘制。4.2.4EnemyPlane1UML类图2. 详细分析(1) 成员变量l xpeed为敌机的横向运动速度。l yspeed这敌机的纵向运动速度。l live为boolean类型变量,用来设置和判断敌机是否存活。l fired 为boolean类型变量,判断敌机是否为开火状态。l x,y为int类型变量,用来记录敌机的位置。l enemy为 Image类型变量,用来加载敌机位图。l rand 为R
20、andom类型对象,用来产生随机数。(2) 成员方法l EnemyPlane(StartFrame sf)构造方法,用来初始化敌机。l draw(Graphics g)方法用来重新绘制敌机,重绘方法。l move()方法用来对敌机进行移动,移动方法。l getx(),getY()方法用来获取敌机的位置。l isLive()判断敌机是否为存活状态。l setLive(boolean live)设置敌机是否为存活。l getXpeed()得到敌机的横向运动速度。l setXpeed(int xpeed)设置横向运动速度。l getYspeed()得到纵向运动速度。l setYspeed(int y
21、speed)设置纵向运动速度。l isFired()是否为开火状态。l setFired(boolean fired)设置开火状态。4.2.5Explode1UML类图2. 详细分析(1) 成员变量l x,y为int类型变量,记录爆炸位置。l live 为boolean类型变量,判断爆炸状态。l Explode1为Image类型对象,用来加载爆炸的位图。(2) 成员方法l Explode(int x,int y)构造方法,初始化爆炸位置及位图。l draw(Graphics g)绘制方法,用来绘制爆炸位图。l isLive()是否为存活状态。l setLive(boolean live)设置是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 飞机 小游戏 Java 课程设计 报告书
限制150内