Skip to content
On this page

Setp3:移动方块

这一步,我们不考虑碰撞和边界问题,专注于实现方块移动:下移、左移、右移。

问题抽象

假设游戏面板由二维数组board表示,方块由二维数组block表示,方块在游戏面板的位置由position: { x: number; y: number }表示。

方块在游戏面板上移动,由三个小步骤来完成:

  • 1、旧位置方块擦除:board对应位置全部更新成 0;
  • 2、position 更新:根据移动类型调整 x,y 的值;
  • 3、将方块添加至新位置:矩阵相加,board + block

Have a try

下面给出了部分代码,但clearBlockaddBlock方法是空着的,需要你动手完善它。在下方的折叠面板有答案可供参考。

点击查看样例代码
js
function clearBlock() {
  for (let i = 0; i < block.value.length; i++) {
    for (let j = 0; j < block.value[i].length; j++) {
      if (block.value[i][j]) {
        board.value[position.value.y + i][position.value.x + j] = 0
      }
    }
  }
}

function addBlock() {
  for (let i = 0; i < block.value.length; i++) {
    for (let j = 0; j < block.value[i].length; j++) {
      if (block.value[i][j]) {
        board.value[position.value.y + i][position.value.x + j] =
          block.value[i][j]
      }
    }
  }
}