Java PinBall 简单弹球小游戏【3】球拍左右移动和场景的监听器
我们在场景中画出了小球及球拍,接下来,我们分别实现对球拍及小球的控制。
3.控制球拍的左右移动。
说到控制,这里我们一定要有自己的控制器了,控制球拍左右移动需要用到键盘上的左右方向键,每按下一次球拍移动一定距离,这里我们就需要利用到AWT的按键监听器类。
KeyAdapter 接收键盘事件的抽象适配器类。
关于此类的方法只有三个,具体可以查看API文档,这里我只需要用到按下按键事件。
我们需要一个框架,这样方便我们以后调用此类需求应用,我们可以定义一个接口,接口中包括四个方法,上下左右移动的方法。这样后续我们可以通过来实现这个方法来实现这四个功能。框架中请参考:GameSpriteMoveKeyAdapterInterface,这个接口中我定义了四个方法,当然,键盘上的按键很多多,以后我们可以继续创建接口,实现需要的功能方法。
接下来,我们继承KeyAdapter 创建一个类GameSpriteMovekeyKeyAdapter,implements GameSpriteMoveKeyAdapterInterface ,把他的方法实现,但只要实现空方法即可。我们的目的是很明确的,把他们关联起来就是为了使之,按上下左右分别实现上下左右四个接口中的方法,后继我们如果游戏中有上下左右的需要求,只要继承GameSpriteMovekeyKeyAdapter建立一个新类,然后实现其中的四个方法,就可以实现上下左右移动的功能了。这样大大简化了代码的重复。
好吧,我们建游戏的键盘中移动的监听PinBallGameMoveKeyAdapter
import mygameframe.GameSpriteMovekeyKeyAdapter;
/**
* 本类继承了框架里的游戏键盘控制器类 方向控制类,用来控制球拍的左右移动
*
* @author J_sky
*/
public class PinBallGameMoveKeyAdapter extends GameSpriteMovekeyKeyAdapter {
public PinBallGameMoveKeyAdapter() {
}
public PinBallGameMoveKeyAdapter(Racket racket) {
this.racket = racket;
}
/**
* 球拍
*/
private Racket racket;
@Override
public void left() {
if (racket.getX() > 0) {
racket.setX(racket.getX()-10);
// System.out.println("左移动10");
}
}
@Override
public void right() {
if (racket.getX() < 300 - racket.getWidth()) {
racket.setX(racket.getX()+10);
// System.out.println("右移动10");
}
}
}
[/code]
PinBallGameMoveKeyAdapter 类中需要球拍的对象,我们把他通过构造器传递进来,这样就可以通过监听器中的方法来控制球拍的左右移动了。
同样的道理,我们建底层的游戏逻辑框架类GameLogic,这其中包括了一些游戏中最常用的逻辑:游戏开始,游戏结束,游戏暂停,游戏重新开始等,这里后续我们可以丰富自己的需要添加需求进去这里方便调用传参。
然后实现游戏的开始和暂停。参考GameLogicKeyAdapterInterface 接口 和GameLogicKeyAdapter实现类,然后继承GameLogicKeyAdapter创建我们弹球游戏中的键盘逻辑需求类。PinBallGameLogicKeyAdapter
**
*
* @author J_sky
*/
public class PinBallGameLogicKeyAdapter extends GameLogicKeyAdapter{
public PinBallGameLogicKeyAdapter() {
}
public PinBallGameLogicKeyAdapter(PinBallGameLogic pbgl) {
this.pbgl = pbgl;
}
private PinBallGameLogic pbgl;
@Override
public void start() {
pbgl.setGameStart(true);
if (pbgl.isGameStart()&&pbgl.isGameLose()) {
pbgl.setGameRestart(true);
}
}
@Override
public void stop() {
pbgl.setGameStop(!pbgl.isGameStop());
}
}
[/code]
这样我们通过回车键就可以开始和重新开始游戏,通过空格键可以暂停游戏。
具体可以查看游戏框架源码,我已上传git.osc
传送门:
http://git.oschina.net/J_Sky/HEHEJava2DGame
转载于:https://www.geek-share.com/detail/2658516815.html
- Java PinBall 简单弹球小游戏【3】球拍左右移动和场景的监听器
- Java PinBall 简单弹球小游戏【2】加入场景中的元素
- Java PinBall 简单弹球小游戏【4】碰撞检测及边界检测
- JAVA游戏编程学习笔记(四)Java PinBall 简单弹球小游戏【1】
- java实现简单窗体小游戏----球球大作战
- java-awt-简单事件监听器
- unity 3D学习日记:创建一个小场景并编写简单C#移动脚本
- java 实现一个简单的猜字符小游戏
- Java简单图形编辑器 放置、移动和擦除方块 鼠标事件测试程序 Java核心技术 事件处理
- 【JAVA】简单动态交互程序——弹球
- Java移动框架篇--Spring for Android简单试用
- 简单实现左右移动
- 简单选择排序的Java实现、性能分析以及适用场景
- Java中的事件、监听器的简单例子
- java实现简单扫雷小游戏
- 超级简单实现内容的左右移动js+jquery+html
- 运用js简单制作图片的左右移动
- JavaSwing简单界面开发及监听器实现
- java中的事件处理_让小球上下左右移动
- js实现简单的动画(4个按钮控制图片上下左右移动)