基于java的打砖游戏的设计与实现_第1页
基于java的打砖游戏的设计与实现_第2页
基于java的打砖游戏的设计与实现_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于java的打砖游戏的设计与实现

1砖的消去和损害打砖块游戏是一个简单流行的游戏,属于电子游戏。玩家通过控制水平的棒子,使一颗不断弹来弹去的球去撞击砖块,撞击成功砖块消去,球碰到砖块、棒子与底面以外的三面会反弹,落到底面失去一颗球,砖块全部消去即为过关。由于规则简单,因特网小游戏和J2ME手机游戏中均有该款游戏。因此对该游戏的主要算法进行了分析,并用Java语言实现。2算法分析2.1程序开始程序初始化包括砖块的位置初始化、挡板的位置初始化和球的位置初始化。其中砖块的初始化和挡板的初始化方法基本相同,只介绍砖块的初始化。2.1.1确定砖阵位置砖块的初始化位置有三行三列、三行四列、四行三列、四行四列4种摆放方法。因此需定义一个二维数组用来存放砖块,设置两个随机变量m和n作为数组的行数和列数,其值用随机函数生成3或4。但砖块大小和游戏界面大小均为固定值,砖块间的间距必须控制好,因此必须对砖阵中每一个砖块的具体位置进行计算。砖块是一个矩形,确定它的左上角坐标和它的长宽,便可确定砖块的位置。因此定义一个数组存放每一个砖块的左上角坐标,然后定义一个Point型变量存放砖块的长宽。设游戏界面宽度为L,砖阵有m列,要使砖块摆放均匀,把L均分成m份,把每一个砖块放到每一份空间的中心,确定砖块的x坐标;采用一个砖块的宽度作为砖块的y坐标,保证砖块之间的竖直距离恒定。2.1.2内切椭圆的设计方案小球的初始位置应在挡板的正中央,小球的绘制方法是:把小球看成个矩形,确定起始位置和长宽,就可以绘画出矩形的内切椭圆,将椭圆的长轴和短轴设为相等值,椭圆就可变成圆形。因此只要确定了小球的左上角坐标和小球的直径就确定小球的具体位置,以挡板Pad作为参考。设挡板的长和宽分别是w和h,挡板的起始点位置坐标是Pad.x和Pad.y,小球的直径为d。则:小球的起始点水平坐标是:小球的起始点竖直坐标是:2.2砖的位置加工球在空中的运动轨迹,包括球碰到四周边框的处理,碰到砖块后的处理和碰到挡板后的运动规则,其处理方法基本相同,以小球碰到砖块后的处理为例介绍。当小球碰到砖块左边上时,小球x轴方向取反,y方向不变;当小球碰到砖块的右边时,小球的x轴方向取反,y方向不变;当小球碰到砖块的上边界时x轴方向值不变,y方向值取反;当小球碰到砖块的下边界时x方向值不变,y方向的值取反。以砖块的位置作为参照:设砖块左上角坐标为location(x,y),砖块长宽为size(x,y)。小球左上角坐标为(x,y),小球直径为d。由于小球相对于砖块来说体积很小,在计算中可以忽略。2.2.1y-–d#loctor.x+尺寸.x,y-–d#loctor.y+合成当满足条件location.x-d<x<location.x+size.x,且y-–d<location.y+size.y时,小球碰到砖块。2.2.2不同条件组合的斑块长度和大小的变化为简便起见,且为了能够很好地处理边角点碰撞问题,设置一个函数Bounce(),它用来判断小球是否碰到砖块(或挡板),其中参数bk_location和bk_size分别存放砖块左上角坐标和砖块大小,则:当传入的第二个Point型参数等于十分之一砖块长度和砖块宽度时,小球碰到砖块左边界;当传入的第一个Point型参数的x坐标加上十分之一砖块长度,传入的第二个Point参数的x坐标是砖块长度的十分之八时,小球碰到砖块上方边界和下方边界;当传入的第一个Point型参数的x坐标是砖块左上角坐标加上十分之八个砖块的长度,第二个Point型参数的x坐标是砖块的十分之一时,小球碰到砖块右边界。2.2.3用三脚架触摸不同位置的销点的处理方法这里只考虑运动方向当小球碰到砖块左边界或右边界时,dx=-dx;当小球碰到砖块上边界或下边界时,dy=-dy。3具体执行该游戏在WindowsXP操作系统上开发,编程环境选择JDK1.6和Eclipse3.2,用Java语言实现。3.1采用相应的属性主界面是由GameFrame类完成的,如图1所示。它的设计很简单,就是新建一个JFrame,然后设置它的属性,窗体左上角的坐标设为100*100,大小设为由具体的Panel控制,窗体大小设为不可变。3.2无参构造器游戏,指使用尔雅能力对游戏的一切操作是在游戏面板中进行的,具体是在GamePanel类中实现。GamePanel类中定义的属性有:面板宽度width,面板高度height,画笔dbg,游戏线程gamethread,控制游戏速度的常量A,小球myball,挡板mypad,砖块myblock,挡板向右移动padMoveRight,挡板向左移动padMoveLeft,小球运动ballMove,游戏结束gameover,重启reStart,还有分数score。GamePanel类中的方法有:GamePanel类的无参构造器GamePanel()它的无作用是初始化游戏。包括游戏界面大小的设置、背景颜色的设置、挡板的初始位置设置、小球初始位置的设置、砖块初始位置的设置,以及对整个游戏界面进行键盘监听;还有gameStart()、gamePaint()、gameRender()、gameUpdate()、extStage()、sGameOver等方法。3.3小球类的方法小球是在Ball类中实现的,它的属性有位置location,直径diameter,水平方向的运动分量dx,竖直方向的运动分量dy等。小球类中的方法有:带参构造方法Ball(...)它用来初始化小球的大小和位置;move()方法用来描述小球的运动;draw()方法用来画小球;Bounce(...)方法用来描述碰撞与运动之间的规则;wallBounce()方法用来描述小球碰到墙壁的处理;BlockBounce()方法用来描述小球碰到砖块以后的处理;padBounced()方法用来描述小球碰到挡板后的处理。4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论