Appearance
Setp3:移动方块
这一步,我们不考虑碰撞和边界问题,专注于实现方块移动:下移、左移、右移。
问题抽象
假设游戏面板由二维数组board
表示,方块由二维数组block
表示,方块在游戏面板的位置由position: { x: number; y: number }
表示。
方块在游戏面板上移动,由三个小步骤来完成:
- 1、旧位置方块擦除:
board
对应位置全部更新成 0; - 2、position 更新:根据移动类型调整 x,y 的值;
- 3、将方块添加至新位置:矩阵相加,
board
+block
。
Have a try
下面给出了部分代码,但clearBlock
和addBlock
方法是空着的,需要你动手完善它。在下方的折叠面板有答案可供参考。
点击查看样例代码
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]
}
}
}
}