python弹球游戏移动球拍_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() 

racket.setX(racket.getX()+10);

// System.out.println("右移动10");

}

}

}

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());

}

}

这样我们通过回车键就可以开始和重新开始游戏,通过空格键可以暂停游戏。

具体可以查看游戏框架源码,我已上传git.osc

传送门:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值