User prompt
Make me a health bar
User prompt
Make me change rotation ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Make me move
User prompt
Add more waves
Code edit (1 edits merged)
Please save this source code
User prompt
Red Dead Showdown
Initial prompt
Make me RDR2 Game
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Coin = Container.expand(function () {
var self = Container.call(this);
var coinGraphics = self.attachAsset('coin', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3;
self.update = function () {
self.y += self.speed;
self.rotation += 0.1;
};
return self;
});
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2;
self.shootTimer = 0;
self.shootDelay = 60 + Math.random() * 60;
self.direction = Math.random() < 0.5 ? -1 : 1;
self.update = function () {
self.y += self.speed;
self.x += self.direction * 1;
if (self.x < 50 || self.x > 1998) {
self.direction *= -1;
}
self.shootTimer++;
if (self.shootTimer >= self.shootDelay) {
self.shootTimer = 0;
var bullet = new EnemyBullet();
bullet.x = self.x;
bullet.y = self.y + 40;
enemyBullets.push(bullet);
game.addChild(bullet);
}
};
return self;
});
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('enemyBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 8;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
return self;
});
var PlayerBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('playerBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 15;
self.update = function () {
self.y -= self.speed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x8B7355
});
/****
* Game Code
****/
var player = game.addChild(new Player());
player.x = 1024;
player.y = 2400;
var playerBullets = [];
var enemies = [];
var enemyBullets = [];
var coins = [];
var dragNode = null;
var waveNumber = 1;
var enemiesKilled = 0;
var enemiesPerWave = 3;
var scoreTxt = new Text2('Score: 0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var waveTxt = new Text2('Wave: 1', {
size: 60,
fill: 0xFFDD44
});
waveTxt.anchor.set(0, 0);
waveTxt.x = 150;
waveTxt.y = 0;
LK.gui.topLeft.addChild(waveTxt);
function updateScore() {
scoreTxt.setText('Score: ' + LK.getScore());
}
function updateWave() {
waveTxt.setText('Wave: ' + waveNumber);
}
function spawnEnemy() {
var enemy = new Enemy();
enemy.x = Math.random() * 1800 + 124;
enemy.y = -50;
enemy.speed = 1 + waveNumber * 0.5;
enemies.push(enemy);
game.addChild(enemy);
}
function spawnWave() {
for (var i = 0; i < enemiesPerWave; i++) {
LK.setTimeout(function () {
spawnEnemy();
}, i * 1000);
}
}
function handleMove(x, y, obj) {
if (dragNode) {
dragNode.x = Math.max(40, Math.min(2008, x));
dragNode.y = Math.max(100, Math.min(2632, y));
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
if (obj === player) {
dragNode = player;
handleMove(x, y, obj);
} else {
var bullet = new PlayerBullet();
bullet.x = player.x;
bullet.y = player.y - 40;
playerBullets.push(bullet);
game.addChild(bullet);
LK.getSound('shoot').play();
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
spawnWave();
game.update = function () {
// Update player bullets
for (var i = playerBullets.length - 1; i >= 0; i--) {
var bullet = playerBullets[i];
if (bullet.lastY === undefined) bullet.lastY = bullet.y;
if (bullet.lastY >= -10 && bullet.y < -10) {
bullet.destroy();
playerBullets.splice(i, 1);
continue;
}
// Check collision with enemies
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (bullet.intersects(enemy)) {
LK.setScore(LK.getScore() + 10);
updateScore();
enemiesKilled++;
// Drop coin
var coin = new Coin();
coin.x = enemy.x;
coin.y = enemy.y;
coins.push(coin);
game.addChild(coin);
LK.getSound('enemyHit').play();
LK.effects.flashObject(enemy, 0xFF0000, 200);
bullet.destroy();
playerBullets.splice(i, 1);
enemy.destroy();
enemies.splice(j, 1);
break;
}
}
bullet.lastY = bullet.y;
}
// Update enemy bullets
for (var i = enemyBullets.length - 1; i >= 0; i--) {
var bullet = enemyBullets[i];
if (bullet.lastY === undefined) bullet.lastY = bullet.y;
if (bullet.lastY <= 2742 && bullet.y > 2742) {
bullet.destroy();
enemyBullets.splice(i, 1);
continue;
}
// Check collision with player
if (bullet.intersects(player)) {
LK.getSound('playerHit').play();
LK.effects.flashScreen(0xFF0000, 1000);
LK.showGameOver();
return;
}
bullet.lastY = bullet.y;
}
// Update enemies
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
if (enemy.lastY === undefined) enemy.lastY = enemy.y;
if (enemy.lastY <= 2742 && enemy.y > 2742) {
enemy.destroy();
enemies.splice(i, 1);
continue;
}
// Check collision with player
if (enemy.intersects(player)) {
LK.getSound('playerHit').play();
LK.effects.flashScreen(0xFF0000, 1000);
LK.showGameOver();
return;
}
enemy.lastY = enemy.y;
}
// Update coins
for (var i = coins.length - 1; i >= 0; i--) {
var coin = coins[i];
if (coin.lastY === undefined) coin.lastY = coin.y;
if (coin.lastY <= 2742 && coin.y > 2742) {
coin.destroy();
coins.splice(i, 1);
continue;
}
// Check collision with player
if (coin.intersects(player)) {
LK.setScore(LK.getScore() + 5);
updateScore();
LK.getSound('coinCollect').play();
LK.effects.flashObject(coin, 0xFFFFFF, 300);
coin.destroy();
coins.splice(i, 1);
continue;
}
coin.lastY = coin.y;
}
// Check if wave is complete
if (enemies.length === 0 && enemiesKilled >= enemiesPerWave) {
waveNumber++;
enemiesPerWave = Math.min(8, 3 + Math.floor(waveNumber / 2));
updateWave();
enemiesKilled = 0;
LK.setTimeout(function () {
spawnWave();
}, 2000);
}
}; ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,264 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Coin = Container.expand(function () {
+ var self = Container.call(this);
+ var coinGraphics = self.attachAsset('coin', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 3;
+ self.update = function () {
+ self.y += self.speed;
+ self.rotation += 0.1;
+ };
+ return self;
+});
+var Enemy = Container.expand(function () {
+ var self = Container.call(this);
+ var enemyGraphics = self.attachAsset('enemy', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 2;
+ self.shootTimer = 0;
+ self.shootDelay = 60 + Math.random() * 60;
+ self.direction = Math.random() < 0.5 ? -1 : 1;
+ self.update = function () {
+ self.y += self.speed;
+ self.x += self.direction * 1;
+ if (self.x < 50 || self.x > 1998) {
+ self.direction *= -1;
+ }
+ self.shootTimer++;
+ if (self.shootTimer >= self.shootDelay) {
+ self.shootTimer = 0;
+ var bullet = new EnemyBullet();
+ bullet.x = self.x;
+ bullet.y = self.y + 40;
+ enemyBullets.push(bullet);
+ game.addChild(bullet);
+ }
+ };
+ return self;
+});
+var EnemyBullet = Container.expand(function () {
+ var self = Container.call(this);
+ var bulletGraphics = self.attachAsset('enemyBullet', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 8;
+ self.update = function () {
+ self.y += self.speed;
+ };
+ return self;
+});
+var Player = Container.expand(function () {
+ var self = Container.call(this);
+ var playerGraphics = self.attachAsset('player', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ return self;
+});
+var PlayerBullet = Container.expand(function () {
+ var self = Container.call(this);
+ var bulletGraphics = self.attachAsset('playerBullet', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 15;
+ self.update = function () {
+ self.y -= self.speed;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x8B7355
+});
+
+/****
+* Game Code
+****/
+var player = game.addChild(new Player());
+player.x = 1024;
+player.y = 2400;
+var playerBullets = [];
+var enemies = [];
+var enemyBullets = [];
+var coins = [];
+var dragNode = null;
+var waveNumber = 1;
+var enemiesKilled = 0;
+var enemiesPerWave = 3;
+var scoreTxt = new Text2('Score: 0', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+var waveTxt = new Text2('Wave: 1', {
+ size: 60,
+ fill: 0xFFDD44
+});
+waveTxt.anchor.set(0, 0);
+waveTxt.x = 150;
+waveTxt.y = 0;
+LK.gui.topLeft.addChild(waveTxt);
+function updateScore() {
+ scoreTxt.setText('Score: ' + LK.getScore());
+}
+function updateWave() {
+ waveTxt.setText('Wave: ' + waveNumber);
+}
+function spawnEnemy() {
+ var enemy = new Enemy();
+ enemy.x = Math.random() * 1800 + 124;
+ enemy.y = -50;
+ enemy.speed = 1 + waveNumber * 0.5;
+ enemies.push(enemy);
+ game.addChild(enemy);
+}
+function spawnWave() {
+ for (var i = 0; i < enemiesPerWave; i++) {
+ LK.setTimeout(function () {
+ spawnEnemy();
+ }, i * 1000);
+ }
+}
+function handleMove(x, y, obj) {
+ if (dragNode) {
+ dragNode.x = Math.max(40, Math.min(2008, x));
+ dragNode.y = Math.max(100, Math.min(2632, y));
+ }
+}
+game.move = handleMove;
+game.down = function (x, y, obj) {
+ if (obj === player) {
+ dragNode = player;
+ handleMove(x, y, obj);
+ } else {
+ var bullet = new PlayerBullet();
+ bullet.x = player.x;
+ bullet.y = player.y - 40;
+ playerBullets.push(bullet);
+ game.addChild(bullet);
+ LK.getSound('shoot').play();
+ }
+};
+game.up = function (x, y, obj) {
+ dragNode = null;
+};
+spawnWave();
+game.update = function () {
+ // Update player bullets
+ for (var i = playerBullets.length - 1; i >= 0; i--) {
+ var bullet = playerBullets[i];
+ if (bullet.lastY === undefined) bullet.lastY = bullet.y;
+ if (bullet.lastY >= -10 && bullet.y < -10) {
+ bullet.destroy();
+ playerBullets.splice(i, 1);
+ continue;
+ }
+ // Check collision with enemies
+ for (var j = enemies.length - 1; j >= 0; j--) {
+ var enemy = enemies[j];
+ if (bullet.intersects(enemy)) {
+ LK.setScore(LK.getScore() + 10);
+ updateScore();
+ enemiesKilled++;
+ // Drop coin
+ var coin = new Coin();
+ coin.x = enemy.x;
+ coin.y = enemy.y;
+ coins.push(coin);
+ game.addChild(coin);
+ LK.getSound('enemyHit').play();
+ LK.effects.flashObject(enemy, 0xFF0000, 200);
+ bullet.destroy();
+ playerBullets.splice(i, 1);
+ enemy.destroy();
+ enemies.splice(j, 1);
+ break;
+ }
+ }
+ bullet.lastY = bullet.y;
+ }
+ // Update enemy bullets
+ for (var i = enemyBullets.length - 1; i >= 0; i--) {
+ var bullet = enemyBullets[i];
+ if (bullet.lastY === undefined) bullet.lastY = bullet.y;
+ if (bullet.lastY <= 2742 && bullet.y > 2742) {
+ bullet.destroy();
+ enemyBullets.splice(i, 1);
+ continue;
+ }
+ // Check collision with player
+ if (bullet.intersects(player)) {
+ LK.getSound('playerHit').play();
+ LK.effects.flashScreen(0xFF0000, 1000);
+ LK.showGameOver();
+ return;
+ }
+ bullet.lastY = bullet.y;
+ }
+ // Update enemies
+ for (var i = enemies.length - 1; i >= 0; i--) {
+ var enemy = enemies[i];
+ if (enemy.lastY === undefined) enemy.lastY = enemy.y;
+ if (enemy.lastY <= 2742 && enemy.y > 2742) {
+ enemy.destroy();
+ enemies.splice(i, 1);
+ continue;
+ }
+ // Check collision with player
+ if (enemy.intersects(player)) {
+ LK.getSound('playerHit').play();
+ LK.effects.flashScreen(0xFF0000, 1000);
+ LK.showGameOver();
+ return;
+ }
+ enemy.lastY = enemy.y;
+ }
+ // Update coins
+ for (var i = coins.length - 1; i >= 0; i--) {
+ var coin = coins[i];
+ if (coin.lastY === undefined) coin.lastY = coin.y;
+ if (coin.lastY <= 2742 && coin.y > 2742) {
+ coin.destroy();
+ coins.splice(i, 1);
+ continue;
+ }
+ // Check collision with player
+ if (coin.intersects(player)) {
+ LK.setScore(LK.getScore() + 5);
+ updateScore();
+ LK.getSound('coinCollect').play();
+ LK.effects.flashObject(coin, 0xFFFFFF, 300);
+ coin.destroy();
+ coins.splice(i, 1);
+ continue;
+ }
+ coin.lastY = coin.y;
+ }
+ // Check if wave is complete
+ if (enemies.length === 0 && enemiesKilled >= enemiesPerWave) {
+ waveNumber++;
+ enemiesPerWave = Math.min(8, 3 + Math.floor(waveNumber / 2));
+ updateWave();
+ enemiesKilled = 0;
+ LK.setTimeout(function () {
+ spawnWave();
+ }, 2000);
+ }
+};
\ No newline at end of file
Make me a boss for RDR2. In-Game asset. 2d. High contrast. No shadows
Make me a coin for RDR2. In-Game asset. 2d. High contrast. No shadows
Make me a enemy for RDR2. In-Game asset. 2d. High contrast. No shadows
Make me a enemy bullet for RDR2. In-Game asset. 2d. High contrast. No shadows
Make me a player bullet for RDR2. In-Game asset. 2d. High contrast. No shadows
Make me a Player for RDR2. In-Game asset. 2d. High contrast. No shadows