@@ -13,12 +13,39 @@ We gaan Snake bouwen voor in de browser.
1313
1414## Introductie
1515
16+ ![ Snake op een Nokia] ( nokia-snake.png )
17+
18+ Snake is een mobiele video game [ geïntroduceerd op een Nokia telefoon in 1998] ( https://en.wikipedia.org/wiki/Snake_(1998_video_game) ) .
19+
20+ ### Spelregels
21+ Het doel van het spel Snake is om zoveel mogelijk fruit te eten (dit is je score).
22+ Hoe meer je eet, hoe langer de slang wordt en ook beweegt de slang sneller.
23+ Als de slang tegen zichzelf botst of buiten het scherm gaat is het game over.
24+
25+ Dus om Snake te bouwen moet het spel het volgende doen:
26+
27+ - Beweeg de slang met de pijltjestoetsen
28+ - Plaats op een willekeurige plek fruit
29+ - De slang moet het fruit kunnen eten
30+ - Als er fruit gegeten is moet de slang sneller bewegen
31+ - Als er fruit gegeten is moet de slang langer worden
32+ - Als er fruit gegeten is krijg je een punt
33+ - Als de slang tegen zichzelf botst, is het game over
34+ - Ook als de slang buiten het scherm gaat is het game over
35+
36+ Nu we de spelregels duidelijk hebben en weten wat het spel moet gaan doen, is het tijd om Snake te gaan bouwen!
37+
1638## Wat heb je nodig?
1739
40+ Een text editor als [ Visual Studio Code] ( https://code.visualstudio.com/ ) en natuurlijk een browser zoals Chrome.
41+
1842## Instructie
1943
2044### 1. HTML
2145
46+ We beginnen met de basis. Maak een nieuw bestand aan met bijvoorbeeld de naam ` snake.html ` . Kopieer en plak daarin
47+ onderstaande code. Als je het bestand opent in Chrome, zie je een groot vierkant.
48+
2249``` html
2350<!DOCTYPE html>
2451<html lang =" en" >
@@ -29,6 +56,7 @@ We gaan Snake bouwen voor in de browser.
2956 canvas {
3057 display : block ;
3158 margin : 0 auto ;
59+ border : 1px solid black ;
3260 }
3361 </style >
3462</head >
@@ -42,6 +70,8 @@ We gaan Snake bouwen voor in de browser.
4270
4371### 2. Een appel
4472
73+ We gaan nu aan de slag met Javascript en beginnen met het tekenen van een appel:
74+
4575Voeg toe op regel 17 in de vorige code:
4676``` html
4777<script >
@@ -53,36 +83,51 @@ En tussen de `<script>` en `</script>` tags:
5383 const elemPlayground = document .getElementById (" playground" );
5484 const ctx = elemPlayground .getContext (" 2d" );
5585
56- const boxSize = 25 ;
57- const foodSize = boxSize / 2 + 1 ;
58- const numBoxes = elemPlayground .width / boxSize ;
86+ const vakGrootte = 25 ;
87+ const appelGrootte = vakGrootte / 2 + 1 ;
88+ const aantalVakjes = elemPlayground .width / vakGrootte ;
5989
60- const food = { x: 0 , y: 0 };
90+ const appel = { x: 0 , y: 0 };
6191
62- function drawFood () {
92+ function tekenAppel () {
6393 ctx .fillStyle = " red" ;
6494 ctx .beginPath ();
65- ctx .arc (food .x * boxSize + foodSize, food .y * boxSize + foodSize, foodSize , 0 , 2 * Math .PI );
95+ ctx .arc (appel .x * vakGrootte + appelGrootte, appel .y * vakGrootte + appelGrootte, appelGrootte , 0 , 2 * Math .PI );
6696 ctx .fill ();
6797 }
6898
69- drawFood ();
99+ tekenAppel ();
70100```
71- ## Uitdagingen
72-
73- > Te doen:
74- > 1 . Pas [ FrontMatter] ( https://gohugo.io/content-management/front-matter/ ) aan boven in dit bestand.
75- > - ` title ` naar een passende titel bij deze instructie
76- > - ` data ` naar vandaag
77- > - ` onderwerp ` naar de gebruikte techniek aanpassen, bijvoorbeeld Python (wordt gebruikt om te sorteren per onderwerp)
78- > 2 . Denk qua structuur aan:
79- > - Introductie van het onderwerp
80- > - Wat heb je nodig (programma's/materialen)
81- > - De instructie zelf verdeelt over stappen; het is fijn als kinderen per stap al resultaat kunnen zien
82- > - Afronding met bijvoorbeeld uitdagingen op basis van het geleerde en/of linkjes naar pagina's met nog meer informatie over het onderwerp
83- > 3 . Laat onderstaande licentie staan
84- >
85- > Bekijk [ deze uitleg] ( https://github.com/coderdojonijmegen/hugo-coderdojo-nijmegen/blob/main/README.md ) over hoe je kunt zien
86- > hoe je instructies er uit zien in de site.
101+ Je ziet nu linksboven in het vierkant een rode cirkel: de appel.
102+
103+ We hebben best veel code nodig gehad, maar regels 1 t/m 8 zijn nodig ter voorbereiding van tekenen en de indeling van het vierkant
104+ in kleine vakjes van 25 bij 25 pixels.
105+
106+ ` function tekenAppel() ` tekent tenslotte de rode cirkel.
107+
108+ ### 3. De kop van de slang
109+
110+ Voeg toe na regel ` const appel = { x: 0, y: 0 }; ` :
87111
112+ ``` javascript
113+ const slang = [{ x: 10 , y: 10 }];
114+ ```
115+
116+ En dan voor regel ` tekenAppel(); ` :
117+
118+ ``` javascript
119+
120+ function tekenSlang () {
121+ slang .forEach (slangDeel => {
122+ ctx .fillStyle = " green" ;
123+ ctx .fillRect (slangDeel .x * vakGrootte, slangDeel .y * vakGrootte, vakGrootte - 1 , vakGrootte - 1 );
124+ });
125+ }
126+
127+ ```
128+ En na regel ` tekenAppel(); ` :
129+
130+ ``` javascript
131+ tekenSlang ();
132+ ```
88133{{< licentie rel="http://creativecommons.org/licenses/by-nc-sa/4.0/">}}
0 commit comments