/**** * 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' : 'sound' + self.characterType; 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();
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,169 @@
-/****
+/****
+* 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' : 'sound' + self.characterType;
+ 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: 0x000000
-});
\ No newline at end of file
+ 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();
\ No newline at end of file