User prompt
Add a main menu and maybe add a tutorial in the main menu
User prompt
make it so you can select the color you want by clicking it and then control the left arrow sprites
User prompt
There's nothing in the random game.
User prompt
Color Cascade
Initial prompt
Make a random game, it could be your choice, just make a random game.
/****
* Classes
****/
var Basket = Container.expand(function (color) {
var self = Container.call(this);
self.color = color;
self.isDragging = false;
var basketGraphics = self.attachAsset(color + 'Basket', {
anchorX: 0.5,
anchorY: 0.5
});
self.down = function (x, y, obj) {
self.isDragging = true;
draggedBasket = self;
};
self.up = function (x, y, obj) {
self.isDragging = false;
if (draggedBasket === self) {
draggedBasket = null;
}
};
return self;
});
// Game variables
var Orb = Container.expand(function (color) {
var self = Container.call(this);
self.color = color;
self.speed = 3 + Math.random() * 2; // Random fall speed
var orbGraphics = self.attachAsset(color + 'Orb', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
if (self.lastY === undefined) self.lastY = self.y;
self.y += self.speed;
// Check if orb hit the ground
if (self.lastY < 2650 && self.y >= 2650) {
// Missed - lose health
health--;
LK.getSound('miss').play();
self.destroy();
// Remove from orbs array
for (var i = orbs.length - 1; i >= 0; i--) {
if (orbs[i] === self) {
orbs.splice(i, 1);
break;
}
}
}
self.lastY = self.y;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x001122
});
/****
* Game Code
****/
// Game variables
// Colored orbs
// Colored baskets
// Sound effects
var score = 0;
var health = 5;
var gameSpeed = 1;
var colors = ['red', 'blue', 'green'];
var orbs = [];
var baskets = [];
var draggedBasket = null;
var orbSpawnTimer = 0;
var orbSpawnDelay = 90; // frames between orb spawns
// UI Elements
var scoreText = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
var healthText = new Text2('Health: 5', {
size: 60,
fill: 0xFF4444
});
healthText.anchor.set(0.5, 0);
healthText.y = 80;
LK.gui.top.addChild(healthText);
// Create baskets
for (var i = 0; i < colors.length; i++) {
var basket = new Basket(colors[i]);
basket.x = 400 + i * 400;
basket.y = 2600;
baskets.push(basket);
game.addChild(basket);
}
// Mouse/touch handlers
game.move = function (x, y, obj) {
if (draggedBasket) {
draggedBasket.x = Math.max(60, Math.min(1988, x));
}
};
game.up = function (x, y, obj) {
draggedBasket = null;
for (var i = 0; i < baskets.length; i++) {
baskets[i].isDragging = false;
}
};
// Main game update loop
game.update = function () {
// Check for game over
if (health <= 0) {
LK.showGameOver();
return;
}
// Check for win condition
if (score >= 500) {
LK.showYouWin();
return;
}
// Spawn orbs
orbSpawnTimer++;
if (orbSpawnTimer >= orbSpawnDelay / gameSpeed) {
orbSpawnTimer = 0;
var randomColor = colors[Math.floor(Math.random() * colors.length)];
var newOrb = new Orb(randomColor);
newOrb.x = 100 + Math.random() * 1848;
newOrb.y = -50;
newOrb.lastIntersecting = [];
// Initialize intersection tracking for each basket
for (var b = 0; b < baskets.length; b++) {
newOrb.lastIntersecting[b] = false;
}
orbs.push(newOrb);
game.addChild(newOrb);
}
// Check orb-basket collisions
for (var i = orbs.length - 1; i >= 0; i--) {
var orb = orbs[i];
var orbCaught = false;
for (var j = 0; j < baskets.length; j++) {
var basket = baskets[j];
var currentIntersecting = orb.intersects(basket);
if (!orb.lastIntersecting[j] && currentIntersecting) {
// Collision just happened
if (orb.color === basket.color) {
// Correct catch
score += 10;
LK.getSound('catch').play();
LK.setScore(score);
} else {
// Wrong color
health--;
LK.getSound('shatter').play();
LK.effects.flashObject(orb, 0xff0000, 300);
}
orb.destroy();
orbs.splice(i, 1);
orbCaught = true;
break;
}
orb.lastIntersecting[j] = currentIntersecting;
}
if (orbCaught) continue;
// Remove orbs that are off screen
if (orb.y > 2800) {
orb.destroy();
orbs.splice(i, 1);
}
}
// Update UI
scoreText.setText('Score: ' + score);
healthText.setText('Health: ' + health);
// Increase difficulty
if (score >= 100 && colors.length === 3) {
colors.push('yellow');
// Add yellow basket
var yellowBasket = new Basket('yellow');
yellowBasket.x = 400 + 3 * 400;
yellowBasket.y = 2600;
baskets.push(yellowBasket);
game.addChild(yellowBasket);
}
if (score >= 200 && colors.length === 4) {
colors.push('purple');
// Add purple basket
var purpleBasket = new Basket('purple');
purpleBasket.x = 400 + 4 * 400;
purpleBasket.y = 2600;
baskets.push(purpleBasket);
game.addChild(purpleBasket);
}
// Increase game speed every 50 points
gameSpeed = 1 + Math.floor(score / 50) * 0.2;
orbSpawnDelay = Math.max(30, 90 - Math.floor(score / 50) * 10);
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,199 @@
-/****
+/****
+* Classes
+****/
+var Basket = Container.expand(function (color) {
+ var self = Container.call(this);
+ self.color = color;
+ self.isDragging = false;
+ var basketGraphics = self.attachAsset(color + 'Basket', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.down = function (x, y, obj) {
+ self.isDragging = true;
+ draggedBasket = self;
+ };
+ self.up = function (x, y, obj) {
+ self.isDragging = false;
+ if (draggedBasket === self) {
+ draggedBasket = null;
+ }
+ };
+ return self;
+});
+// Game variables
+var Orb = Container.expand(function (color) {
+ var self = Container.call(this);
+ self.color = color;
+ self.speed = 3 + Math.random() * 2; // Random fall speed
+ var orbGraphics = self.attachAsset(color + 'Orb', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.update = function () {
+ if (self.lastY === undefined) self.lastY = self.y;
+ self.y += self.speed;
+ // Check if orb hit the ground
+ if (self.lastY < 2650 && self.y >= 2650) {
+ // Missed - lose health
+ health--;
+ LK.getSound('miss').play();
+ self.destroy();
+ // Remove from orbs array
+ for (var i = orbs.length - 1; i >= 0; i--) {
+ if (orbs[i] === self) {
+ orbs.splice(i, 1);
+ break;
+ }
+ }
+ }
+ self.lastY = self.y;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x001122
+});
+
+/****
+* Game Code
+****/
+// Game variables
+// Colored orbs
+// Colored baskets
+// Sound effects
+var score = 0;
+var health = 5;
+var gameSpeed = 1;
+var colors = ['red', 'blue', 'green'];
+var orbs = [];
+var baskets = [];
+var draggedBasket = null;
+var orbSpawnTimer = 0;
+var orbSpawnDelay = 90; // frames between orb spawns
+// UI Elements
+var scoreText = new Text2('Score: 0', {
+ size: 60,
+ fill: 0xFFFFFF
+});
+scoreText.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreText);
+var healthText = new Text2('Health: 5', {
+ size: 60,
+ fill: 0xFF4444
+});
+healthText.anchor.set(0.5, 0);
+healthText.y = 80;
+LK.gui.top.addChild(healthText);
+// Create baskets
+for (var i = 0; i < colors.length; i++) {
+ var basket = new Basket(colors[i]);
+ basket.x = 400 + i * 400;
+ basket.y = 2600;
+ baskets.push(basket);
+ game.addChild(basket);
+}
+// Mouse/touch handlers
+game.move = function (x, y, obj) {
+ if (draggedBasket) {
+ draggedBasket.x = Math.max(60, Math.min(1988, x));
+ }
+};
+game.up = function (x, y, obj) {
+ draggedBasket = null;
+ for (var i = 0; i < baskets.length; i++) {
+ baskets[i].isDragging = false;
+ }
+};
+// Main game update loop
+game.update = function () {
+ // Check for game over
+ if (health <= 0) {
+ LK.showGameOver();
+ return;
+ }
+ // Check for win condition
+ if (score >= 500) {
+ LK.showYouWin();
+ return;
+ }
+ // Spawn orbs
+ orbSpawnTimer++;
+ if (orbSpawnTimer >= orbSpawnDelay / gameSpeed) {
+ orbSpawnTimer = 0;
+ var randomColor = colors[Math.floor(Math.random() * colors.length)];
+ var newOrb = new Orb(randomColor);
+ newOrb.x = 100 + Math.random() * 1848;
+ newOrb.y = -50;
+ newOrb.lastIntersecting = [];
+ // Initialize intersection tracking for each basket
+ for (var b = 0; b < baskets.length; b++) {
+ newOrb.lastIntersecting[b] = false;
+ }
+ orbs.push(newOrb);
+ game.addChild(newOrb);
+ }
+ // Check orb-basket collisions
+ for (var i = orbs.length - 1; i >= 0; i--) {
+ var orb = orbs[i];
+ var orbCaught = false;
+ for (var j = 0; j < baskets.length; j++) {
+ var basket = baskets[j];
+ var currentIntersecting = orb.intersects(basket);
+ if (!orb.lastIntersecting[j] && currentIntersecting) {
+ // Collision just happened
+ if (orb.color === basket.color) {
+ // Correct catch
+ score += 10;
+ LK.getSound('catch').play();
+ LK.setScore(score);
+ } else {
+ // Wrong color
+ health--;
+ LK.getSound('shatter').play();
+ LK.effects.flashObject(orb, 0xff0000, 300);
+ }
+ orb.destroy();
+ orbs.splice(i, 1);
+ orbCaught = true;
+ break;
+ }
+ orb.lastIntersecting[j] = currentIntersecting;
+ }
+ if (orbCaught) continue;
+ // Remove orbs that are off screen
+ if (orb.y > 2800) {
+ orb.destroy();
+ orbs.splice(i, 1);
+ }
+ }
+ // Update UI
+ scoreText.setText('Score: ' + score);
+ healthText.setText('Health: ' + health);
+ // Increase difficulty
+ if (score >= 100 && colors.length === 3) {
+ colors.push('yellow');
+ // Add yellow basket
+ var yellowBasket = new Basket('yellow');
+ yellowBasket.x = 400 + 3 * 400;
+ yellowBasket.y = 2600;
+ baskets.push(yellowBasket);
+ game.addChild(yellowBasket);
+ }
+ if (score >= 200 && colors.length === 4) {
+ colors.push('purple');
+ // Add purple basket
+ var purpleBasket = new Basket('purple');
+ purpleBasket.x = 400 + 4 * 400;
+ purpleBasket.y = 2600;
+ baskets.push(purpleBasket);
+ game.addChild(purpleBasket);
+ }
+ // Increase game speed every 50 points
+ gameSpeed = 1 + Math.floor(score / 50) * 0.2;
+ orbSpawnDelay = Math.max(30, 90 - Math.floor(score / 50) * 10);
+};
\ No newline at end of file