@@ -605,37 +508,128 @@ const Tetris = () => {
{renderBoard1P()}
{!isMobile && (
- {/* Next Piece Preview */}
Next
-
-
- {nextPiece.shape.map((row, y) => (
-
- {row.map((val, x) => (
-
- ))}
-
- ))}
-
+
{renderNextPiece(nextPiece)}
+
+
+
Score
+
{score.toLocaleString()}
+
+
+
High Score
+
{highScore.toLocaleString()}
+
max: 4,294,967,296
+
+
+
+
Controls
+
+
← → / A D: Move
+
↑ / W: Rotate
+
↓ / S: Soft drop
+
Space: Hard drop
+
P: Pause
- {/* ... keep existing code (rest of sidebar / stats / UI) */}
+ {!gameStarted || gameOver ? (
+
+ ) : (
+
+ )}
)}
>
) : (
- <>
- {/* ... keep existing code (2P layout) */}
- >
+
+
+
P1 (WASD + Q)
+
{renderBoard2P(player1, 'border-primary/20')}
+
+
+
Next
+ {renderNextPiece(player1.nextPiece)}
+
+
+
+
P2 (Arrows + /)
+
{renderBoard2P(player2, 'border-purple-500/20')}
+
+
+
Next
+ {renderNextPiece(player2.nextPiece)}
+
+
+
)}
- {/* ... keep existing code (mobile controls + overlays) */}
+ {isMobile && gameMode === '1p' && (
+ <>
+
+
+
+
+
SCORE
{score.toLocaleString()}
+
HIGH
{highScore.toLocaleString()}
+
+
+ {gameStarted && !gameOver ? (
+
+ ←
+ ↓
+ →
+
+
+
+
+ ) : (
+
+ )}
+
+
+ >
+ )}
+
+ {!isMobile && (gameOver || isPaused) && gameStarted && (
+
+
+
{gameOver ? (winner || 'GAME OVER') : 'PAUSED'}
+ {gameOver && gameMode === '1p' &&
Final Score: {score.toLocaleString()}
}
+ {gameOver && gameMode === '2p' && (
+
+ )}
+
+ {gameOver ? (
+ <>
+
+
+ >
+ ) : (
+
+ )}
+
+
+
+ )}
);
-
- return isFullscreen ?
{content} : content;
};
-export default Tetris;
\ No newline at end of file
+export default Tetris;