mirror of
https://github.com/flynx/Slang.git
synced 2025-10-29 18:50:08 +00:00
tweaking...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
90c68b6eb4
commit
08d8841ab2
@ -1,5 +1,5 @@
|
|||||||
CACHE MANIFEST
|
CACHE MANIFEST
|
||||||
# Timestamp: 20170421040607
|
# Timestamp: 20170421194304
|
||||||
|
|
||||||
CACHE:
|
CACHE:
|
||||||
simplesnake.html
|
simplesnake.html
|
||||||
|
|||||||
@ -230,6 +230,7 @@ var Snake = {
|
|||||||
this.players[color] = ''
|
this.players[color] = ''
|
||||||
|
|
||||||
return this
|
return this
|
||||||
|
.snakeBorn(color)
|
||||||
},
|
},
|
||||||
apple: function(point){
|
apple: function(point){
|
||||||
point = this.normalize_point(point || this.random_point)
|
point = this.normalize_point(point || this.random_point)
|
||||||
@ -265,9 +266,12 @@ var Snake = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// events...
|
// events...
|
||||||
appleEaten: makeEvent('__appleEatenHandlers'),
|
|
||||||
snakeKilled: makeEvent('__killHandlers'),
|
snakeKilled: makeEvent('__killHandlers'),
|
||||||
|
snakeBorn: makeEvent('__birthHandlers'),
|
||||||
|
appleEaten: makeEvent('__appleEatenHandlers'),
|
||||||
tick: makeEvent('__tickHandlers'),
|
tick: makeEvent('__tickHandlers'),
|
||||||
|
gameStarted: makeEvent('__startHandlers'),
|
||||||
|
gameStopped: makeEvent('__stopHandlers'),
|
||||||
|
|
||||||
// actions...
|
// actions...
|
||||||
setup: function(field, size){
|
setup: function(field, size){
|
||||||
@ -287,22 +291,22 @@ var Snake = {
|
|||||||
.snakeKilled(null)
|
.snakeKilled(null)
|
||||||
},
|
},
|
||||||
start: function(t){
|
start: function(t){
|
||||||
this._field.classList.remove('paused')
|
|
||||||
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)
|
||||||
// reset player control actions...
|
// reset player control actions...
|
||||||
var that = this
|
var that = this
|
||||||
Object.keys(this.players)
|
Object.keys(this.players)
|
||||||
.forEach(function(k){ that.players[k] = '' })
|
.forEach(function(k){ that.players[k] = '' })
|
||||||
this.tick()
|
|
||||||
return this
|
return this
|
||||||
|
.tick()
|
||||||
|
.gameStarted()
|
||||||
},
|
},
|
||||||
stop: function(){
|
stop: function(){
|
||||||
this._field.classList.add('paused')
|
|
||||||
clearInterval(this.__timer)
|
clearInterval(this.__timer)
|
||||||
delete this.__timer
|
delete this.__timer
|
||||||
delete this.__tick
|
delete this.__tick
|
||||||
return this
|
return this
|
||||||
|
.gameStopped()
|
||||||
},
|
},
|
||||||
pause: function(){
|
pause: function(){
|
||||||
return this.__timer ? this.stop() : this.start() },
|
return this.__timer ? this.stop() : this.start() },
|
||||||
@ -328,8 +332,6 @@ var Snake = {
|
|||||||
|
|
||||||
/*********************************************************************/
|
/*********************************************************************/
|
||||||
|
|
||||||
//var BG_ANIMATION = true
|
|
||||||
|
|
||||||
var __CACHE_UPDATE_CHECK = 10*60*1000
|
var __CACHE_UPDATE_CHECK = 10*60*1000
|
||||||
var __HANDLER_SET = false
|
var __HANDLER_SET = false
|
||||||
var __DEBOUNCE_TIMEOUT = 100
|
var __DEBOUNCE_TIMEOUT = 100
|
||||||
@ -373,6 +375,20 @@ function makeTapHandler(snake){
|
|||||||
function clearHints(){
|
function clearHints(){
|
||||||
document.body.classList.contains('hints')
|
document.body.classList.contains('hints')
|
||||||
&& document.body.classList.remove('hints') }
|
&& document.body.classList.remove('hints') }
|
||||||
|
function digitizeBackground(snake, walls){
|
||||||
|
snake._cells.forEach(function(c){
|
||||||
|
var v = Math.floor(Math.random() * 6)
|
||||||
|
// bg cell...
|
||||||
|
c.classList.length == 0 ?
|
||||||
|
(c.style.backgroundColor =
|
||||||
|
`rgb(${255 - v}, ${255 - v}, ${255 - v})`)
|
||||||
|
// wall...
|
||||||
|
: walls && c.classList.contains('wall') ?
|
||||||
|
(c.style.backgroundColor =
|
||||||
|
`rgb(${220 - v*2}, ${220 - v*2}, ${220 - v*2})`)
|
||||||
|
// skip the rest...
|
||||||
|
: null })
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------
|
//---------------------------------------------------------------------
|
||||||
@ -382,6 +398,20 @@ function clearHints(){
|
|||||||
function setup(snake, timer, size){
|
function setup(snake, timer, size){
|
||||||
snake = snake || Snake
|
snake = snake || Snake
|
||||||
|
|
||||||
|
function showScore(color, age){
|
||||||
|
score = snake.__top_score =
|
||||||
|
(!snake.__top_score || snake.__top_score.score < age) ?
|
||||||
|
{
|
||||||
|
color: color || '',
|
||||||
|
score: age || 0,
|
||||||
|
}
|
||||||
|
: snake.__top_score
|
||||||
|
snake._field.setAttribute('score', score.score)
|
||||||
|
snake._field.setAttribute('snake', score.color)
|
||||||
|
snake._field.setAttribute('state', (
|
||||||
|
score.score == age && score.color == color) ? '(current)' : '')
|
||||||
|
}
|
||||||
|
|
||||||
// setup event handlers (only once)...
|
// setup event handlers (only once)...
|
||||||
if(!__HANDLER_SET){
|
if(!__HANDLER_SET){
|
||||||
// control handlers...
|
// control handlers...
|
||||||
@ -408,20 +438,6 @@ function setup(snake, timer, size){
|
|||||||
__HANDLER_SET = true
|
__HANDLER_SET = true
|
||||||
}
|
}
|
||||||
|
|
||||||
function showScore(color, age){
|
|
||||||
score = snake.__top_score =
|
|
||||||
(!snake.__top_score || snake.__top_score.score < age) ?
|
|
||||||
{
|
|
||||||
color: color || '',
|
|
||||||
score: age || 0,
|
|
||||||
}
|
|
||||||
: snake.__top_score
|
|
||||||
snake._field.setAttribute('score', score.score)
|
|
||||||
snake._field.setAttribute('snake', score.color)
|
|
||||||
snake._field.setAttribute('state', (
|
|
||||||
score.score == age && score.color == color) ? '(current)' : '')
|
|
||||||
}
|
|
||||||
|
|
||||||
// setup the game...
|
// setup the game...
|
||||||
return snake
|
return snake
|
||||||
.setup('.simplesnake', size)
|
.setup('.simplesnake', size)
|
||||||
@ -429,35 +445,38 @@ function setup(snake, timer, size){
|
|||||||
.start(timer)
|
.start(timer)
|
||||||
.pause()
|
.pause()
|
||||||
|
|
||||||
// game events...
|
// game events / meta game rules...
|
||||||
|
// reconstruct eaten apples...
|
||||||
.appleEaten(function(color, age){
|
.appleEaten(function(color, age){
|
||||||
this.apple()
|
this.apple()
|
||||||
showScore(color, age)
|
showScore(color, age)
|
||||||
})
|
})
|
||||||
|
// one apple per snake...
|
||||||
|
.snakeBorn(function(color){
|
||||||
|
var a = this.__snake_apples = this.__snake_apples || []
|
||||||
|
a.indexOf(color) < 0
|
||||||
|
&& this.apple()
|
||||||
|
&& a.push(color)
|
||||||
|
})
|
||||||
|
// reconstruct snakes and pause game...
|
||||||
|
// XXX for multiplayer reconstruct the snake on timeout and do
|
||||||
|
// not pause...
|
||||||
.snakeKilled(function(color, age){
|
.snakeKilled(function(color, age){
|
||||||
this
|
this
|
||||||
.pause()
|
.pause()
|
||||||
.snake(color, 3)
|
.snake(color, 3)
|
||||||
showScore(color, 3)
|
showScore(color, 3)
|
||||||
})
|
})
|
||||||
.tick(function(){
|
// indicate game state...
|
||||||
// digital noise effect...
|
.gameStarted(function(){
|
||||||
window.BG_ANIMATION
|
digitizeBackground(this)
|
||||||
&& (!snake.__tick || snake.__tick % 2 == 0)
|
this._field.classList.remove('paused') })
|
||||||
&& this._cells.forEach(function(c){
|
.gameStopped(function(){
|
||||||
var v = Math.floor(Math.random() * 6)
|
delete this.__snake_apples
|
||||||
c.classList.length == 0 ?
|
this._field.classList.add('paused') })
|
||||||
(c.style.backgroundColor =
|
|
||||||
`rgb(${255 - v}, ${255 - v}, ${255 - v})`)
|
|
||||||
: c.classList.contains('wall') ?
|
|
||||||
(c.style.backgroundColor =
|
|
||||||
`rgb(${220 - v*2}, ${220 - v*2}, ${220 - v*2})`)
|
|
||||||
: null })
|
|
||||||
})
|
|
||||||
|
|
||||||
// game eleemnts...
|
// game eleemnts...
|
||||||
.apple()
|
.apple()
|
||||||
.apple()
|
|
||||||
.snake('blue', 3)
|
.snake('blue', 3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user