/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var SoundCharacter = Container.expand(function (characterType) {
var self = Container.call(this);
self.characterType = characterType || 1;
self.points = self.characterType === 'special' ? 50 : self.characterType * 5;
self.lifetime = 0;
self.maxLifetime = self.characterType === 'special' ? 5000 : 8000;
self.isClicked = false;
var assetId = self.characterType === 'special' ? 'specialCharacter' : 'character' + self.characterType;
var characterGraphics = self.attachAsset(assetId, {
anchorX: 0.5,
anchorY: 0.5
});
self.spawn = function () {
var margin = 100;
self.x = margin + Math.random() * (2048 - margin * 2);
self.y = margin + Math.random() * (2732 - margin * 2);
self.alpha = 0;
tween(self, {
alpha: 1,
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 300,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 200
});
}
});
};
self.playSound = function () {
var soundId = self.characterType === 'special' ? 'Specialsound' : 'Characters1to5sound';
LK.getSound(soundId).play();
};
self.update = function () {
self.lifetime += 16;
if (self.lifetime >= self.maxLifetime && !self.isClicked) {
self.fadeOut();
}
};
self.fadeOut = function () {
if (self.isClicked) return;
tween(self, {
alpha: 0,
scaleX: 0.5,
scaleY: 0.5
}, {
duration: 300,
onFinish: function onFinish() {
self.removeFromGame();
}
});
};
self.removeFromGame = function () {
for (var i = characters.length - 1; i >= 0; i--) {
if (characters[i] === self) {
characters.splice(i, 1);
break;
}
}
self.destroy();
};
self.down = function (x, y, obj) {
if (self.isClicked) return;
self.isClicked = true;
self.playSound();
LK.setScore(LK.getScore() + self.points);
scoreTxt.setText(LK.getScore());
LK.effects.flashObject(self, 0xffffff, 200);
tween(self, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 150,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(self, {
alpha: 0,
scaleX: 0.3,
scaleY: 0.3
}, {
duration: 200,
onFinish: function onFinish() {
self.removeFromGame();
}
});
}
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x2c3e50
});
/****
* Game Code
****/
var characters = [];
var spawnTimer = 0;
var spawnInterval = 2000;
var minSpawnInterval = 800;
var speedIncreaseRate = 0.98;
var lastSpeedIncrease = 0;
var scoreTxt = new Text2('0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
function spawnCharacter() {
var characterType;
var random = Math.random();
if (random < 0.05) {
characterType = 'special';
} else if (random < 0.25) {
characterType = 5;
} else if (random < 0.45) {
characterType = 4;
} else if (random < 0.65) {
characterType = 3;
} else if (random < 0.85) {
characterType = 2;
} else {
characterType = 1;
}
var character = new SoundCharacter(characterType);
characters.push(character);
game.addChild(character);
character.spawn();
}
function updateDifficulty() {
var currentTime = LK.ticks * 16;
if (currentTime - lastSpeedIncrease > 10000) {
spawnInterval = Math.max(minSpawnInterval, spawnInterval * speedIncreaseRate);
lastSpeedIncrease = currentTime;
}
}
game.update = function () {
spawnTimer += 16;
if (spawnTimer >= spawnInterval) {
spawnCharacter();
spawnTimer = 0;
}
updateDifficulty();
for (var i = characters.length - 1; i >= 0; i--) {
var character = characters[i];
if (character && character.update) {
character.update();
}
}
};
spawnCharacter(); /****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var SoundCharacter = Container.expand(function (characterType) {
var self = Container.call(this);
self.characterType = characterType || 1;
self.points = self.characterType === 'special' ? 50 : self.characterType * 5;
self.lifetime = 0;
self.maxLifetime = self.characterType === 'special' ? 5000 : 8000;
self.isClicked = false;
var assetId = self.characterType === 'special' ? 'specialCharacter' : 'character' + self.characterType;
var characterGraphics = self.attachAsset(assetId, {
anchorX: 0.5,
anchorY: 0.5
});
self.spawn = function () {
var margin = 100;
self.x = margin + Math.random() * (2048 - margin * 2);
self.y = margin + Math.random() * (2732 - margin * 2);
self.alpha = 0;
tween(self, {
alpha: 1,
scaleX: 1.2,
scaleY: 1.2
}, {
duration: 300,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(self, {
scaleX: 1,
scaleY: 1
}, {
duration: 200
});
}
});
};
self.playSound = function () {
var soundId = self.characterType === 'special' ? 'Specialsound' : 'Characters1to5sound';
LK.getSound(soundId).play();
};
self.update = function () {
self.lifetime += 16;
if (self.lifetime >= self.maxLifetime && !self.isClicked) {
self.fadeOut();
}
};
self.fadeOut = function () {
if (self.isClicked) return;
tween(self, {
alpha: 0,
scaleX: 0.5,
scaleY: 0.5
}, {
duration: 300,
onFinish: function onFinish() {
self.removeFromGame();
}
});
};
self.removeFromGame = function () {
for (var i = characters.length - 1; i >= 0; i--) {
if (characters[i] === self) {
characters.splice(i, 1);
break;
}
}
self.destroy();
};
self.down = function (x, y, obj) {
if (self.isClicked) return;
self.isClicked = true;
self.playSound();
LK.setScore(LK.getScore() + self.points);
scoreTxt.setText(LK.getScore());
LK.effects.flashObject(self, 0xffffff, 200);
tween(self, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 150,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(self, {
alpha: 0,
scaleX: 0.3,
scaleY: 0.3
}, {
duration: 200,
onFinish: function onFinish() {
self.removeFromGame();
}
});
}
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x2c3e50
});
/****
* Game Code
****/
var characters = [];
var spawnTimer = 0;
var spawnInterval = 2000;
var minSpawnInterval = 800;
var speedIncreaseRate = 0.98;
var lastSpeedIncrease = 0;
var scoreTxt = new Text2('0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
function spawnCharacter() {
var characterType;
var random = Math.random();
if (random < 0.05) {
characterType = 'special';
} else if (random < 0.25) {
characterType = 5;
} else if (random < 0.45) {
characterType = 4;
} else if (random < 0.65) {
characterType = 3;
} else if (random < 0.85) {
characterType = 2;
} else {
characterType = 1;
}
var character = new SoundCharacter(characterType);
characters.push(character);
game.addChild(character);
character.spawn();
}
function updateDifficulty() {
var currentTime = LK.ticks * 16;
if (currentTime - lastSpeedIncrease > 10000) {
spawnInterval = Math.max(minSpawnInterval, spawnInterval * speedIncreaseRate);
lastSpeedIncrease = currentTime;
}
}
game.update = function () {
spawnTimer += 16;
if (spawnTimer >= spawnInterval) {
spawnCharacter();
spawnTimer = 0;
}
updateDifficulty();
for (var i = characters.length - 1; i >= 0; i--) {
var character = characters[i];
if (character && character.update) {
character.update();
}
}
};
spawnCharacter();