User prompt
que luego de sierta cantidad de puntage aparesca un gefe final ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
que el personage tenga 3 vidas
User prompt
que luego de 1000 haya un boss final que la tasa tenga que destruir con obgetos que ballan callendo ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
que al bolar la tasa de café tenga una distinta animacion ↪💡 Consider importing and using the following plugins: @upit/tween.v1
Code edit (1 edits merged)
Please save this source code
User prompt
Coffee Cup's Golden Bean Quest
Initial prompt
crea un juego con la tematica de una tasa de cafe que emprende una aventura para conseguir el grano dorado
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var CoffeeCup = Container.expand(function () {
var self = Container.call(this);
var cupGraphics = self.attachAsset('coffeeCup', {
anchorX: 0.5,
anchorY: 0.5
});
self.velocityY = 0;
self.gravity = 0.8;
self.jumpForce = -12;
self.isRising = false;
self.isInvincible = false;
self.invincibleTimer = 0;
self.update = function () {
if (self.isRising) {
self.velocityY += self.jumpForce * 0.3;
} else {
self.velocityY += self.gravity;
}
self.velocityY = Math.max(-15, Math.min(15, self.velocityY));
self.y += self.velocityY;
if (self.y < 100) {
self.y = 100;
self.velocityY = 0;
}
if (self.y > 2632) {
self.y = 2632;
self.velocityY = 0;
}
if (self.isInvincible) {
self.invincibleTimer--;
cupGraphics.alpha = self.invincibleTimer % 10 < 5 ? 0.5 : 1.0;
if (self.invincibleTimer <= 0) {
self.isInvincible = false;
cupGraphics.alpha = 1.0;
}
}
};
self.makeInvincible = function () {
self.isInvincible = true;
self.invincibleTimer = 300;
};
return self;
});
var GoldenBean = Container.expand(function () {
var self = Container.call(this);
var beanGraphics = self.attachAsset('goldenBean', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -8;
self.collected = false;
self.pulseTimer = 0;
self.update = function () {
self.x += self.speed;
beanGraphics.rotation += 0.15;
self.pulseTimer += 0.2;
var scale = 1 + Math.sin(self.pulseTimer) * 0.2;
beanGraphics.scaleX = scale;
beanGraphics.scaleY = scale;
};
return self;
});
var Obstacle = Container.expand(function () {
var self = Container.call(this);
var obstacleGraphics = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -8;
self.update = function () {
self.x += self.speed;
};
return self;
});
var RegularBean = Container.expand(function () {
var self = Container.call(this);
var beanGraphics = self.attachAsset('regularBean', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -8;
self.collected = false;
self.update = function () {
self.x += self.speed;
beanGraphics.rotation += 0.1;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
game.setBackgroundColor(0x87CEEB);
// Game variables
var coffeeCup;
var regularBeans = [];
var goldenBeans = [];
var obstacles = [];
var gameSpeed = 1;
var spawnTimer = 0;
var goldenBeanTimer = 0;
var highScore = storage.highScore || 0;
// UI elements
var scoreTxt = new Text2('Score: 0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var highScoreTxt = new Text2('Best: ' + highScore, {
size: 60,
fill: 0xFFFF00
});
highScoreTxt.anchor.set(1, 0);
highScoreTxt.x = -50;
highScoreTxt.y = 100;
LK.gui.topRight.addChild(highScoreTxt);
// Initialize coffee cup
coffeeCup = game.addChild(new CoffeeCup());
coffeeCup.x = 400;
coffeeCup.y = 1366;
// Input handling
game.down = function (x, y, obj) {
coffeeCup.isRising = true;
};
game.up = function (x, y, obj) {
coffeeCup.isRising = false;
};
// Spawn functions
function spawnRegularBean() {
var bean = new RegularBean();
bean.x = 2200;
bean.y = Math.random() * 2400 + 200;
regularBeans.push(bean);
game.addChild(bean);
}
function spawnGoldenBean() {
var bean = new GoldenBean();
bean.x = 2200;
bean.y = Math.random() * 2400 + 200;
goldenBeans.push(bean);
game.addChild(bean);
}
function spawnObstacle() {
var obstacle = new Obstacle();
obstacle.x = 2200;
obstacle.y = Math.random() * 2000 + 400;
obstacles.push(obstacle);
game.addChild(obstacle);
}
// Main game loop
game.update = function () {
// Update game speed
gameSpeed = 1 + LK.getScore() / 100 * 0.5;
// Update spawn timers
spawnTimer++;
goldenBeanTimer++;
// Spawn regular beans
if (spawnTimer % Math.max(30, 60 - Math.floor(LK.getScore() / 10)) === 0) {
spawnRegularBean();
}
// Spawn obstacles
if (spawnTimer % Math.max(80, 120 - Math.floor(LK.getScore() / 5)) === 0) {
spawnObstacle();
}
// Spawn golden bean (rare)
if (goldenBeanTimer > 600 && Math.random() < 0.01) {
spawnGoldenBean();
goldenBeanTimer = 0;
}
// Update and check regular beans
for (var i = regularBeans.length - 1; i >= 0; i--) {
var bean = regularBeans[i];
if (bean.x < -100) {
bean.destroy();
regularBeans.splice(i, 1);
continue;
}
if (!bean.collected && bean.intersects(coffeeCup)) {
bean.collected = true;
LK.setScore(LK.getScore() + 10);
scoreTxt.setText('Score: ' + LK.getScore());
LK.getSound('collectBean').play();
LK.effects.flashObject(bean, 0xFFFFFF, 200);
tween(bean, {
alpha: 0,
scaleX: 2,
scaleY: 2
}, {
duration: 200,
onFinish: function onFinish() {
bean.destroy();
}
});
regularBeans.splice(i, 1);
}
}
// Update and check golden beans
for (var j = goldenBeans.length - 1; j >= 0; j--) {
var goldenBean = goldenBeans[j];
if (goldenBean.x < -100) {
goldenBean.destroy();
goldenBeans.splice(j, 1);
continue;
}
if (!goldenBean.collected && goldenBean.intersects(coffeeCup)) {
goldenBean.collected = true;
LK.setScore(LK.getScore() + 100);
scoreTxt.setText('Score: ' + LK.getScore());
LK.getSound('collectGolden').play();
LK.effects.flashScreen(0xFFD700, 500);
coffeeCup.makeInvincible();
tween(goldenBean, {
alpha: 0,
scaleX: 3,
scaleY: 3
}, {
duration: 500,
onFinish: function onFinish() {
goldenBean.destroy();
}
});
goldenBeans.splice(j, 1);
}
}
// Update and check obstacles
for (var k = obstacles.length - 1; k >= 0; k--) {
var obstacle = obstacles[k];
if (obstacle.x < -100) {
obstacle.destroy();
obstacles.splice(k, 1);
continue;
}
if (!coffeeCup.isInvincible && obstacle.intersects(coffeeCup)) {
// Update high score
if (LK.getScore() > highScore) {
highScore = LK.getScore();
storage.highScore = highScore;
}
LK.effects.flashScreen(0xFF0000, 1000);
LK.showGameOver();
break;
}
}
// Update speed for all moving objects
for (var l = 0; l < regularBeans.length; l++) {
regularBeans[l].speed = -8 * gameSpeed;
}
for (var m = 0; m < goldenBeans.length; m++) {
goldenBeans[m].speed = -8 * gameSpeed;
}
for (var n = 0; n < obstacles.length; n++) {
obstacles[n].speed = -8 * gameSpeed;
}
};
// Start background music
LK.playMusic('bgmusic'); ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,273 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1");
+
+/****
+* Classes
+****/
+var CoffeeCup = Container.expand(function () {
+ var self = Container.call(this);
+ var cupGraphics = self.attachAsset('coffeeCup', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.velocityY = 0;
+ self.gravity = 0.8;
+ self.jumpForce = -12;
+ self.isRising = false;
+ self.isInvincible = false;
+ self.invincibleTimer = 0;
+ self.update = function () {
+ if (self.isRising) {
+ self.velocityY += self.jumpForce * 0.3;
+ } else {
+ self.velocityY += self.gravity;
+ }
+ self.velocityY = Math.max(-15, Math.min(15, self.velocityY));
+ self.y += self.velocityY;
+ if (self.y < 100) {
+ self.y = 100;
+ self.velocityY = 0;
+ }
+ if (self.y > 2632) {
+ self.y = 2632;
+ self.velocityY = 0;
+ }
+ if (self.isInvincible) {
+ self.invincibleTimer--;
+ cupGraphics.alpha = self.invincibleTimer % 10 < 5 ? 0.5 : 1.0;
+ if (self.invincibleTimer <= 0) {
+ self.isInvincible = false;
+ cupGraphics.alpha = 1.0;
+ }
+ }
+ };
+ self.makeInvincible = function () {
+ self.isInvincible = true;
+ self.invincibleTimer = 300;
+ };
+ return self;
+});
+var GoldenBean = Container.expand(function () {
+ var self = Container.call(this);
+ var beanGraphics = self.attachAsset('goldenBean', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = -8;
+ self.collected = false;
+ self.pulseTimer = 0;
+ self.update = function () {
+ self.x += self.speed;
+ beanGraphics.rotation += 0.15;
+ self.pulseTimer += 0.2;
+ var scale = 1 + Math.sin(self.pulseTimer) * 0.2;
+ beanGraphics.scaleX = scale;
+ beanGraphics.scaleY = scale;
+ };
+ return self;
+});
+var Obstacle = Container.expand(function () {
+ var self = Container.call(this);
+ var obstacleGraphics = self.attachAsset('obstacle', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = -8;
+ self.update = function () {
+ self.x += self.speed;
+ };
+ return self;
+});
+var RegularBean = Container.expand(function () {
+ var self = Container.call(this);
+ var beanGraphics = self.attachAsset('regularBean', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = -8;
+ self.collected = false;
+ self.update = function () {
+ self.x += self.speed;
+ beanGraphics.rotation += 0.1;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB
+});
+
+/****
+* Game Code
+****/
+game.setBackgroundColor(0x87CEEB);
+// Game variables
+var coffeeCup;
+var regularBeans = [];
+var goldenBeans = [];
+var obstacles = [];
+var gameSpeed = 1;
+var spawnTimer = 0;
+var goldenBeanTimer = 0;
+var highScore = storage.highScore || 0;
+// UI elements
+var scoreTxt = new Text2('Score: 0', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+var highScoreTxt = new Text2('Best: ' + highScore, {
+ size: 60,
+ fill: 0xFFFF00
+});
+highScoreTxt.anchor.set(1, 0);
+highScoreTxt.x = -50;
+highScoreTxt.y = 100;
+LK.gui.topRight.addChild(highScoreTxt);
+// Initialize coffee cup
+coffeeCup = game.addChild(new CoffeeCup());
+coffeeCup.x = 400;
+coffeeCup.y = 1366;
+// Input handling
+game.down = function (x, y, obj) {
+ coffeeCup.isRising = true;
+};
+game.up = function (x, y, obj) {
+ coffeeCup.isRising = false;
+};
+// Spawn functions
+function spawnRegularBean() {
+ var bean = new RegularBean();
+ bean.x = 2200;
+ bean.y = Math.random() * 2400 + 200;
+ regularBeans.push(bean);
+ game.addChild(bean);
+}
+function spawnGoldenBean() {
+ var bean = new GoldenBean();
+ bean.x = 2200;
+ bean.y = Math.random() * 2400 + 200;
+ goldenBeans.push(bean);
+ game.addChild(bean);
+}
+function spawnObstacle() {
+ var obstacle = new Obstacle();
+ obstacle.x = 2200;
+ obstacle.y = Math.random() * 2000 + 400;
+ obstacles.push(obstacle);
+ game.addChild(obstacle);
+}
+// Main game loop
+game.update = function () {
+ // Update game speed
+ gameSpeed = 1 + LK.getScore() / 100 * 0.5;
+ // Update spawn timers
+ spawnTimer++;
+ goldenBeanTimer++;
+ // Spawn regular beans
+ if (spawnTimer % Math.max(30, 60 - Math.floor(LK.getScore() / 10)) === 0) {
+ spawnRegularBean();
+ }
+ // Spawn obstacles
+ if (spawnTimer % Math.max(80, 120 - Math.floor(LK.getScore() / 5)) === 0) {
+ spawnObstacle();
+ }
+ // Spawn golden bean (rare)
+ if (goldenBeanTimer > 600 && Math.random() < 0.01) {
+ spawnGoldenBean();
+ goldenBeanTimer = 0;
+ }
+ // Update and check regular beans
+ for (var i = regularBeans.length - 1; i >= 0; i--) {
+ var bean = regularBeans[i];
+ if (bean.x < -100) {
+ bean.destroy();
+ regularBeans.splice(i, 1);
+ continue;
+ }
+ if (!bean.collected && bean.intersects(coffeeCup)) {
+ bean.collected = true;
+ LK.setScore(LK.getScore() + 10);
+ scoreTxt.setText('Score: ' + LK.getScore());
+ LK.getSound('collectBean').play();
+ LK.effects.flashObject(bean, 0xFFFFFF, 200);
+ tween(bean, {
+ alpha: 0,
+ scaleX: 2,
+ scaleY: 2
+ }, {
+ duration: 200,
+ onFinish: function onFinish() {
+ bean.destroy();
+ }
+ });
+ regularBeans.splice(i, 1);
+ }
+ }
+ // Update and check golden beans
+ for (var j = goldenBeans.length - 1; j >= 0; j--) {
+ var goldenBean = goldenBeans[j];
+ if (goldenBean.x < -100) {
+ goldenBean.destroy();
+ goldenBeans.splice(j, 1);
+ continue;
+ }
+ if (!goldenBean.collected && goldenBean.intersects(coffeeCup)) {
+ goldenBean.collected = true;
+ LK.setScore(LK.getScore() + 100);
+ scoreTxt.setText('Score: ' + LK.getScore());
+ LK.getSound('collectGolden').play();
+ LK.effects.flashScreen(0xFFD700, 500);
+ coffeeCup.makeInvincible();
+ tween(goldenBean, {
+ alpha: 0,
+ scaleX: 3,
+ scaleY: 3
+ }, {
+ duration: 500,
+ onFinish: function onFinish() {
+ goldenBean.destroy();
+ }
+ });
+ goldenBeans.splice(j, 1);
+ }
+ }
+ // Update and check obstacles
+ for (var k = obstacles.length - 1; k >= 0; k--) {
+ var obstacle = obstacles[k];
+ if (obstacle.x < -100) {
+ obstacle.destroy();
+ obstacles.splice(k, 1);
+ continue;
+ }
+ if (!coffeeCup.isInvincible && obstacle.intersects(coffeeCup)) {
+ // Update high score
+ if (LK.getScore() > highScore) {
+ highScore = LK.getScore();
+ storage.highScore = highScore;
+ }
+ LK.effects.flashScreen(0xFF0000, 1000);
+ LK.showGameOver();
+ break;
+ }
+ }
+ // Update speed for all moving objects
+ for (var l = 0; l < regularBeans.length; l++) {
+ regularBeans[l].speed = -8 * gameSpeed;
+ }
+ for (var m = 0; m < goldenBeans.length; m++) {
+ goldenBeans[m].speed = -8 * gameSpeed;
+ }
+ for (var n = 0; n < obstacles.length; n++) {
+ obstacles[n].speed = -8 * gameSpeed;
+ }
+};
+// Start background music
+LK.playMusic('bgmusic');
\ No newline at end of file
una tasa de cafe caricaturesca de pixeles con un jet pak. In-Game asset. 2d. High contrast. No shadows
grano de cafe dorado de pixeles. In-Game asset. 2d. High contrast. No shadows
grano de caffe de pixeles. In-Game asset. 2d. High contrast. No shadows
martillo mounstroso de pixeles. In-Game asset. 2d. High contrast. No shadows
corazon de pixeles. In-Game asset. 2d. High contrast. No shadows
pan de pixeles. In-Game asset. 2d. High contrast. No shadows
coete de pixeles. In-Game asset. 2d. High contrast. No shadows
paisage con cascadas de cafe de pixeles. In-Game asset. 2d. High contrast. No shadows