以下是一个使用 JavaScript 实现的简单俄罗斯方块游戏示例代码,大约 60 行左右:
// 定义游戏区域的大小
const ROWS = 20;
const COLS = 10;
// 创建游戏区域的二维数组
let board = Array.from({ length: ROWS }, () => Array(COLS).fill(0));
// 定义方块的形状
const SHAPES = [
[[1, 1, 1, 1]],
[[1, 1], [1, 1]],
[[1, 1, 0], [0, 1, 1]],
[[0, 1, 1], [1, 1, 0]],
[[1, 1, 1], [0, 1, 0]],
[[1, 1, 1], [1, 0, 0]],
[[1, 1, 1], [0, 0, 1]]
];
// 当前方块
let currentShape = SHAPES[Math.floor(Math.random() * SHAPES.length)];
let currentX = Math.floor(COLS / 2) - Math.floor(currentShape[0].length / 2);
let currentY = 0;
// 检查方块是否可以移动
function canMove(shape, x, y) {
for (let i = 0; i < shape.length; i++) {
for (let j = 0; j < shape[i].length; j++) {
if (shape[i][j] && (y + i >= ROWS || x + j < 0 || x + j >= COLS || board[y + i][x + j])) {
return false;
}
}
}
return true;
}
// 移动方块下落
function moveDown() {
if (canMove(currentShape, currentX, currentY + 1)) {
currentY++;
} else {
// 方块固定
for (let i = 0; i < currentShape.length; i++) {
for (let j = 0; j < currentShape[i].length; j++) {
if (currentShape[i][j]) {
board[currentY + i][currentX + j] = 1;
}
}
}
// 生成新方块
currentShape = SHAPES[Math.floor(Math.random() * SHAPES.length)];
currentX = Math.floor(COLS / 2) - Math.floor(currentShape[0].length / 2);
currentY = 0;
if (!canMove(currentShape, currentX, currentY)) {
alert('游戏结束');
document.body.innerHTML = '';
}
}
}
// 渲染游戏区域
function render() {
let html = '';
for (let i = 0; i < ROWS; i++) {
for (let j = 0; j < COLS; j++) {
html += board[i][j] ? '█' : ' ';
}
html += '
';
}
document.body.innerHTML = html;
}
// 初始化游戏
render();
setInterval(moveDown, 1000);
这个简单的示例实现了俄罗斯方块的基本下落和固定逻辑,你可以在此基础上进一步扩展功能,比如左右移动、旋转方块、消除行等。
优势:
应用场景:
领取专属 10元无门槛券
手把手带您无忧上云