Fix game over condition and garbage row placement
- Remove premature elimination in addGarbageToPlayer (top rows check) - Remove redundant y < 0 elimination check in lockPiece - Players are only eliminated when spawnPiece fails (board full) - Garbage rows now added to bottom of board, pushing blocks up
This commit is contained in:
+4
-13
@@ -250,8 +250,6 @@ function lockPiece(player) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player.currentPiece.y <= 0) player.eliminated = true;
|
|
||||||
|
|
||||||
const rowsCleared = clearRows(player);
|
const rowsCleared = clearRows(player);
|
||||||
|
|
||||||
if (!spawnPiece(player)) player.eliminated = true;
|
if (!spawnPiece(player)) player.eliminated = true;
|
||||||
@@ -293,19 +291,12 @@ function sendGarbage(sender, rowsCleared) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function addGarbageToPlayer(player) {
|
function addGarbageToPlayer(player) {
|
||||||
player.board.pop();
|
// Remove top row and add garbage to bottom
|
||||||
|
player.board.shift();
|
||||||
const garbageRow = Array(BOARD_WIDTH).fill(GARBAGE_COLOR);
|
const garbageRow = Array(BOARD_WIDTH).fill(GARBAGE_COLOR);
|
||||||
garbageRow[Math.floor(Math.random() * BOARD_WIDTH)] = 0;
|
garbageRow[Math.floor(Math.random() * BOARD_WIDTH)] = 0;
|
||||||
player.board.unshift(garbageRow);
|
player.board.push(garbageRow);
|
||||||
|
// Elimination is handled by spawnPiece when a new piece can't fit
|
||||||
for (let row = 0; row < 2; row++) {
|
|
||||||
for (let col = 0; col < BOARD_WIDTH; col++) {
|
|
||||||
if (player.board[row][col] !== 0) {
|
|
||||||
player.eliminated = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function startGame() {
|
function startGame() {
|
||||||
|
|||||||
Reference in New Issue
Block a user