基于Java的打砖块游戏开发.docx
- 文档编号:23318373
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:38
- 大小:229.47KB
基于Java的打砖块游戏开发.docx
《基于Java的打砖块游戏开发.docx》由会员分享,可在线阅读,更多相关《基于Java的打砖块游戏开发.docx(38页珍藏版)》请在冰豆网上搜索。
基于Java的打砖块游戏开发
北方民族大学
学士学位论文
论文题目基于JAVA的打砖块游戏开发
系(部)名称:
计算机科学与工程学院
学生姓名:
专业:
软件工程
学号:
指导教师姓名:
论文提交时间:
2014-5-7
论文答辩时间:
2014-5-17
学位授予时间:
北方民族大学教务处制
基于JAVA的打砖块游戏开发
摘要
打砖块是一款堪称经典的小游戏,在掌上游戏机上和许多手机上都能发现这个小游戏。
游戏基本内容是玩家通过控制一个能够左右移动的挡板,反弹正在运动中弹球,使之改变移动的方向,用小球消除游戏窗口里面的的砖块,然后到达下一关,在障碍物被消除的过程中,可能会产生一些能改变挡板或者小球状态的物品,例如:
挡板变长、变短,小球威力加强等等。
本系统是一个基于Java语言平台的打砖块游戏。
主要任务是设计打砖块游戏的算法,并使用JAVA语言编写程序,最终完成游戏编程,并使之能够正确运行。
主要是小球的碰撞检测和运动轨迹的算法,碰撞部分可以将小球看成一个矩形,当矩形的边界坐标与砖块、挡板、墙壁等一样时,可以判断为进行了碰撞,而运动轨迹只要在碰撞后将X轴或Y轴取反就可以了。
本文第一章阐述了选题目的及Java游戏目前的发展现状。
第二章介绍了Java语音的特点和基于Java游戏开发的相关的技术。
第三章详细介绍了打砖块游戏,包括游戏的规则和期待的效果等。
第四章进行打砖块游戏的具体设计与实现,包括界面的设计,类的设计,算法的设计等等。
第五章对游戏进行运行和测试,以期检测游戏中的各种问题。
期望通过本游戏实例掌握小型Java游戏开发和Java编程的基础的知识和技巧,使自己具备开发Java游戏基本能力。
关键字:
java,游戏设计,测试,打砖块,算法
Arkanoidjava-baseddevelopment
Abstract
Arkanoidisasmallclassicgamesonhandheldgameconsolesandmanymobilephonescanbefoundonthislittlegame.Thebasiccontentofthegamebycontrollingaplayercanmovearoundthebaffle,thereboundisinmotionpinball,makingchangesinthedirectionofmovement,eliminatingthebrickswithasmallballinsidethegamewindow,thenreachthenextlevel,theobstaclesprocessiseliminated,theshuttermaybesomechangeinthestateofpelletsorarticlessuchas:
thepaddlelength,shorter,andsoenhancethepoweroftheball.
ThissystemisaJava-basedplatformArkanoidgame.ThemaintaskistodesignalgorithmsArkanoidgameandusingJAVAprogramminglanguage,thefinalcompletionofgameprogramming,andenableittoruncorrectly.Themaincollisiondetectionalgorithmandthetrajectoryoftheball,theballcollisionportionmayberegardedasarectangle,thecoordinatesoftheboundaryrectanglewhenbricks,baffles,suchasawall,thecollisioncanbejudged,andexerciseJustafterthecollisiontrajectoryX-axisorY-axisinvertedit.
ThefirstchapterdescribesthepurposeofthetopicandthecurrentstatusofthedevelopmentofJavagames,thesecondchapterintroducestheJava-basedvoicefeaturesandrelatedtechnologiesJavagamedevelopment,thethirdlegdetailingArkanoidgames,includinggamesrulesandexpectationseffects,ChapterIVspecificdesignandimplementationofArkanoidgames,includinginterfacedesign,classdesign,algorithmdesign,etc.,thefifthchapterofthegamerunningandtestinginordertodetectgamevariousproblems.ExpectedbythegamemasterinstancesmallJavagamedevelopmentandJavaprogrammingbasedknowledgeandskills,sothattheyhavethebasicabilitytodevelopJavagames.
Keywords:
Java,GameDesign,GameTesting,Arkanoid,TheAlgorithm
第一章绪论
1.1选题的目的和意义
Java编程语言具有非常多的优点,它简单而健壮,高性能又可移植,面向对象、多线程和动态的语言等等。
随着Java语言的发展,如今,Java已经被广泛的运用于多种领域。
而且对基于Java语言的游戏需求量也越来越大。
随着人们生活质量的不断提高以及个人电脑和网络的普及,人们的业余生活质量要求也在不断提高,选择一款好玩,精美,画面和音质,品质优良的休闲游戏已经成为一种流行的休闲方式。
可以说在人们的日常生活中,除了工作、学习,玩自己喜欢的游戏正在成为一种时尚。
休闲类游戏可以说是最受各个年龄段的人们欢迎的一类游戏,可以想象大量六七十岁的老人都玩过打砖块,休闲类游戏给许多玩家们留下了一个美好的回忆。
打砖块游戏是一个很常见的游戏,游戏规则也非常简单。
本毕业设计使用java语言来开发一个打砖块游戏。
此项目的目的在于通过完成游戏项目,加深对Java的语法、算法等多方面的学习,深入了解图形用户界面的设计,并且熟练的使用编程软件,将书本上的理论知识应用到实践当中,来拿这款打砖块小游戏来验证下自己的学习的理论知识是否扎实。
希望通过这一次的毕业设计,让我在程序的设计和算法的设计上有进一步的认识,然后获得一定提高。
通过设计增加了我们的实际动手能力,对于我们以后工作能力和信心的培养有重要意义,进而与社会所需的人才相接轨。
更好的完善自己!
游戏是一种艺术,而Java是一种技术,集合不同的艺术门类,并把艺术与技术相结合,完成游戏的开发,游戏可以让人在疲倦或休闲之时获得轻松而又愉快的享受。
所以,开发出大家都比较喜欢的,高品质的,简单容易好玩的休闲游戏,将会受到人们的普遍欢迎。
让人们在工作学习之余,享受游戏的快乐,也是一款游戏真正成功的意义。
1.2游戏产业的发展现状
游戏的产业是新时代发展起来的行业,它的独特的力量使它在当今的娱乐领域占有一块非常大的比重,当前的种种原因使得用户可以选择的娱乐活动变少,这是游戏产业发展起来的一个原因,但是更大的原因是游戏具有非常大的吸引力,它可以让玩家消磨时间,可以让玩家在紧张的工作后获得放松,可以让玩家们相互沟通认识更多的朋友,它可以跨越地区的限制,使人们在世界的任意角落都可以相互娱乐。
游戏产业作为“第四产业”,更是促进高新技术不断升级发展,这也使之成为经济增长的一个支撑点
如今,小游戏、网页游戏深受广大网民欢迎,它方法简单,不需要繁复的注册下载等过程,而且游戏不乏经典。
随着手机产业的迅速发展,传统网游占据的空间不断的缩减,而网页游戏无需客户端的特性,也使得Web游戏可能会主宰网络游戏的市场。
目前,知识数据库广泛的被应用在企业系统,金融也等等封面,但是游戏知识数据下载还在处展初期。
如果利用游戏知识库的话,我们能更好的实现游戏规则处理。
开发出一款游戏后,再开发其他的同种类型的游戏,我们仅仅把游戏规则作改变,就能完成全部游戏的开发。
通过游戏知识数据库,我们可以快速的开发多款同类游戏,大大地缩减了游戏开发周期,游戏知识数据库在将来很有前景。
第二章游戏开发的环境及相关技术
本系统是基于Java语言开发的打砖块游戏,使用Eclipse作为开发工具,搭建游戏的开发环境,在整个系统的设计与实现过程中,需要使用到Java编程语言的基本知识,包括GUI、算法、线程等,并遵循它的一系列相关规范。
2.1开发环境
操作系统:
MicrosoftWindows7
开发语言:
Java
JDK版本:
JDK1.7
2.2Java语言特点
1.Java语言是强制面向对象的。
Java语言提供了类和继承和借口原语,为了方便,只能允许类间的单继承,但是,它支持接口的多继承,而且支持类和接口之间的实现机制。
Java是纯面向对象的。
2.Java语言是健壮的。
Java会强类型,异常处理和垃圾的自动收集等是Java程序健壮性的重要保证。
Java丢弃了指针,是个非常明智的决定。
安全检查机制使Java具有更强的健壮性。
3.Java语言是可移植的。
Java可移植性源于体系结构的中立。
Java严格规定了各个基本数据类型的长度。
Java系统本身也具有很强的可移植性。
4.Java语言是解释型的。
Java程序在Java平台上被编译为字节码格式(class文件),然后就可以在实现Java平台的所有系统中运作。
Java平台中的Java解释器对节码进行解释执行,执行过程中需要的类在联接阶段把执行过程中需要的类载入到运行环境中。
5.Java语言是原生支持多线程的。
Java的线程是一种特殊的对象,由Thread类或者它的子(孙)类建立。
另外Thread类实现了Runable接口,所以,每个线程均有它独自的run方法,run方法中包含了运行线程所需代码。
线程活动由方法来控制。
Java语言可以同步运行多个线程,将提供多线程同步机制。
2.3GUI介绍
图形用户界面(GraphicalUserInterface,简称GUI)将计算机用户的界面用图形显示。
图形界面相对于命令行界面,更加简单直观,更容易使用户在视觉上接受。
GUI的广泛应用,可以说是计算机发展的重大成就,让非专业用户也可以流畅的使用计算机。
人们可以通过菜单、界面、按钮等途径来进行方便的控制,取代了大量的需要死记硬背的命令。
而嵌入式GUI几个基本方面的要求如下:
轻便、资源占用率少、高性能、高可靠、方便移植、可以配置。
第三章打砖块游戏介绍
打砖块游戏(英文:
Arkanoid)是一款堪称经典的小游戏,曾经流行在老式掌上游戏机上面。
这款游戏上手非常简单,操作简单又变换无,十分耐玩,所以它一出现很快便风靡一时。
3.1打砖块游戏的规则
打砖块游戏的规则比较简单,游戏基本内容是玩家通过控制一个能够左右移动的挡板,反弹正在运动中的球,使之改变移动的方向,用小球消除游戏窗口里面的砖块,然后到达下一关,在障碍物被消除的过程中,可能会使小球和挡板产生一些变化,例如:
挡板变长、变短,小球威力加强等等。
下面对游戏的规则做一个详细的说明:
(1)游戏主界面,是一个的矩形区域,固定其大小:
宽度为400,高度为500;
(2)挡板位于界面最下方,可以水平移动,挡板会将下落的小球反弹,让小球继续运动;
(3)砖块位于界面的上方,每一关的数量和排列方式都不同。
(4)小球会在界面上、左、右边界和挡板、砖块之间来回弹跳,小球碰到边界和挡板会反弹,碰到砖块会将砖块消除再反弹。
如果小球掉落到挡板下方,会失去生命,小球生命值为0时游戏结束。
(5)小球每击碎一块砖块都会增加分数。
(6)有一些特殊颜色的砖块,当小球击碎塔门时会产生各种变化,比如小球速度加快减慢,或者是挡板的长度增加或减短。
打砖块游戏非常经典,但是版本也很多,某些规则可能不同,但最基本的规则是不会改变的。
3.2打砖块游戏预期的效果
打砖块游戏系统界面的布局应尽可能的做到合理、美观。
具体针对本次设计,游戏的基本要求包括下面几点:
(1)游戏基本功能(方块的操作):
挡板左右移动、发射小球等,要求用鼠标或者方向键都能操作。
(2)游戏界面:
游戏界面要显示小球的生命值(剩余小球数量),得分,关卡。
(3)游戏随关卡等级提升使难度有所增加。
(4)游戏分数的统计。
(5)暂停游戏/继续游戏、退出游戏。
(6)砖块消除,挡板与小球碰撞,关卡升级都会有不同的声音。
(7)游戏能流畅的运行
游戏启动后,点击鼠标或者按空格键,发射小球,小球碰到砖块会将砖块消除,并同时增加得分,清除掉所有砖块,进入下一关,通过最后一关后游戏胜利,如果挡板没有在小球下落时挡住小球,小球生命值减少,小球生命值为0时,游戏结束。
第四章打砖块游戏的设计与实现
系统设计是经过系统分析,然后由抽象至具体的过程,本阶段的主要目标是把在分析阶段中的抽象概念化作能够实现,使之成为有具体功能的模块,提供支持给系统代码设计。
在系统设计的阶段种,应该尽可能全面的思考全系统的功能与需求,由于情况的不同,有时还要考虑到系统性能。
打砖块游戏的画面简单,功能也不怎么复杂,系统资源占用很少,所以,在这里不过于考虑性能需求,下面对游戏的详细设计过程做一个说明。
4.1游戏模块设计
4.1.1游戏界面绘制模块
界面绘制模块的作用是负责游戏界面的显示。
游戏界面为一矩形窗口。
游戏界面内容:
1.游戏信息:
小球生命值显示、游戏得分、游戏等级,随着游戏不断更新;
2.游戏功能:
砖块、小球、挡板;
3.游戏提示信息,当游戏开始后会隐藏。
游戏界面如图4.1,灰色区域为游戏功能区
图4-1游戏界面设计
4.1.2游戏操作模块
游戏操作模块,包括砖块的生成,挡板的生成,挡板的移动,小球的运动,消除砖块,游戏得分,游戏等级等。
要特别注意小球与挡板移动后会不会超出操作区域等问题。
游戏过程中,玩家是通过键盘或鼠标控制游戏。
玩家输入操作命令,程序接收并做出响应。
下面列出鼠标、键盘的按键和对应的功能:
(1)左右方向键或鼠标左右移动:
挡板左右移动;
(2)空格键或鼠标左键:
弹出小球,开始游戏
(3)R键:
游戏重新开始;
(4)CTRL键:
发射子弹(子弹可以消除小球)。
4.2类的设计
本论文共设计了7个类,分别是GameFrame,GamePanel,Pad,Block,Bullet,Ball,SoundPlayer类,每个类具体如下:
(1)GameFrame类:
游戏窗口类,如图4-2;
图4-2GameFrame类的方法
(2)GamePanel类:
游戏界面类,如图4-3;
图4-3GamePanel类的方法
(3)Pad类:
挡板类,如图4-4;
图4-4Pad类的方法
(4)Block类:
砖块类,如图4-5;
图4-5Block类的方法
(5)Bullet类:
子弹类,如图4-6;
图4-6Bullet类的方法
(6)Ball类:
小球类,如图4-7;
图4-7Ball类的方法
(7)SoundPlayer:
声音控制类,如图4-8;
图4-8SoundPlayer声音类
GameFrame类是游戏窗口启动类,在启动时会调用GamePanel类,绘制游戏启动界面,GamePanel类继续调用其他类,最终实现游戏功能。
4.3代码实现
这一部分将会对游戏中的类的功能做出介绍,并给出关键部分的代码实现。
4.3.1GameFrame类
GameFrame是创建一个JFrame主界面,设置主界面的标题、长与宽、窗口监听、画板等属性、窗口监听
这是一个标准的游戏窗口绘制类,可以在多处使用。
【代码实现】
publicclassGameFrame{
publicGameFrame(){
Frameapp=newFrame("打砖块");
app.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
app.setLocation(200,100);
GamePanelgamePanel=newGamePanel();
app.add(gamePanel,BorderLayout.CENTER);
app.pack();
app.setVisible(true);
gamePanel.gameStart();
}
publicstaticvoidmain(Stringargs[]){
newGameFrame();
}
}
4.3.2GamePanel类
GamePanel类是游戏界面类,这个类处理了这个游戏中的大部分业务功能
(1)游戏提示。
打开游戏后,在游戏界面中间显示“UseKeyboradOrMousetoControlThePad”,游戏通关后,在有些界面中间显示“YOUWIN”和“PressRToRestartGame”。
如图4-9
本段代码使用if语句,对游戏状态判断,初始时和游戏胜利时显示不同的提示,使用setColour和drawString方法进行文字的绘制
图4-9游戏界面的提示信息
【代码实现】
publicvoidtips(){
graphics.setColor(Color.GRAY);
if(tips==true){
graphics.drawString("Usemouseorkeyboardtocontrolthepad",
width/2-200,height/2+40);
}
if(win==true){
graphics.setColor(Color.white);
graphics.drawString("YOUWIN",width/2-40,height/2+40);
graphics.drawString("PressRtoRestartGame",width/2-110,
height/2+70);
}
(2)游戏界面的设置
在游戏界面上显示生命值、得分、等级的信息。
如图4-10
本段代码用到了GradientPaint类,可以控制颜色的渐变效果,其构造函数GradientPaint(floatx1,floaty1,Colorcolor1,floatx2,floaty2,Colorcolor2)。
图4-10游戏界面生命、得分、等级
【代码实现】
//绘制生命值、得分、等级信息
graphics.drawString("生命值",0,37);
graphics.drawString("得分"+Score,200,37);
graphics.drawString("等级"+level,400,37);
Graphics2Dgraphics2=(Graphics2D)graphics;
for(inti=1;i<=4-fallTimes;i++){
GradientPaintwhiteToGray=newGradientPaint(i*40,20,Color.white,i*40+20,40,Color.gray);
graphics2.setColor(pinkToRed);
graphics.fillOval(i*40,20,20,20);
}
//失败次数超过四次,提示游戏失败。
if(fallTimes>=4){
graphics.setColor(Color.white);
graphics.setFont(newFont("Arial",Font.BOLD,40));
graphics.drawString("YouLose!
",width/2-50,height/2);
graphics.setFont(newFont("Arial",Font.BOLD,20));
graphics.drawString("PressRtorestrart",width/2-70,height/2+40);
}
}
(3)判断游戏是否结束,计算剩余砖块的数目,第一关时,如果砖块数目为0,游戏继续进行到第二关,第二关时,如果砖块数目为0,游戏结束。
游戏得分的计算,每个砖块计10分,得分为:
(砖块总数-当前数量)*10
【代码实现】
publicvoidisGameOver(){
intcountBlock=0;
for(inti=0;i<=block.blockNumber;i++){
if(block.exist[i]==true){
countBlock++;
score=(block.blockNumber-countBlock++)*10
}
}
if(countBlock==0){
if(level==2){
reStart=false;
gameOver=true;
ballMove=false;
win=true;
}
if(level==1){
sound.loadSound("Sounds/level2.wav");
sound.playSound();
level=2;
ballnum=3;
ball=newBall[ballnum];
reSetGame();
}
}
fail();
}
(4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Java 砖块 游戏 开发