autumn revised this gist . Go to revision
2 files changed, 53 insertions, 1 deletion
snake.md (file deleted)
@@ -1 +0,0 @@ | |||
1 | - | [unfinished snake game](https://playground.nova-lang.net/?p=%7C%7C%20%27INSTRUCTIONS%27%20you%20can%20move%20using%20the%20WASD%20keys!%0A%0A%27%40include%27%20(%0A%20%20lib%2Frpn.nv%0A%20%20lib%2Fplatforms%2Fbrowser_dom.nv%0A%20%20lib%2Fplatforms%2Fbrowser_game.nv%0A)%0A%0A%27snake%27%20200%20200%0A%0A%27%27%20start%20a%20400%20by%20400%20game%0A%0A%7C%20%27%27%20game%20loop%0A%7C%20%27%27%0A%20%20.%20check%20if%20w%20is%20pressed%0A%20%20.%20check%20if%20a%20is%20pressed%0A%20%20.%20check%20if%20s%20is%20pressed%0A%20%20.%20check%20if%20d%20is%20pressed%0A%20%20.%20draw%20background%0A%20%20.%20draw%20snake%0A%20%20.%20next%20frame%0A%0A%7C%20%27key%20pressed%27%20w%20%7C%20%27vector%27%20%2B%200%20-%201%0A%7C%20%27key%20pressed%27%20a%20%7C%20%27vector%27%20-%201%20%2B%200%0A%7C%20%27key%20pressed%27%20s%20%7C%20%27vector%27%20%2B%200%20%2B%201%0A%7C%20%27key%20pressed%27%20d%20%7C%20%27vector%27%20%2B%201%20%2B%200%0A%7C%20%27snake%27%20%24x%20%24y%20%27vector%27%20%241%20%242%20%243%20%244%0A%7C%20%27%27%20move%20snake%20%27%40rpn%27%20(%24y%20%244%20%243%20%24x%20%242%20%241)%0A%7C%20%27%27%20move%20snake%20%27%40rpn%20data%27%20(%24x%20%24y)%0A%7C%20%27snake%27%20%24x%20%24y%0A%0A%7C%20%27%27%20draw%20background%20%7C%20%27%40graphics%27%20clear%20black%0A%0A%7C%20%27%27%20draw%20snake%20%27snake%27%20%24x%20%24y%3F%0A%7C%20%27%40graphics%27%20draw%20square%20%24x%20%24y%2010%20green%0A%0A%7C%20%27%40graphics%27%20draw%20square%20%24x%20%24y%20%24size%20%24color%0A%20%20%27%40%40canvas%20context%27%20%24context%3F%0A%7C%20%27%40js%27%0A%20%20%24context.fillStyle%20%3D%20%24color%3B%0A%20%20%24context.fillRect(%24x%2C%20%24y%2C%20%24size%2C%20%24size)%3B%0A%0A%0A%0A%7C%20%27%27%20start%20a%20%24x%20by%20%24y%20game%0A%7C%20%27%40graphics%27%20.%20canvas%20init%20canvas%20.%20set-resolution%20_%20%24x%20%24y%0A%20%20%27DOM%27%20(%20%3Cquery%20canvas%20%3Cstyle%20display%20%3D%20block%20margin%20%3D%20%5B1rem%20auto%5D%20%3E%20%3E%20)%0A%20%20%27%27%20game%20loop%0A%0A%7C%20%27%27%20next%20frame%0A%7C%20%27%40js%27%20window.requestAnimationFrame(nextFrame)%3B%0A%0A%7C%7C%20%27%40js%27%20const%20nextFrame%20%3D%20()%20%3D%3E%20%7B%20f(%22%22%2C%20%22game%22%2C%20%22loop%22)%3B%20me.run()%3B%20%7D%0A) |
snake.nv(file created)
@@ -0,0 +1,53 @@ | |||
1 | + | || 'INSTRUCTIONS' you can move using the WASD keys! | |
2 | + | ||
3 | + | '@include' ( | |
4 | + | lib/rpn.nv | |
5 | + | lib/platforms/browser_dom.nv | |
6 | + | lib/platforms/browser_game.nv | |
7 | + | ) | |
8 | + | ||
9 | + | 'snake' 200 200 | |
10 | + | ||
11 | + | '' start a 400 by 400 game | |
12 | + | ||
13 | + | | '' game loop | |
14 | + | | '' | |
15 | + | . check if w is pressed | |
16 | + | . check if a is pressed | |
17 | + | . check if s is pressed | |
18 | + | . check if d is pressed | |
19 | + | . draw background | |
20 | + | . draw snake | |
21 | + | . next frame | |
22 | + | ||
23 | + | | 'key pressed' w | 'vector' + 0 - 1 | |
24 | + | | 'key pressed' a | 'vector' - 1 + 0 | |
25 | + | | 'key pressed' s | 'vector' + 0 + 1 | |
26 | + | | 'key pressed' d | 'vector' + 1 + 0 | |
27 | + | | 'snake' $x $y 'vector' $1 $2 $3 $4 | |
28 | + | | '' move snake '@rpn' ($y $4 $3 $x $2 $1) | |
29 | + | | '' move snake '@rpn data' ($x $y) | |
30 | + | | 'snake' $x $y | |
31 | + | ||
32 | + | | '' draw background | '@graphics' clear black | |
33 | + | ||
34 | + | | '' draw snake 'snake' $x $y? | |
35 | + | | '@graphics' draw square $x $y 10 green | |
36 | + | ||
37 | + | | '@graphics' draw square $x $y $size $color | |
38 | + | '@@canvas context' $context? | |
39 | + | | '@js' | |
40 | + | $context.fillStyle = $color; | |
41 | + | $context.fillRect($x, $y, $size, $size); | |
42 | + | ||
43 | + | ||
44 | + | ||
45 | + | | '' start a $x by $y game | |
46 | + | | '@graphics' . canvas init canvas . set-resolution _ $x $y | |
47 | + | 'DOM' ( <query canvas <style display = block margin = [1rem auto] > > ) | |
48 | + | '' game loop | |
49 | + | ||
50 | + | | '' next frame | |
51 | + | | '@js' window.requestAnimationFrame(nextFrame); | |
52 | + | ||
53 | + | || '@js' const nextFrame = () => { f("", "game", "loop"); me.run(); } |
autumn revised this gist . Go to revision
1 file changed, 1 insertion
snake.md(file created)
@@ -0,0 +1 @@ | |||
1 | + | [unfinished snake game](https://playground.nova-lang.net/?p=%7C%7C%20%27INSTRUCTIONS%27%20you%20can%20move%20using%20the%20WASD%20keys!%0A%0A%27%40include%27%20(%0A%20%20lib%2Frpn.nv%0A%20%20lib%2Fplatforms%2Fbrowser_dom.nv%0A%20%20lib%2Fplatforms%2Fbrowser_game.nv%0A)%0A%0A%27snake%27%20200%20200%0A%0A%27%27%20start%20a%20400%20by%20400%20game%0A%0A%7C%20%27%27%20game%20loop%0A%7C%20%27%27%0A%20%20.%20check%20if%20w%20is%20pressed%0A%20%20.%20check%20if%20a%20is%20pressed%0A%20%20.%20check%20if%20s%20is%20pressed%0A%20%20.%20check%20if%20d%20is%20pressed%0A%20%20.%20draw%20background%0A%20%20.%20draw%20snake%0A%20%20.%20next%20frame%0A%0A%7C%20%27key%20pressed%27%20w%20%7C%20%27vector%27%20%2B%200%20-%201%0A%7C%20%27key%20pressed%27%20a%20%7C%20%27vector%27%20-%201%20%2B%200%0A%7C%20%27key%20pressed%27%20s%20%7C%20%27vector%27%20%2B%200%20%2B%201%0A%7C%20%27key%20pressed%27%20d%20%7C%20%27vector%27%20%2B%201%20%2B%200%0A%7C%20%27snake%27%20%24x%20%24y%20%27vector%27%20%241%20%242%20%243%20%244%0A%7C%20%27%27%20move%20snake%20%27%40rpn%27%20(%24y%20%244%20%243%20%24x%20%242%20%241)%0A%7C%20%27%27%20move%20snake%20%27%40rpn%20data%27%20(%24x%20%24y)%0A%7C%20%27snake%27%20%24x%20%24y%0A%0A%7C%20%27%27%20draw%20background%20%7C%20%27%40graphics%27%20clear%20black%0A%0A%7C%20%27%27%20draw%20snake%20%27snake%27%20%24x%20%24y%3F%0A%7C%20%27%40graphics%27%20draw%20square%20%24x%20%24y%2010%20green%0A%0A%7C%20%27%40graphics%27%20draw%20square%20%24x%20%24y%20%24size%20%24color%0A%20%20%27%40%40canvas%20context%27%20%24context%3F%0A%7C%20%27%40js%27%0A%20%20%24context.fillStyle%20%3D%20%24color%3B%0A%20%20%24context.fillRect(%24x%2C%20%24y%2C%20%24size%2C%20%24size)%3B%0A%0A%0A%0A%7C%20%27%27%20start%20a%20%24x%20by%20%24y%20game%0A%7C%20%27%40graphics%27%20.%20canvas%20init%20canvas%20.%20set-resolution%20_%20%24x%20%24y%0A%20%20%27DOM%27%20(%20%3Cquery%20canvas%20%3Cstyle%20display%20%3D%20block%20margin%20%3D%20%5B1rem%20auto%5D%20%3E%20%3E%20)%0A%20%20%27%27%20game%20loop%0A%0A%7C%20%27%27%20next%20frame%0A%7C%20%27%40js%27%20window.requestAnimationFrame(nextFrame)%3B%0A%0A%7C%7C%20%27%40js%27%20const%20nextFrame%20%3D%20()%20%3D%3E%20%7B%20f(%22%22%2C%20%22game%22%2C%20%22loop%22)%3B%20me.run()%3B%20%7D%0A) |