mirror of
https://github.com/flynx/Slang.git
synced 2025-10-29 18:50:08 +00:00
docs + cleanup and tweaks...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
d08c11b5ef
commit
fbd88770c1
@ -1,5 +1,5 @@
|
|||||||
CACHE MANIFEST
|
CACHE MANIFEST
|
||||||
# Timestamp: 20170421204925
|
# Timestamp: 20170421232507
|
||||||
|
|
||||||
CACHE:
|
CACHE:
|
||||||
simplesnake.html
|
simplesnake.html
|
||||||
|
|||||||
@ -38,9 +38,22 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* Goals:
|
* Goals:
|
||||||
* - Show that the "intuitive" is not the only approach
|
* - Show that the "intuitive" is not the only approach or is not
|
||||||
* - Show that the "intuitive" is not allways the simplest
|
* necessarily the simplest...
|
||||||
* - Show one approach to a scalable yet simple architecture
|
* - Show one approach to a scalable yet simple architecture
|
||||||
|
* - Illustrate several programming patterns and approaches:
|
||||||
|
* - concatinative
|
||||||
|
* - see how Snake methods are implemented and how they are used
|
||||||
|
* in setup(..)...
|
||||||
|
* - see Snake.call(..) and Snake.apply(..) methods and how they
|
||||||
|
* enable extending the code inline...
|
||||||
|
* - meta-programming
|
||||||
|
* see: makeEvent(..)
|
||||||
|
* - event-oriented-programming
|
||||||
|
* see Snake events and how they are used in setup(..) to extend
|
||||||
|
* the basic game logic...
|
||||||
|
* - Show the use of several HTML5/CSS3 features including appCache,
|
||||||
|
* touch events and keyboard events and handling...
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
@ -109,6 +122,25 @@ var Snake = {
|
|||||||
y = y < 0 ? (y + h) : y
|
y = y < 0 ? (y + h) : y
|
||||||
return { x: x, y: y }
|
return { x: x, y: y }
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// system...
|
||||||
|
setup: function(field, size, interval){
|
||||||
|
this.config.field_size = size || this.config.field_size
|
||||||
|
this.config.interval = interval || this.config.interval
|
||||||
|
field = field || this._field
|
||||||
|
field = this._field = typeof(field) == typeof('str') ? document.querySelector(field)
|
||||||
|
: field
|
||||||
|
this._make_field()
|
||||||
|
this._cells = [].slice.call(field.querySelectorAll('td'))
|
||||||
|
this.field_size = {
|
||||||
|
width: field.querySelector('tr').querySelectorAll('td').length,
|
||||||
|
height: field.querySelectorAll('tr').length,
|
||||||
|
}
|
||||||
|
this.players = {}
|
||||||
|
return this
|
||||||
|
.appleEaten(null)
|
||||||
|
.snakeKilled(null)
|
||||||
|
},
|
||||||
_make_field: function(w){
|
_make_field: function(w){
|
||||||
var l = []
|
var l = []
|
||||||
l.length = w || this.config.field_size
|
l.length = w || this.config.field_size
|
||||||
@ -284,23 +316,6 @@ var Snake = {
|
|||||||
gameStopped: makeEvent('__stopHandlers'),
|
gameStopped: makeEvent('__stopHandlers'),
|
||||||
|
|
||||||
// actions...
|
// actions...
|
||||||
setup: function(field, size, interval){
|
|
||||||
this.config.field_size = size || this.config.field_size
|
|
||||||
this.config.interval = interval || this.config.interval
|
|
||||||
field = field || this._field
|
|
||||||
field = this._field = typeof(field) == typeof('str') ? document.querySelector(field)
|
|
||||||
: field
|
|
||||||
this._make_field()
|
|
||||||
this._cells = [].slice.call(field.querySelectorAll('td'))
|
|
||||||
this.field_size = {
|
|
||||||
width: field.querySelector('tr').querySelectorAll('td').length,
|
|
||||||
height: field.querySelectorAll('tr').length,
|
|
||||||
}
|
|
||||||
this.players = {}
|
|
||||||
return this
|
|
||||||
.appleEaten(null)
|
|
||||||
.snakeKilled(null)
|
|
||||||
},
|
|
||||||
start: function(t){
|
start: function(t){
|
||||||
this.__timer = this.__timer
|
this.__timer = this.__timer
|
||||||
|| setInterval(this._tick.bind(this), t || this.config.interval || 200)
|
|| setInterval(this._tick.bind(this), t || this.config.interval || 200)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user