java桌面弹球
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方 含的道具,初始值为null。此类中所包含的方法如下: 法 getMagic() : Magic ;
void setMagic( Magic magic ) Magic getMagic() boolean isDisable() void setDisable( boolean disable ) 的值为true或者false 设置道具 setMagic() : Magic ; 获取道具 用来判断此类是否有效
业务处理类实现
创建与设置砖块、设置挡板 的位置,及移动挡板、小球与砖 块相撞、小球道具与挡板的碰撞、 道具的移动、改变道具的长度、 判断是否已经通关
Ball LongMagic Magic ShortMagic BallComponent Stick
Brick
Service
BallFrame
名 (挡板)类、Ball(小球)类的父类。定义了这些子类所共有的属性,即: x
void setPreWidth( int preWidth ) 设置初始长度。
int getPreWidth() 获取初始长度。
用一个布尔类型属性started来标志小球是否已经开始运动,初始值为 false。游戏过程 名 中小球不断在画板中运动,而且并不仅仅是单纯的沿x轴或者 y轴运动,许多时候小球 speedY : int = 10 是沿斜的方向运动,所以将小球的速度分解为横向速度(speedX ,int speedX : 类型,初始值 int = 8 属 为10)与竖向速度(speedY,int类型,初始值为10)。游戏结束后,小球也是处于 性 started : boolean = false 静止状态,但不能再移动,同样,用一个布尔类型属性stop来标志小球是否能再移动 stop : boolean = false ,初始值为false。 setSpeedX() :void 除了定义这些属性,还为这些属性提供相应的set与get方法,如下: setSpeedY() :void setSpeedX( int speed ) 设置小球的横向速度。 getSpeedX() :void setSpeedY( int speed ) 设置小球的竖向速度。 方 getSpeedY() :void boolean isStarted() 判断小球是否已经在运动。 法 setStarted() :int void setStarted( boolean b ) 把小球状态设置为运动或者静止。 setStop() :int int getSpeedX() 获取小球的横向速度。 isStarted() :boolean isStop() :boolean int getSpeedY() 获取小球的竖向速度。
Stick类中只定义了沿x方向移动的速度SPEED(静态类型,int型,初 始值为20),由于挡板接住道具后长度可能会发生改变,所以还需要
方 setpreWidth() :void 一个挡板的初始长度preWidth属性,为int型,初始值为 。并提供 法 0 getpreWidth() :int
了setpreWidth和getpreWidth方法获取和设置挡板的初始长度。
magicDo():void
BallService ,处理小球的运动,挡板的移动,初始化砖块和道具,判断游戏中的图片元素是否有碰
撞,设置挡板的长度、判断用户是否通关以及把图片绘制到画板等功能。涉及到的方法 stick : Stick = null ; ball : Ball = 如下: null ; void run() 小球进行运动 width : int heigth :int ; void setStickPos( KeyEvent ke ) 改变挡板的坐标位置 属性 bricks :Brick[][] = null ; setBallPos() 改变小球的坐标位置 ballFrame :BallFrame = null ; boolean isHitBrick( Brick brick ) 测试小球与砖块是否有碰撞,参数brick gameOver:BallComponent = null ; 是指砖块。 won : BallComponent =null ; isHitStick( BallComponent image ) 测试某元素与挡板是否有碰撞 run() : void ; setStickPos() : void setMagicPos() 改变道具的坐标位置 void ; void setStickWidth( Magic magic ) isHitBrick() 根据道具( magic )的类型去设置改变挡 : boolean ; 板的长度。 isHitStick():boolean ; 方法 boolean isWon() 判断玩家是否已经过关 setMagicPos() :void ; draw():void ; Brick[][] createBrickArr( String path, int xSize, int ySize ) ; 创建砖块,返 setStickWidth() :void isWon():boolean ; 回一个Brick类型的数组,参数path是指砖块的图片, xSize与ySize 是数组的长度 createBrickArr() :Brick[][] ; void draw( Graphics g ) 画图,方法中是使用 Graphics 对象g去 画图
speed,初始值为5。定义set和get方法获取x,性 y坐标,speed速度和
image图片。
属
BallComponent( String path ),path是图片的路径,用图片的路径来构
setX() : void ; 造一个BallComponent,且根据路径去读取图片,再设置对象中 属性 setY() : voidimage ; 方 getX() : int ; 。 法 getY() : int ; BallComponent( int panelWidth , int panelHeight, String path ), getSpeed():int ; getImage():image 。 ; 以panelWidth,panelHeight,与path去构造一个BallComponent
JAVA
游 戏 说 明
1
目录
设 计 思 路 流 程 设 计 游 戏 实 现
2
3
4
总
结
1
初始化界面
先将游戏界面画出来,设置 主界面的标题、长与宽、画板等 属性,并且为增加键盘事件监听 器以及创立一个Timer每隔一小 段时间去刷新画板,使游戏得以 动态实现
2
确定需要的类 并创建
在这个游戏中,有挡板,小球, 砖块(障碍物),道具等物品,设 计一个具有这些物品都有共同的特 性的基类,包含这些属性与相关的 方法,让其子类继承。例如有属于 自己的x与y坐标属性,有图片属性, 有速度属性。最后在创建这些物品 类,描述相关的属性及方法。
BallService处理了这个游戏中的大部分业务功能,包括游戏的开始,游戏的结束 类
名
BallFrame是创建一个JFrame BallFrame 类名 主界面,设置主界面的标题、
长与宽、画板等属性,并且为增加键盘事件监听器以及创立一个 initialize():void ; 方法 getBallPanel(): Timer每隔一小段时间去刷新画板,主要有初始化界面与画板两 BallPanel; 个方法,如下:
砖块类是BallComponet的一个子类,提供一个以图片路径,道具类型 类
Brick
magic :Magic = null ; 的道具,可能使挡板变长;2代表此砖块里面有 属 ShortMagic类型的道具,可 性 disable :boolean = 能使挡板变短;其他表示没有道具。在游戏中当小球和砖块碰撞时砖块就被消 false;
在Stick里提供getPreWidth的原因之一。在此游戏中,道具图片随机地隐藏
ShortMagic 类名 在砖块中,当弹球和砖块撞击时砖块消失,如果该砖块有道具,那么就在画板
中画出来并且随即向下运动。 abstract void magicDo( Stick stick )
方法
道具的功能,给其子类实现
灭不在画板上显示,变成无效的,所以在本类中用一个布尔变量disable属性 来标志对象是否有效的效果,如果disable为true ,则表明此砖块已经不可用 setDisable() :void ; ,不会再显示。其中还包含一个Magic类型的属性 magic,代表此砖块中所包 isDisable() :boolean;
void initialize() throws IOException
常,初始化界面。
此方法抛出IO异
BallPanel getBallPanel()
Ball类也是BallComponet的子类。游戏未开始前,小球是处于静止状态,所以 类
Ball
boolean isStop()
void setStop( boolean b )
小球是否已经在停止。
把小球状态设置为停止或者运动。
,x、y坐标为参数的构造器,其中path、x与 y参数用于调用父类的构造器, 名 type是代表砖块内所包含的道具类型:1代表此砖块里面有LongMagic类型
停用或者启用此类,disable
道具类Magic是一个抽象类,它是BallComponent的子类,又是
类名
LongMagic
LongMagic和ShortMagic的父类。此类提供一个以图片路径、x、y坐标为
方法 magicDo() :void 参数的构造器去调用父类的构造器,并提供一个抽象的方法 magicDo( Stick
主界面实现
百度文库
3
挡板、小球、砖块、道具
挡板、小球、砖块、道具都有一 个共同的父类Ballcomponent, 可以使用父类的方法设置坐标和 获取坐标获取图片,并且调用父 类提供的不同构造器。
1
4
2
主界面是一个只设置了窗口 标题还有颜色等基本属性的 JFrame,在这个JFrame中,提 供一个JPanel对象。实现游戏的 相关逻辑的时调用JPanel的 repaint方法将JPanel进行重绘。
stick ),此抽象方法是实现道具的效果功能,magicDo方法里传一个Stick 类 型的参数用来完成道具的功能,使得挡板在接住道具之后变长或者变短,变长
类名 Magic(abstract)
方法 magicDo():void
变短的处理当然首先需要获得挡板的原有宽度preWidth,再进行处理,这也是
BallComponent( String path , int x , int y ),以x坐标,y坐标和path 去构造一个BallComponet。
类 名
Stick
Stick 类是BallComponet的一个子类,用来代表游戏中的挡板
SPEED : =20 属 。由于挡板位于界面最底部用来接住小球,只能左右移动,所以在 性 preWidth : =0
x,初始值为 : int = -1 null ; ;速度 坐标,初始值为-1;y坐标,初始值为-1;图片image
基类BallComponent是Brick(砖块)类、 Magic(道具)类、Stick 类
BallComponent
y : int = -1 ; image:Image=null ; speed:int =5 ;
3
创建业务处理类,处 理类与类间的关系
处理了这个游戏中的大部分业 务功能,包括游戏的开始,游戏的 结束,处理小球的运动,挡板的移 动,初始化砖块和道具,判断游戏 中的图片元素是否有碰撞,设置挡 板的长度、判断用户是否通关以及 把图片绘制到画板等功能。
N
Y
Y
N
创建游戏对象
创建基类BallComponent、 砖块类Brick、道具类及其子类、 挡板类Stick、小球类Ball、业务 处理类BallService、主界面类 BallFrame