import React, { useState, useEffect } from 'react';
import './App.css';
const App = () => {
const [board, setBoard] = useState(Array(20).fill(Array(10).fill(0)));
const [piece, setPiece] = useState({ shape: [[1]], position: { x: 0, y: 0 } });
const [score, setScore] = useState(0);
useEffect(() => {
const handleKeyDown = (event) => {
switch (event.key) {
case 'ArrowLeft':
movePiece(-1);
break;
case 'ArrowRight':
movePiece(1);
break;
case 'ArrowDown':
dropPiece();
break;
default:
break;
}
};
window.addEventListener('keydown', handleKeyDown);
return () => window.removeEventListener('keydown', handleKeyDown);
}, [piece]);
const movePiece = (direction) => {
setPiece(prev => ({
...prev,
position: { ...prev.position, x: prev.position.x + direction }
}));
};
const dropPiece = () => {
setPiece(prev => ({
...prev,
position: { ...prev.position, y: prev.position.y + 1 }
}));
};
const renderBoard = () => {
return board.map((row, i) => (
<div key={i} className="flex">
{row.map((cell, j) => (
<div key={j} className={`w-8 h-8 border ${cell ? 'bg-blue-500' : 'bg-gray-200'}`}></div>
))}
</div>
));
};
return (
<div className="flex flex-col items-center justify-center min-h-screen bg-gray-100">
<div className="text-2xl font-bold mb-4">Tetris</div>
<div className="bg-white p-4 shadow-lg rounded-lg">
{renderBoard()}
</div>
<div className="mt-4 text-xl font-semibold">Score: {score}</div>
<div className="mt-4 text-sm text-gray-600">© 2025 Tetris Inc.</div>
</div>
);
};
export default App;