Don't clone this repository because we will use a different template.
We recommend opening the React template
using a provisioning tool like Codespaces (recommended) or Gitpod. Alternatively, you can clone the GitHub repository on your local computer using the git clone
command.
This is the repository you need to open or clone:
https://github.com/4GeeksAcademy/react-hello
⚠ You will need to have Node.js installed if you do it locally, but all of that is already installed on Codespaces or Gitpod!
1const [snake, setSnake] = useState([[10, 10]]); 2const [direction, setDirection] = useState('RIGHT'); 3const [food, setFood] = useState([15, 15]); 4const [gameOver, setGameOver] = useState(false);
1useEffect(() => { 2 const moveSnake = () => { 3 // Logic to move the snake 4 }; 5 6 if (!gameOver) { 7 const interval = setInterval(moveSnake, 200); 8 return () => clearInterval(interval); 9 } 10}, [snake, direction, gameOver]);
1useEffect(() => { 2 const handleKeyDown = (event) => { 3 switch(event.key) { 4 case 'ArrowUp': 5 setDirection('UP'); 6 break; 7 case 'ArrowDown': 8 setDirection('DOWN'); 9 break; 10 case 'ArrowLeft': 11 setDirection('LEFT'); 12 break; 13 case 'ArrowRight': 14 setDirection('RIGHT'); 15 break; 16 default: 17 break; 18 } 19 }; 20 21 window.addEventListener('keydown', handleKeyDown); 22 return () => window.removeEventListener('keydown', handleKeyDown); 23}, []);
1if (checkCollision(newHead)) { 2 setGameOver(true); 3}
Speed Adjustment: Increase the snake's speed as the player progresses.
Difficulty Levels: Offer different difficulty levels with varying speeds or board sizes.
Obstacles: Add obstacles to the board that the snake must avoid.
Sounds and Effects: Add sound effects when eating food or when the game ends!
High Scores: Implement a system to save and display high scores using local storage.
Customizable Themes: Allow the player to choose between different visual themes for the game.
Multiplayer Game: Implement a mode where two snakes compete on the same board.
Explore different enhancements to make your Snake game more interesting and challenging!
In order to prepare better for completing this exercises, we suggest the following materials