From b43adbce0d5c7acc1175f137977098e11ae4f08f Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Sun, 10 Jul 2022 11:36:11 +0300 Subject: [PATCH] style update... Signed-off-by: Alex A. Naanou --- simplesnake/simplesnake.js | 190 +++++++++++++++++++------------------ 1 file changed, 96 insertions(+), 94 deletions(-) mode change 100755 => 100644 simplesnake/simplesnake.js diff --git a/simplesnake/simplesnake.js b/simplesnake/simplesnake.js old mode 100755 new mode 100644 index 6f109ee..7ce3007 --- a/simplesnake/simplesnake.js +++ b/simplesnake/simplesnake.js @@ -79,11 +79,9 @@ function makeEvent(handler_attr){ var args = [].slice.call(arguments) this[handler_attr] && this[handler_attr] - .forEach(function(handler){ handler.apply(that, args) }) - } - return this - } -} + .forEach(function(handler){ + handler.apply(that, args) }) } + return this } } var Snake = { config: { @@ -108,8 +106,7 @@ var Snake = { return { x: i%w, y: Math.floor(i/w), - } - }, + } }, get random_direction(){ return ('nesw')[Math.floor(Math.random() * 4)] }, @@ -126,15 +123,15 @@ var Snake = { var h = this.field_size.height var y = point.y % h y = y < 0 ? (y + h) : y - return { x: x, y: y } - }, + return { x, 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._field = typeof(field) == typeof('str') ? + document.querySelector(field) : field this._make_field() this._cells = [].slice.call(field.querySelectorAll('td')) @@ -145,8 +142,7 @@ var Snake = { this.players = {} return this .appleEaten(null) - .snakeKilled(null) - }, + .snakeKilled(null) }, _make_field: function(w){ var l = [] l.length = w || this.config.field_size @@ -156,8 +152,7 @@ var Snake = { l.map(function(){ return ` ${ l.join('') } ` }).join('\n') - }\n` - }, + }\n` }, _tick: function(){ var that = this var l = this._cells.length @@ -171,8 +166,7 @@ var Snake = { // skip cells we touched on this tick... if(cell.tick == tick){ - return - } + return } // snake... if(cell.age != null){ @@ -183,8 +177,7 @@ var Snake = { cell.style.backgroundColor = '' } else { - cell.age -= 1 - } + cell.age -= 1 } // snake head -> move... var direction = cell.direction @@ -192,22 +185,30 @@ var Snake = { // turn... if(that.players[color] != ''){ var turn = that.players[color] || '' - var j = turn == 'left' ? directions.indexOf(direction) - 1 + var j = turn == 'left' ? + directions.indexOf(direction) - 1 : directions.indexOf(direction) + 1 j = j < 0 ? 3 : j direction = directions[j] - that.players[color] = '' - } + that.players[color] = '' } // get next cell index... var next = direction == 'n' ? - (i < w ? l - w + i : i - w) + (i < w ? + l - w + i + : i - w) : direction == 's' ? - (i > (l-w-1) ? i - (l-w) : i + w) + (i > (l-w-1) ? + i - (l-w) + : i + w) : direction == 'e' ? - ((i+1)%w == 0 ? i - (w-1) : i + 1) - : (i%w == 0 ? i + (w-1) : i - 1) + ((i+1)%w == 0 ? + i - (w-1) + : i + 1) + : (i%w == 0 ? + i + (w-1) + : i - 1) next = that._cells[next] var age = cell.age @@ -238,8 +239,7 @@ var Snake = { // other -> kill... } else { - that.snakeKilled(color, age+2) - } + that.snakeKilled(color, age+2) } // do the move... if(move){ @@ -247,16 +247,11 @@ var Snake = { next.style.backgroundColor = color next.classList.add('snake') next.age = age + 1 - next.direction = direction - } + next.direction = direction } - delete cell.direction - } - } - cell.tick = tick - }) - this.tick(tick) - }, + delete cell.direction } } + cell.tick = tick }) + this.tick(tick) }, // constructors... snake: function(color, age, point, direction){ @@ -265,53 +260,57 @@ var Snake = { var head = this._cells[point.x + point.y * this.field_size.width] head.style.backgroundColor = color head.classList.add('snake') - head.direction = direction || this.random_direction + head.direction = direction + || this.random_direction head.age = (age || 5) - 1 this.players[color] = '' return this - .snakeBorn(color) - }, + .snakeBorn(color) }, apple: function(point){ point = this.normalize_point(point || this.random_point) var c = this._cells[point.x + point.y * this.field_size.width] c.classList.add('apple') c.style.backgroundColor = '' - return this - }, + return this }, wall: function(point, direction, length){ - direction = direction || this.random_direction + direction = direction + || this.random_direction point = this.normalize_point(point || this.random_point) var x = point.x var y = point.y - length = length || Math.random() * this.field_size.width + length = length + || Math.random() * this.field_size.width while(length > 0){ var c = this._cells[x + y * this.field_size.width] c.classList.add('wall') c.style.backgroundColor = '' - x += direction == 'e' ? 1 - : direction == 'w' ? -1 + x += direction == 'e' ? + 1 + : direction == 'w' ? + -1 : 0 - x = x < 0 ? this.field_size.width + x + x = x < 0 ? + this.field_size.width + x : x % this.field_size.width - y += direction == 'n' ? -1 - : direction == 's' ? 1 + y += direction == 'n' ? + -1 + : direction == 's' ? + 1 : 0 - y = y < 0 ? this.field_size.height + y + y = y < 0 ? + this.field_size.height + y : y % this.field_size.height - length -= 1 - } + length -= 1 } - return this - }, + return this }, level: function(level){ var that = this level.forEach(function(wall){ that.wall.apply(that, wall) }) - return this - }, + return this }, // events... snakeKilled: makeEvent('__killHandlers'), @@ -324,32 +323,35 @@ var Snake = { // actions... start: function(t){ 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... var that = this Object.keys(this.players) - .forEach(function(k){ that.players[k] = '' }) + .forEach(function(k){ + that.players[k] = '' }) return this .tick() - .gameStarted() - }, + .gameStarted() }, stop: function(){ clearInterval(this.__timer) delete this.__timer delete this.__tick return this - .gameStopped() - }, + .gameStopped() }, pause: function(){ - return this.__timer ? this.stop() : this.start() }, + return this.__timer ? + this.stop() + : this.start() }, left: function(color){ this.players[color || Object.keys(this.players)[0]] = 'left' - return this - }, + return this }, right: function(color){ this.players[color || Object.keys(this.players)[0]] = 'right' - return this - }, + return this }, } @@ -388,19 +390,23 @@ function makeTapHandler(snake){ // prevent clicks and touches from triggering the same action // twice -- only handle the first one within timeout... // NOTE: this should not affect events of the same type... - if(__DEBOUNCE && event.type != __DEBOUNCE){ return } + if(__DEBOUNCE && event.type != __DEBOUNCE){ + return } __DEBOUNCE = event.type setTimeout(function(){ __DEBOUNCE = false }, __DEBOUNCE_TIMEOUT) clearHints() // top of screen (1/8)... - ;(event.clientY || event.changedTouches[0].pageY) <= (window.innerHeight / 8) ? + ;(event.clientY + || event.changedTouches[0].pageY) <= (window.innerHeight / 8) ? setup() // bottom of screen 1/8... - : (event.clientY || event.changedTouches[0].pageY) >= (window.innerHeight / 8)*7 ? + : (event.clientY + || event.changedTouches[0].pageY) >= (window.innerHeight / 8)*7 ? Snake.pause() // left/right of screen... - : (event.clientX || event.changedTouches[0].pageX) <= (window.innerWidth / 2) ? + : (event.clientX + || event.changedTouches[0].pageX) <= (window.innerWidth / 2) ? Snake.left() : Snake.right() }} @@ -425,8 +431,7 @@ function digitizeBackground(snake, walls){ `rgb(${220 - v*2}, ${220 - v*2}, ${220 - v*2})`) // skip the rest... : null }) - return snake -} + return snake } //--------------------------------------------------------------------- @@ -455,12 +460,12 @@ function setup(snake, timer, size){ get random(){ var l = Object.keys(this) - .filter(function(e){ return e != 'random' }) + .filter(function(e){ + return e != 'random' }) do { var level = this[l[ Math.round(Math.random()*l.length) ]] } while(!(level instanceof Array)) - return level - }, + return level }, } function showScore(color, age){ @@ -473,14 +478,17 @@ function setup(snake, timer, size){ : 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)' : '') - } + snake._field.setAttribute('state', + (score.score == age + && score.color == color) ? + '(current)' + : '') } // setup event handlers (only once)... if(!__HANDLER_SET){ document.querySelectorAll('.version') - .forEach(function(e){ e.innerHTML = VERSION }) + .forEach(function(e){ + e.innerHTML = VERSION }) // control handlers... document.addEventListener('keydown', makeKeyboardHandler(snake)) @@ -497,14 +505,12 @@ function setup(snake, timer, size){ appCache.swapCache() confirm('New version ready, reload?') - && location.reload() - } - }) - setInterval(function(){ appCache.update() }, __CACHE_UPDATE_CHECK) - } + && location.reload() } }) + setInterval( + function(){ appCache.update() }, + __CACHE_UPDATE_CHECK) } - __HANDLER_SET = true - } + __HANDLER_SET = true } // setup the game... return snake @@ -513,8 +519,7 @@ function setup(snake, timer, size){ .call(digitizeBackground, snake) .call(function(){ this.__snake_apples = [] - return this - }) + return this }) // load level... .level(Level.random) @@ -523,8 +528,7 @@ function setup(snake, timer, size){ // reconstruct eaten apples... .appleEaten(function(color, age){ this.apple() - showScore(color, age) - }) + showScore(color, age) }) // one apple per snake... .snakeBorn(function(color){ this.__snake_apples.indexOf(color) < 0 @@ -537,8 +541,7 @@ function setup(snake, timer, size){ this .pause() .snake(color, 3) - showScore(color, 3) - }) + showScore(color, 3) }) // indicate game state... .gameStarted(function(){ this._field.classList.remove('paused') }) @@ -547,8 +550,7 @@ function setup(snake, timer, size){ // game eleemnts... .apple() - .snake('blue', 3) -} + .snake('blue', 3) }