we'll be using the following concepts:
Tools
VS Code for Linux
https://svelte.dev/
Extensions:
Make sure you have npm installed
Clone the snake starter repo
Navigate to the starter folder and run npm install
To start the application use npm run dev
You'll see that there are 4 seperate components:
Food component
Snake component
SnakeBodies component
App component
1.0 In Food.svelte create two props named foodLeft & foodTop
1.1 Use these two props to control the location of food component
1.2 In App.svelte create two vars also called foodLeft & foodTop
1.3 Pass those vars as props to the food component
1.4 Play around with the values to confirm you control the location
2.0 Use the same logic to control the location of the body component
2.1 add a prop that confirms wich body component will show the eyes
2.2 add a prop that points the eyes in the right direction
2.3 use the direction prop to control the snake eyes
2.4 use an if statementto display the eyes
3.0 A snakebody part is 50px x 50px
3.1 add a snakeBodies prop to the Snake.svelte component
3.2 create a snakeBodies array in the App.svelte component
3.3 loop trough the array to render the snakeBodies
3.4 use an index variable to determine wich part should be the head
4.0 Every key on the keyboard has a code. Try to find out how to log it to the console.
4.1 Make sure you have a function that controls the direction using the keycodes
4.2 If done correctly, the snake eyes should move on your keyboard input
5.0 Remove the last element from the array
5.1 Extract the top & left values from the first element in the array
5.2 Adjust those values based on the direction
5.3 Create a new Head object using the top & left variables
5.4 Set snake bodies array to new array
5.5 Make sure the array keeps updating
6.0 Determine when the snake collides with the apple
6.1 Randomise the position of the food
6.2 Make sure the snake grows after eating the apple
7.0 Track if the head collides with the body
7.1 Test your logic using an alert
7.2 Add the logic that checks if the snake is in the container
8.0 Reset the game on game over
8.1 Display the score using a reactive variable
8.2 Change the background and go ham on the styling
Be sure to check out https://svelte.dev/, for more inspiration check out the examples section:)
Find out what a spread operator is.
Dont forget to remove the hardcoded css values.
Read up on setInterval()
CTRL - S
Will update with excercise source after workshop:)