mirror of
https://github.com/clb92/simple-js-snake.git
synced 2025-12-06 01:32:03 +01:00
Fixed pause, drops not disappearing and more bugs
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
var Game = function() {
|
var Game = function() {
|
||||||
this.gameover = false;
|
this.gameover = false;
|
||||||
|
this.started = false;
|
||||||
this.paused = true;
|
this.paused = true;
|
||||||
this.gameLoop = null;
|
this.gameLoop = null;
|
||||||
this.gameLoopCount = 0;
|
this.gameLoopCount = 0;
|
||||||
@@ -32,6 +33,7 @@ Game.prototype.initGrid = function() {
|
|||||||
|
|
||||||
Game.prototype.start = function() {
|
Game.prototype.start = function() {
|
||||||
this.paused = false;
|
this.paused = false;
|
||||||
|
this.started = true;
|
||||||
/* var parent = this;
|
/* var parent = this;
|
||||||
this.gameLoop = setInterval(function(){
|
this.gameLoop = setInterval(function(){
|
||||||
parent.gameLoopCount++;
|
parent.gameLoopCount++;
|
||||||
@@ -70,6 +72,7 @@ Game.prototype.start = function() {
|
|||||||
|
|
||||||
Game.prototype.update = function() {
|
Game.prototype.update = function() {
|
||||||
this.snake.move();
|
this.snake.move();
|
||||||
|
this.resources.checkDropExpiration();
|
||||||
}
|
}
|
||||||
|
|
||||||
Game.prototype.togglePause = function() {
|
Game.prototype.togglePause = function() {
|
||||||
@@ -82,7 +85,9 @@ Game.prototype.togglePause = function() {
|
|||||||
} else {
|
} else {
|
||||||
this.canvas.canvas.style.filter = "blur(0px)";
|
this.canvas.canvas.style.filter = "blur(0px)";
|
||||||
document.getElementById("popup-text").setAttribute("class", "hidden");
|
document.getElementById("popup-text").setAttribute("class", "hidden");
|
||||||
this.start();
|
if (!this.started) {
|
||||||
|
this.start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +106,7 @@ Game.prototype.applyEffect = function(effect) {
|
|||||||
case ('faster'):
|
case ('faster'):
|
||||||
console.log("faster");
|
console.log("faster");
|
||||||
this.speedModifier = 1.7;
|
this.speedModifier = 1.7;
|
||||||
this.effects.speedChange = 150;
|
this.effects.speedChange = 180;
|
||||||
break;
|
break;
|
||||||
case ('slower'):
|
case ('slower'):
|
||||||
console.log("slower");
|
console.log("slower");
|
||||||
@@ -111,7 +116,7 @@ Game.prototype.applyEffect = function(effect) {
|
|||||||
case ('bonus'):
|
case ('bonus'):
|
||||||
console.log("bonus");
|
console.log("bonus");
|
||||||
this.score = this.score + 15;
|
this.score = this.score + 15;
|
||||||
this.snake.embiggen(5);
|
this.snake.embiggen(6);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
console.log(this);
|
console.log(this);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
var Resources = function(game) {
|
var Resources = function(game) {
|
||||||
this.game = game;
|
this.game = game;
|
||||||
this.droprateModifier = 5;
|
this.droprateModifier = 5;
|
||||||
this.maxDrops = 100;
|
this.maxDrops = 3;
|
||||||
this.types = [
|
this.types = [
|
||||||
'food',
|
'food',
|
||||||
'food',
|
'food',
|
||||||
@@ -33,6 +33,13 @@ var Resources = function(game) {
|
|||||||
'slower',
|
'slower',
|
||||||
'slower'
|
'slower'
|
||||||
];
|
];
|
||||||
|
this.defaultLifetime = {
|
||||||
|
'food': null,
|
||||||
|
'death': 180,
|
||||||
|
'bonus': 100,
|
||||||
|
'faster': 180,
|
||||||
|
'slower': 180
|
||||||
|
}
|
||||||
this.locations = [];
|
this.locations = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,16 +56,50 @@ Resources.prototype.checkLocation = function(x, y) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Resources.prototype.checkDropExpiration = function() {
|
||||||
|
for (var i = 0; i < this.locations.length; i++) {
|
||||||
|
if (this.locations[i][3] !== null) {
|
||||||
|
if (this.locations[i][3] > 0) {
|
||||||
|
this.locations[i][3]--;
|
||||||
|
} else {
|
||||||
|
this.despawnDrop(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Resources.prototype.dropRandom = function() {
|
Resources.prototype.dropRandom = function() {
|
||||||
if (!this.game.paused) {
|
if (!this.game.paused) {
|
||||||
if (this.locations.length < this.maxDrops) {
|
if (this.locations.length < this.maxDrops) {
|
||||||
var randDrop = this.getRandomInt(0, this.types.length - 1);
|
|
||||||
var randX = this.getRandomInt(0, this.game.grid.width - 1);
|
var randX = this.getRandomInt(0, this.game.grid.width - 1);
|
||||||
var randY = this.getRandomInt(0, this.game.grid.height - 1);
|
var randY = this.getRandomInt(0, this.game.grid.height - 1);
|
||||||
|
var randDrop = this.getRandomInt(0, this.types.length - 1);
|
||||||
|
|
||||||
this.game.canvas.setTile(this.types[randDrop], randX, randY);
|
this.game.canvas.setTile(this.types[randDrop], randX, randY);
|
||||||
|
|
||||||
this.locations.push([randX, randY, this.types[randDrop]]);
|
this.locations.push([
|
||||||
|
randX,
|
||||||
|
randY,
|
||||||
|
this.types[randDrop],
|
||||||
|
this.defaultLifetime[this.types[randDrop]]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Resources.prototype.despawnDrop = function(i) {
|
||||||
|
this.game.canvas.setTile('board', this.locations[i][0], this.locations[i][1]);
|
||||||
|
this.locations.splice(i, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Resources.prototype.removeDrop = function(x, y, despawn = false) {
|
||||||
|
for (var i = 0; i < this.locations.length; i++) {
|
||||||
|
if (this.locations[i][0] === x) {
|
||||||
|
for (var i = 0; i < this.locations.length; i++) {
|
||||||
|
if (this.locations[i][0] === x && this.locations[i][1] === y) {
|
||||||
|
this.locations.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ Snake.prototype.move = function() {
|
|||||||
var effect = this.game.resources.checkLocation(newX, newY);
|
var effect = this.game.resources.checkLocation(newX, newY);
|
||||||
if (effect !== null) {
|
if (effect !== null) {
|
||||||
this.game.applyEffect(effect);
|
this.game.applyEffect(effect);
|
||||||
|
this.game.resources.removeDrop(newX, newY);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < this.locations.length; i++) {
|
for (var i = 0; i < this.locations.length; i++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user