别踩白块儿游戏源代码分析和下载II

\别踩白块儿\游戏源代码分析和下载(二)

四、游戏交互实现

1、前面已经介绍在 Block 类实现了每个block的触碰监听,block 实现触碰监听,当按下时,调起在GameScene中实现的touchBlock方法。下面来看改方法的实.

? ? ? ? ? ? ? ? ?

/**

* 点击到Block时进行的逻辑处理 *

* @param pBlock

* 所点击的block */

public void touchBlock(Block pBlock) {

if (gameStatus == ConstantUtil.GAME_START) {

??

?? if (pBlock.getRow() == moveNum + 2) {// 表示是在底部往上数的倒数第三行

?? // 判断是不是点击了该点击的黑块的上一格,如果是,我们也判定这是正确点击了,做出相应移动

?? upBlockTouch(pBlock);

?? } else if (pBlock.getRow() == moveNum + 1) {// 表示是在底部往上数的倒数第二行

?? if (pBlock.getColorType() == ConstantUtil.COLOR_BLACK)

{

?? if (linesLength == moveNum + 2) { ?? // 游戏胜利 ?? gameSucc(pBlock); ?? } else {

?? ?? ?? ??

?? ConstantUtil.COLOR_WHITE) {

?? ?? ?? ?? ?? ?? ?? ??

?? } ??

?? }

// 整体blocks下移 moveDown(pBlock, 1); } } else if (pBlock.getColorType() == // 误点了白块,游戏失败 gameFail();

// 失败时pBlock的一个闪红效果 LoopEntityModifier loop = failAction(); // 播放效果

pBlock.registerEntityModifier(loop); } ??

?? }

复制代码 上面的代码已经有所注释,这里再简单解析一下。

①理论上可以点击的一行为倒数第二行,如果点击到该行的黑块,则所有block向下移动一格,如果点击到该行的白块,则游戏失败,弹出失败界面。

②为了体验上的优化,如果点击到倒数第二行黑块所在列正对上的一个block(不管是黑块还是白块)也视为正确点击了黑块。因为在快速点击黑块的同时整体的block也迅速向下移动,很容易点击到上一格,此时我们认为这也是正确的点。

2、判断是不是点击了该点击的黑块的上一格,如果是,我们也判定这是正确点击了,做出相应移动

?? /**

?? * 判断是不是点击了该点击的黑块的上一格,如果是,我们也判定这是正确点击了,做出相应移动 ?? *

?? * @param pBlock

?? * 所被点击的块 ?? */

?? private void upBlockTouch(Block pBlock) { ?? int touchColumn = pBlock.getColumn(); ?? for (Block[] blocks : blockList) { ?? for (Block block : blocks) {

?? if (block.getRow() == moveNum + 1

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4