基于java的打砖块游戏毕业论文内容摘要:

设计与实现 系统设计是经过系统分析,然后由抽象至具体的过程,本阶段的主要目标是把在分析阶段中的抽象概念化作能够实现,使之成为有具体功能的模块,提供支持给系统代码设计。 在系统设计的阶段种,应该尽可能全面的思考全系统的功能与需求,由于情况的不同,有时还要考虑到系统性能。 打砖块游戏的画面简单,功能也不怎么复杂,系统资源占用很少,所以,在这里不过于考虑性能需求,下面对游戏的详细设计过程做一个说明。 游戏模块设计 游戏界面绘制模块 界面绘制模块的作用是负责游戏界面的显示。 游戏界面为一矩形窗口。 游戏界面内容: 1. 游戏信息:小球生命值显示、游戏得分、游戏等级,随着游戏不断更新; 2. 游戏功能:砖块、小球、挡板; 3. 游戏提示信息,当游戏开始后会隐藏。 游戏界面如图 ,灰色区域为游戏功能区 基于 Java 的打砖块游戏开发 8 图 41 游戏界面设计 游戏操作模块 游戏操作模块,包括砖块的生成,挡板的生成,挡板的移动,小球的运动,消除砖块,游戏得分,游戏等级等。 要特别注意小球与挡板移动后会不会超出操作区域等问题。 游戏过程中,玩家是通过键盘或鼠标控制游戏。 玩家输入操作命令,程序接收并做出响应。 下面列出鼠标、键盘的按键和对应的功能: ( 1)左右方向键或鼠标左右移动:挡板左右移动; ( 2)空格键或鼠标左键:弹出小球,开始游戏 ( 3) R 键:游戏重新开始; ( 4) CTRL 键:发射子弹(子弹可以消除小球)。 类的设计 本 论 文 共 设 计 了 7 个 类 , 分 别 是 GameFrame, GamePanel, Pad,Block,Bullet,Ball,SoundPlayer 类,每个类具体如下: 基于 Java 的打砖块游戏开发 9 ( 1) GameFrame 类:游戏窗口类,如图 42; 图 42 GameFrame类的方法 ( 2) GamePanel 类:游戏界面类 ,如图 43; 图 43 GamePanel类的方法 ( 3) Pad 类:挡板类,如图 44; 图 44 Pad类的方法 ( 4) Block 类:砖块类,如图 45; 基于 Java 的打砖块游戏开发 10 图 45 Block类的方法 ( 5) Bullet 类:子弹类,如图 46; 图 46 Bullet类的方法 ( 6) Ball 类:小球类,如图 47; 图 47 Ball类的方法 (7) SoundPlayer:声音控制类,如图 48; 图 48 SoundPlayer声音类 GameFrame 类是游戏窗口启动类,在启动时会调用 GamePanel 类,绘制游戏启动界面, GamePanel 类继续调用其他类,最终实现游戏功能。 代码实现 这一部分将会对游戏中的类的功能做出介绍,并给出关键部分的代码实现。 GameFrame 类 GameFrame 是创建一个 JFrame 主界面,设置主界面的标题、长与宽、窗口基于 Java 的打砖块游戏开发 11 监听、画板等属性、窗口监听 这是一个标准的游戏窗口绘制类,可以在 多处使用。 【代码实现】 public class GameFrame { public GameFrame() { Frame app = new Frame(打砖块 )。 (new WindowAdapter() { public void windowClosing(WindowEvent e) { (0)。 } })。 (200,100)。 GamePanel gamePanel = new GamePanel()。 (gamePanel,)。 ()。 (true)。 ()。 } public static void main(String args[]) { new GameFrame()。 } } GamePanel 类 GamePanel 类是游戏界面类,这个类处理了这个游戏中的 大部分业务功能 ( 1) 游戏提示。 打开游戏后,在游戏界面中间显示 “ Use Keyborad Or Mouse to Control The Pad” ,游戏通关后,在有些界面中间显示“ YOU WIN”和“ Press R To Restart Game”。 如图 49 本段代码使用 if语句,对游戏状态判断,初始时和游戏胜利时显示不同的提示,使用 setColour和 drawString方法进行文字的绘制 基于 Java 的打砖块游戏开发 12 图 49 游戏界面的提示信息 【代码实现】 public void tips() { ()。 if (tips == true) { (Use mouse or keyboard to control the pad, width / 2 200, height / 2 + 40)。 } if (win == true) { ()。 (YOU WIN, width / 2 40, height / 2 + 40)。 (Press R to Restart Game, width / 2 110, height / 2 + 70)。 } ( 2)游戏界面的设置 在游戏界面上显示生命值、得分、等级的信息。 如图 410 本段代码用到了 GradientPaint类,可以控制颜色的渐变效果, 其构造函数GradientPaint(float x1, float y1, Color color1, float x2, float y2, Color color2)。 图 410 游戏界面生命、得分、等级 【代码实现】 //绘制生命值、得分、等级信息 (生命值 ,0,37)。 基于 Java 的打砖块游戏开发 13 (得分 +Score,200,37)。 (等级 + level, 400, 37)。 Graphics2D graphics2 = (Graphics2D)graphics。 for(int i = 1。 i = 4 fallTimes。 i++) { GradientPaint whiteToGray = new GradientPaint(i*40,20,i*40+20,40,)。 (pinkToRed)。 (i*40,20,20,20)。 } //失败次数超过四次,提示游戏失败。 if(fallTimes = 4) { ()。 (new Font(Arial,40))。 (You Lose!, width/2 50, height/2)。 (new Font(Arial,20))。 (Press R to restrart, width/270, height/2 + 40)。 } } ( 3) 判断游戏是否结束 ,计算剩余砖块的数目,第一关时,如果砖块数目为 0,游戏继续进行到第二关,第二关时,如果砖块数目为 0,游戏结束。 游戏得分的计算,每个砖块计 10分,得分为:(砖块总数 当前数量) *10 【代码实现】 public void isGameOver() { int countBlock = 0。 for(int i = 0。 i =。 i++) { if([i] == true) { countBlock++。 score=( ++)*10 } } if(countBlock == 0) { if (level == 2) { reStart = false。 基于 Java 的打砖块游戏开发 14 gameOver = true。 ballMove = false。 win = true。 } if (level == 1) { (Sounds/)。 ()。 level = 2。 ballnum = 3。 ball = new Ball[ballnum]。 reSetGame()。 } } fail()。 } ( 4) 键盘按键设置。 按键控制挡板的移动,当游戏正常进行时,按空格键使小球开始移动,按下左右方向键,使挡板左右移动,按下空格键时,小球开始运动,按下 R键时,游戏重新开始。 【代码实现】 public void keyPressed(KeyEvent e) { //ASCII码 int keycode = ()。 if(keycode==){ if(!gameOver) { Bullet bul=new Bullet(this,pad,block)。 (bul)。 =true。 =。 =。 } } if (keycode == ) { padMoveRight = true。 } 基于 Java 的打砖块游戏开发 15 if (keycode == ) { padMoveLeft = true。 } if (keycode == ) { for (int i = 0。 i ballnum。 i++) { ball[i].ballMove = true。 } tips = false。 } if (keycode == ) { level = 1。 reSetGame()。 reStart = true。 gameOver = false。 fallTimes = 0。 ballNumber = 2。 } } public void keyReleased(KeyEvent e) { int keycode = ()。 if (keycode == ) { padMoveRight = false。 } if (keycode == ) { padMoveLeft = false。 } } ( 5) 鼠标设置 (控制挡板移动),分别设置第一关和第二关的挡板移动速度,设置挡板不能超过边界 当挡板的坐标超出左边界时,强制其坐标为 0,挡板超出右边界时,强制其坐标为(界面宽度 挡板长度) 【代码实现】 public void mouseMoved(MouseEvent arg0) { if (!gameOver) { if (level == 1) { 基于 Java 的打砖块游戏开发 16 = () 75。 } else = () 60。 if ( + = width) { = width。 } if ( = 0) { = 0。 } } } Pad 类 Pad 类是挡板类,主要设计挡板的大小、颜色和移动的速度与方向。 挡板的画法,确定挡板左上角的坐标和挡板的高度与宽度,就可以画出,初始位置设为游戏界面中间,距离下边界 30,界面宽为 width,高为 height,所以挡板初始位置为: (( )/2,( 30)) ( 1) 各关卡挡板大小 使用 if语句实现不同关卡挡板的 长度。 【代码实现】 Pad(GamePanel panel) { = panel。 if( == 1) size = new Point(140,20)。 if( == 2) size = n。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。