-
Notifications
You must be signed in to change notification settings - Fork 0
rtpg/Snake.js
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This is my attempt at Snake in javascript, meant mainly to use javascript in a "meaningful" way.
This README alsocontains all my design notes,
snake design:
Initialise variables
At every tick:
update input vector
try to move:
if touches snake then
gameover
if touches nugget then
eat nugget
add new nugget
add 1 length to snake
else
move snake accordingly
Representation of snake:
list of points
functions:
move
set direction
lengthen
existence at point
Representation of world:
snake
tick function
nugget position
html inclusion:
just making it a div? <div class="snake"> ... ?
I'm fine with this.
snake representation details
the pointlist that holds the "parts" of the snake...... hiow do they work?
If I have three parts, for example, in order
0--1--2
when I move I could just move 0:
1--2--0
in which case 1 would be the new last.
so point list works like a circular buffer: there's a "current tail", as well as a "current head". We increment each every time.
This might seem like enough, but there's a slight problem.... adding requires a lot of shifting.
So I'll use a linked list. (or rather, just a cobbled together node list. I can't write linked list functionality correctly otherwise!)
The design remains similar.
When adding a thing, we'll just duplicate the tail....
before add:
0--1--2
hd: 2 -> 0
tl: 0 -> 1
adding an el't:
0/3--1--2
hd: 2->3
tl: 3->0
after "step":
0--1--2--3
BAM!About
Snake in javascript (for the n'th time)
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published