打飞机小游戏 Java课程设计.docx
《打飞机小游戏 Java课程设计.docx》由会员分享,可在线阅读,更多相关《打飞机小游戏 Java课程设计.docx(45页珍藏版)》请在冰豆网上搜索。
打飞机小游戏Java课程设计
四川理工学院
课程设计书
学院计算机学院
专业计算机科学与技术
班级计科2014级
题目打飞机小游戏
教师王非
学生雷元刚张柯
摘要
随着Java语言的兴起,越来越多的平台开始使用java语言编写的程序,虽然不及C语言的高效,但是Java拥有的平台无关性是其他平台所不能企及的。
几乎所有的银行系统都是运用Java来编写的,主要是因为其安全性较高。
Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
而运用Java编写图形化界面也是比较容易的,因为其有专门的框架和界面,这样使得几行代码就可以创建一个图形化界面了。
而本次要编写的打飞机小游戏,重复运用了图形化界面的知识,多线程,重画,添加监听器等。
锻炼了我们实践编写界面代码的能力,提高了我们对于图形化界面编程的理解和运用各种容器和组件来实现我们所需要的界面。
关键词:
打飞机,多线程,重画,图形化
第一章前言1
1.1开发背景1
1.1.1开发环境2
第二章需求分析2
2.1开发目的2
2.2系统需求分析2
2.3系统性能分析2
2.4系统模块分析3
第三章数据库设计4
3.1数据库概述4
3.2数据库设计4
第四章详细设计6
4.1游戏概要6
4.2类的详细设计6
4.2.1MyPlane类6
4.2.2Bullet7
4.2.3EnemyBullet8
4.2.4EnemyPlane8
4.2.5Explode10
4.2.6PlayMusic11
4.2.7GameBox11
4.2.8DB13
4.2.9StartFrame13
第五章测试15
第六章小结19
致谢20
参考文献21
附录22
第一章前言
随着网络的不断发展,在中国网民的数量越来越多。
人们也对于互联网所能提供的功能有了一定的要求,比如能够在线观看视频,在线游戏,大数据服务。
互联网经过短短几十年的发展,相比起当初,已经发生了翻天覆地的变化。
而游对于互联网的发展也有着一定的推动作用。
SQLServer是目前应用比较广泛的关系型数据库标准语言之一。
现在,SQL已成为国际标准语言,各种类型的计算机和DBS都采用SQL作为其存取语言和标准接口,从而使数据库世界有可能链接为一个统一的整体。
MicrosoftOfficeAccess是由微软发布的关系数据库管理系统。
它结合了MicrosoftJetDatabaseEngine和图形用户界面两项特点,是MicrosoftOffice的系统程序之一。
对于广大用户而言,Access数据库的操作简便,和Office一起安装的,所以也有广泛的通用性。
以数据库技术作为后台的可视化应用也越来越受到人们的喜爱,Java是目前应用比较流行的可视化编程软件之一。
它的功能强大,系统自带的代码较为齐,容易操作,受到很多用户的喜欢。
Java开发游戏也是比较容易的,对于广大的网民和学生,在工作之余能够玩玩游戏也是一种不错的选择的休闲的方式,并且伴随着网络的普及化,越来越多的人们开始加入到游戏的大军中来,所以开发一款适合的游戏显的尤为重要。
1.1开发背景
游戏自古以来就有,以前的象棋,围棋,到现在的军旗,跳跳棋。
毫不夸张的说,游戏是人类智慧的结晶,是我们休闲娱乐的一种方式。
数据库技术产生于20世纪60年代末70年代初,其主要目的是有效地管理和存取大量的数据资源.数据库技术主要研究如何存储,使用和管理数据.数年来,数据库技术和计算机网络技术的发展相互渗透,相互促进,已成为当今计算机领域发展迅速,应用广泛的两大领域.数据库技术不仅应用于事务处理,并且进一步应用到情报检索,人工智能,专家系统,计算机辅助设计等领域.
游戏加入数据库技术,能够在一定程度上减轻服务器的负担,提高服务器的负载能力。
有利用实现更好的用户体验和数据的离线保存,有助于对于游戏数据的分析和处理。
在大数据时代,对于数据的分析和处理显的更加重要。
1.1.1开发环境
Windos系统,JDK1.8,jre7,Access数据库,Mysql数据库,EclipseMARS软件一套。
1.2游戏功能简介
本游戏能够实现游戏和音乐同步播放,当飞机被摧毁是还有特殊音效。
加入了游戏数据保存到本地数据库的功能,能够保存在MYSQL以及ACCESS中,满足各种环境下的需求。
第二章需求分析
2.1开发目的
打飞机游戏,是我们儿时在游戏厅中经常玩的游戏。
它能勾起我们对于儿时的种种美好的回忆,而游戏本身难度适中,能够提升我们对于这种游戏的编写能力和逻辑思维能力。
打飞机游戏也需要多线程的支持,而Java对于多线程的支持程度是比较好的的。
2.2系统需求分析
1、功能需求
对于游戏结果的记录,判断是否有子弹击中飞机,判断是否2架飞机相撞。
2、可靠性可用性需求
能够在在程序异常的时候提示,在断电的情况下自动保存游戏数据。
3、出错处理需求
当游戏出错是,能够弹出一个对话框来提醒用户。
4、游戏数据的处理
对于生成的游戏数据,能够存入数据库的不同字段中。
能够记录游戏数据插入数据库中的时间。
2.3系统性能分析
为了保证系统能够长期、安全、稳定、可靠、高效地运行,本系统应该满足以下的性能需求。
(1)准确性和及时性
程序采用的是坐标定位的方式,对于碰撞检测还是比较全面,能够在一定的范围内检测,并提供了飞机碰撞检测和子弹碰撞检测这2种不同的检测方式。
(2)易用性
由于采用的2套数据库,能够保证数据部分的通用性,而java又是与平台无关性的,所有能够保证程序的易用性。
(3)安全性
将游戏的数据放入数据库中,能够增加数据的安全性,需要程序在连接数据库的时候输入密码。
2.4系统模块分析
1、子弹模块:
(1)用来管理自己的飞机所需要发出的子弹,放在Bulletlist的List类型的数组中。
并提供了draw()函数,用来画出不同位置的子弹并利用重画功能,实现子弹的移动。
(2)敌机子弹功能,也是相应的重画功能,并能够通过EnemyBullet()功能初始化敌机子弹的位置。
通过isLive()判读子弹是否有效。
getY(),getX()获取子弹的横坐标和纵坐标,为碰撞检测提供依据。
2、飞机模块:
(1)敌机管理
拥有1号级和2号级,并通过随机函数来调用不同的敌机出现在画面中。
draw()能够实现对于飞机的重画,实现敌机的下落功能。
(2)我机管理
我机也包含初始化的X方向和Y方向上的速度,并设置dl,du,dr,dd为false。
并添加了键盘监听器,能够对键盘的按钮做出响应,按下w,a,s,d分别对应的是飞机向上左下右移动。
(3)数据管理
对用户的信息和数据进行存入数据库的操作,和通过数据库调用用户数据。
第三章数据库设计
3.1数据库概述
数据库是整个系统的核心,它的设计直接关系系统执行的效率和系统的稳定性。
因此在软件系统开发中,数据库设计应遵循必要的数据库范式理论,以减少冗余、保证数据的完整性与正确性。
只有在合适的数据库产品上设计出合理的数据库模型,才能降低整个系统的编程和维护难度,提高系统的实际运行效率。
3.2数据库设计
(1)分数数据表如表3.1
表3.1分数数据表
字段名
数据类型
宽度
是否为空
说明
User_Name
varchar
10
不允许为空
记录者ID
User_Score
varchar
10
不允许为空
记录者成绩
(2)数据库管理软件采用Mysql或者Acess,通过这两款软件来管理程序中需要存储管理的数据,并且能够加强我们的数据库思维,为以后的开发打好基础。
数据库的详细代码设计如下:
packageTools;
publicclassDB{
privateStringurl="jdbc:
mysql:
//localhost:
3306/plane";
privateStringdriver="com.mysql.jdbc.Driver";
privateConnectionconn;
privateStatementstmt;
publicDB(){
try{
Class.forName(driver);
conn=DriverManager.getConnection(url,"root","123");
stmt=conn.createStatement();
System.out.println("数据库连接成功...........");
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}
}
publicbooleanexcuteWrite(Stringname,Stringscore){
Stringsql="insertintoscorevalues('"+name+"','"+score+"')";
try{
intresult=stmt.executeUpdate(sql);
System.out.println("Insert:
"+result);
returntrue;
}catch(SQLExceptione){
e.printStackTrace();
}
returnfalse;
}
publicStringexcuteRead(){
Stringsql="select*fromscore";
Stringname="",score="";
StringBufferend=newStringBuffer();
try{
ResultSetresult=stmt.executeQuery(sql);
while(result.next()){
name=result.getString
(1);
score=result.getString
(2);
end.append(name+"\t"+score+"\n");
}
}catch(SQLExceptione){
e.printStackTrace();
}
return(null==end)?
"--":
end.toString();
}
}
第四章详细设计
4.1游戏概要
程序启动后,进入游戏界面,用户就可以进行游戏了。
本游戏采用的简便的操作,保留了大部分人的按键习惯。
不仅可以用VK_UP、VK_DOWN、VK_RIGHT、VK_LEFT等按键来进行操作,还可以使用游戏中惯用的W、A、S、D等按键来进行上下左右操作。
并且采用的数据库MySql和Acess能够对用户的成绩进行保存,方便用户查看成绩记录。
4.1.1游戏运行界面
4.1.2分数查看界面
4.2类的详细设计
4.2.1MyPlane类
1.UML类图
2.详细分析
(1)成员变量
●x,y是int类型的变量,用来记录我方战机的当前位置,进行位图绘制。