User prompt
delete obstacles
User prompt
deleye obstacles
User prompt
karakter tıklanılan yere gitmesin
User prompt
powerup 50 puan getirsin
User prompt
mermi assetini ters çevir
User prompt
mermi assetini giden yöne yönlendir
User prompt
mermiyi gideceği yöne yönlendir
User prompt
mermi tıklanan yere gitsin
Code edit (1 edits merged)
Please save this source code
User prompt
Arcade Frenzy
Initial prompt
arcade
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Bullet class
var Bullet = Container.expand(function () {
var self = Container.call(this);
var bulletSprite = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -32;
self.update = function () {
self.y += self.speed;
};
return self;
});
// Enemy class
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemySprite = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.radius = enemySprite.width * 0.5;
self.speed = 8 + Math.random() * 8;
self.dir = Math.random() < 0.5 ? -1 : 1;
self.xSpeed = self.dir * (4 + Math.random() * 6);
self.update = function () {
self.y += self.speed;
self.x += self.xSpeed;
// Bounce off walls
if (self.x < self.radius) {
self.x = self.radius;
self.xSpeed *= -1;
}
if (self.x > 2048 - self.radius) {
self.x = 2048 - self.radius;
self.xSpeed *= -1;
}
};
return self;
});
// Obstacle class
var Obstacle = Container.expand(function () {
var self = Container.call(this);
var obsSprite = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5
});
self.width = obsSprite.width;
self.height = obsSprite.height;
self.speed = 12 + Math.random() * 8;
self.update = function () {
self.y += self.speed;
};
return self;
});
// Player class
var Player = Container.expand(function () {
var self = Container.call(this);
var playerSprite = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.radius = playerSprite.width * 0.5;
self.lives = 3;
self.invincible = false;
self.invincibleTicks = 0;
self.shootCooldown = 0;
self.update = function () {
if (self.invincible) {
self.invincibleTicks--;
if (self.invincibleTicks <= 0) {
self.invincible = false;
playerSprite.alpha = 1;
} else {
// Flicker effect
playerSprite.alpha = LK.ticks % 10 < 5 ? 0.4 : 1;
}
}
if (self.shootCooldown > 0) self.shootCooldown--;
};
// Called when player is hit
self.hit = function () {
if (self.invincible) return;
self.lives--;
self.invincible = true;
self.invincibleTicks = 90; // 1.5 seconds
playerSprite.alpha = 0.4;
LK.effects.flashObject(self, 0xff0000, 500);
LK.getSound('hit').play();
};
// Called when player picks up a powerup
self.powerup = function () {
self.invincible = true;
self.invincibleTicks = 180; // 3 seconds
playerSprite.alpha = 0.4;
LK.getSound('powerup').play();
};
return self;
});
// Powerup class
var Powerup = Container.expand(function () {
var self = Container.call(this);
var puSprite = self.attachAsset('powerup', {
anchorX: 0.5,
anchorY: 0.5
});
self.radius = puSprite.width * 0.5;
self.speed = 10;
self.update = function () {
self.y += self.speed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x181818
});
/****
* Game Code
****/
// Music
// Sound effects
// Powerup: green ellipse
// Bullet: yellow box
// Obstacle: orange box
// Enemy: red ellipse
// Player character: blue box
// Game state variables
var player;
var bullets = [];
var enemies = [];
var obstacles = [];
var powerups = [];
var dragNode = null;
var lastTouch = {
x: 0,
y: 0
};
var scoreTxt, livesTxt;
var spawnTick = 0;
var difficulty = 1;
var gameOver = false;
// UI
scoreTxt = new Text2('0', {
size: 120,
fill: "#fff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
livesTxt = new Text2('♥♥♥', {
size: 90,
fill: 0xFF5252
});
livesTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(livesTxt);
// Start music
LK.playMusic('arcadebg');
// Create player
player = new Player();
player.x = 2048 / 2;
player.y = 2732 - 350;
game.addChild(player);
// Helper: update lives display
function updateLives() {
var s = '';
for (var i = 0; i < player.lives; i++) s += '♥';
livesTxt.setText(s);
}
// Helper: spawn enemy
function spawnEnemy() {
var e = new Enemy();
e.x = 200 + Math.random() * (2048 - 400);
e.y = -100;
enemies.push(e);
game.addChild(e);
}
// Helper: spawn obstacle
function spawnObstacle() {
var o = new Obstacle();
o.x = 200 + Math.random() * (2048 - 400);
o.y = -60;
obstacles.push(o);
game.addChild(o);
}
// Helper: spawn powerup
function spawnPowerup() {
var p = new Powerup();
p.x = 200 + Math.random() * (2048 - 400);
p.y = -80;
powerups.push(p);
game.addChild(p);
}
// Touch controls: drag player
game.down = function (x, y, obj) {
// Don't allow drag from top left 100x100
if (x < 100 && y < 100) return;
if (player && !gameOver) {
dragNode = player;
lastTouch.x = x;
lastTouch.y = y;
}
};
game.move = function (x, y, obj) {
if (dragNode && !gameOver) {
// Clamp to game area
var px = Math.max(player.radius, Math.min(2048 - player.radius, x));
var py = Math.max(player.radius, Math.min(2732 - player.radius, y));
player.x = px;
player.y = py;
lastTouch.x = x;
lastTouch.y = y;
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
// Tap to shoot (anywhere except top left 100x100)
game.on('down', function (x, y, obj) {
if (x < 100 && y < 100) return;
if (player && !gameOver && player.shootCooldown <= 0) {
var b = new Bullet();
b.x = player.x;
b.y = player.y - player.radius - 20;
bullets.push(b);
game.addChild(b);
player.shootCooldown = 12; // 0.2s
LK.getSound('shoot').play();
}
});
// Main game loop
game.update = function () {
if (gameOver) return;
// Increase difficulty over time
if (LK.ticks % 600 === 0 && difficulty < 10) {
difficulty++;
}
// Player update
player.update();
// Spawn logic
spawnTick++;
if (spawnTick % Math.max(60 - difficulty * 4, 20) === 0) {
if (Math.random() < 0.6) spawnEnemy();else spawnObstacle();
}
if (spawnTick % 300 === 0 && Math.random() < 0.5) {
spawnPowerup();
}
// Bullets
for (var i = bullets.length - 1; i >= 0; i--) {
var b = bullets[i];
b.update();
if (b.y < -60) {
b.destroy();
bullets.splice(i, 1);
continue;
}
// Bullet hits enemy
for (var j = enemies.length - 1; j >= 0; j--) {
var e = enemies[j];
if (b.intersects(e)) {
LK.setScore(LK.getScore() + 10);
scoreTxt.setText(LK.getScore());
LK.getSound('enemyDown').play();
e.destroy();
enemies.splice(j, 1);
b.destroy();
bullets.splice(i, 1);
break;
}
}
}
// Enemies
for (var i = enemies.length - 1; i >= 0; i--) {
var e = enemies[i];
e.update();
if (e.y > 2732 + 100) {
e.destroy();
enemies.splice(i, 1);
continue;
}
// Enemy hits player
if (e.intersects(player)) {
if (!player.invincible) {
player.hit();
updateLives();
if (player.lives <= 0) {
gameOver = true;
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
}
e.destroy();
enemies.splice(i, 1);
}
}
// Obstacles
for (var i = obstacles.length - 1; i >= 0; i--) {
var o = obstacles[i];
o.update();
if (o.y > 2732 + 60) {
o.destroy();
obstacles.splice(i, 1);
continue;
}
// Obstacle hits player
if (o.intersects(player)) {
if (!player.invincible) {
player.hit();
updateLives();
if (player.lives <= 0) {
gameOver = true;
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
}
o.destroy();
obstacles.splice(i, 1);
}
}
// Powerups
for (var i = powerups.length - 1; i >= 0; i--) {
var p = powerups[i];
p.update();
if (p.y > 2732 + 80) {
p.destroy();
powerups.splice(i, 1);
continue;
}
// Powerup hits player
if (p.intersects(player)) {
player.powerup();
p.destroy();
powerups.splice(i, 1);
}
}
};
// Score display
scoreTxt.setText(LK.getScore());
updateLives(); ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,351 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Bullet class
+var Bullet = Container.expand(function () {
+ var self = Container.call(this);
+ var bulletSprite = self.attachAsset('bullet', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = -32;
+ self.update = function () {
+ self.y += self.speed;
+ };
+ return self;
+});
+// Enemy class
+var Enemy = Container.expand(function () {
+ var self = Container.call(this);
+ var enemySprite = self.attachAsset('enemy', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.radius = enemySprite.width * 0.5;
+ self.speed = 8 + Math.random() * 8;
+ self.dir = Math.random() < 0.5 ? -1 : 1;
+ self.xSpeed = self.dir * (4 + Math.random() * 6);
+ self.update = function () {
+ self.y += self.speed;
+ self.x += self.xSpeed;
+ // Bounce off walls
+ if (self.x < self.radius) {
+ self.x = self.radius;
+ self.xSpeed *= -1;
+ }
+ if (self.x > 2048 - self.radius) {
+ self.x = 2048 - self.radius;
+ self.xSpeed *= -1;
+ }
+ };
+ return self;
+});
+// Obstacle class
+var Obstacle = Container.expand(function () {
+ var self = Container.call(this);
+ var obsSprite = self.attachAsset('obstacle', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.width = obsSprite.width;
+ self.height = obsSprite.height;
+ self.speed = 12 + Math.random() * 8;
+ self.update = function () {
+ self.y += self.speed;
+ };
+ return self;
+});
+// Player class
+var Player = Container.expand(function () {
+ var self = Container.call(this);
+ var playerSprite = self.attachAsset('player', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.radius = playerSprite.width * 0.5;
+ self.lives = 3;
+ self.invincible = false;
+ self.invincibleTicks = 0;
+ self.shootCooldown = 0;
+ self.update = function () {
+ if (self.invincible) {
+ self.invincibleTicks--;
+ if (self.invincibleTicks <= 0) {
+ self.invincible = false;
+ playerSprite.alpha = 1;
+ } else {
+ // Flicker effect
+ playerSprite.alpha = LK.ticks % 10 < 5 ? 0.4 : 1;
+ }
+ }
+ if (self.shootCooldown > 0) self.shootCooldown--;
+ };
+ // Called when player is hit
+ self.hit = function () {
+ if (self.invincible) return;
+ self.lives--;
+ self.invincible = true;
+ self.invincibleTicks = 90; // 1.5 seconds
+ playerSprite.alpha = 0.4;
+ LK.effects.flashObject(self, 0xff0000, 500);
+ LK.getSound('hit').play();
+ };
+ // Called when player picks up a powerup
+ self.powerup = function () {
+ self.invincible = true;
+ self.invincibleTicks = 180; // 3 seconds
+ playerSprite.alpha = 0.4;
+ LK.getSound('powerup').play();
+ };
+ return self;
+});
+// Powerup class
+var Powerup = Container.expand(function () {
+ var self = Container.call(this);
+ var puSprite = self.attachAsset('powerup', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.radius = puSprite.width * 0.5;
+ self.speed = 10;
+ 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: 0x181818
+});
+
+/****
+* Game Code
+****/
+// Music
+// Sound effects
+// Powerup: green ellipse
+// Bullet: yellow box
+// Obstacle: orange box
+// Enemy: red ellipse
+// Player character: blue box
+// Game state variables
+var player;
+var bullets = [];
+var enemies = [];
+var obstacles = [];
+var powerups = [];
+var dragNode = null;
+var lastTouch = {
+ x: 0,
+ y: 0
+};
+var scoreTxt, livesTxt;
+var spawnTick = 0;
+var difficulty = 1;
+var gameOver = false;
+// UI
+scoreTxt = new Text2('0', {
+ size: 120,
+ fill: "#fff"
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+livesTxt = new Text2('♥♥♥', {
+ size: 90,
+ fill: 0xFF5252
+});
+livesTxt.anchor.set(1, 0);
+LK.gui.topRight.addChild(livesTxt);
+// Start music
+LK.playMusic('arcadebg');
+// Create player
+player = new Player();
+player.x = 2048 / 2;
+player.y = 2732 - 350;
+game.addChild(player);
+// Helper: update lives display
+function updateLives() {
+ var s = '';
+ for (var i = 0; i < player.lives; i++) s += '♥';
+ livesTxt.setText(s);
+}
+// Helper: spawn enemy
+function spawnEnemy() {
+ var e = new Enemy();
+ e.x = 200 + Math.random() * (2048 - 400);
+ e.y = -100;
+ enemies.push(e);
+ game.addChild(e);
+}
+// Helper: spawn obstacle
+function spawnObstacle() {
+ var o = new Obstacle();
+ o.x = 200 + Math.random() * (2048 - 400);
+ o.y = -60;
+ obstacles.push(o);
+ game.addChild(o);
+}
+// Helper: spawn powerup
+function spawnPowerup() {
+ var p = new Powerup();
+ p.x = 200 + Math.random() * (2048 - 400);
+ p.y = -80;
+ powerups.push(p);
+ game.addChild(p);
+}
+// Touch controls: drag player
+game.down = function (x, y, obj) {
+ // Don't allow drag from top left 100x100
+ if (x < 100 && y < 100) return;
+ if (player && !gameOver) {
+ dragNode = player;
+ lastTouch.x = x;
+ lastTouch.y = y;
+ }
+};
+game.move = function (x, y, obj) {
+ if (dragNode && !gameOver) {
+ // Clamp to game area
+ var px = Math.max(player.radius, Math.min(2048 - player.radius, x));
+ var py = Math.max(player.radius, Math.min(2732 - player.radius, y));
+ player.x = px;
+ player.y = py;
+ lastTouch.x = x;
+ lastTouch.y = y;
+ }
+};
+game.up = function (x, y, obj) {
+ dragNode = null;
+};
+// Tap to shoot (anywhere except top left 100x100)
+game.on('down', function (x, y, obj) {
+ if (x < 100 && y < 100) return;
+ if (player && !gameOver && player.shootCooldown <= 0) {
+ var b = new Bullet();
+ b.x = player.x;
+ b.y = player.y - player.radius - 20;
+ bullets.push(b);
+ game.addChild(b);
+ player.shootCooldown = 12; // 0.2s
+ LK.getSound('shoot').play();
+ }
+});
+// Main game loop
+game.update = function () {
+ if (gameOver) return;
+ // Increase difficulty over time
+ if (LK.ticks % 600 === 0 && difficulty < 10) {
+ difficulty++;
+ }
+ // Player update
+ player.update();
+ // Spawn logic
+ spawnTick++;
+ if (spawnTick % Math.max(60 - difficulty * 4, 20) === 0) {
+ if (Math.random() < 0.6) spawnEnemy();else spawnObstacle();
+ }
+ if (spawnTick % 300 === 0 && Math.random() < 0.5) {
+ spawnPowerup();
+ }
+ // Bullets
+ for (var i = bullets.length - 1; i >= 0; i--) {
+ var b = bullets[i];
+ b.update();
+ if (b.y < -60) {
+ b.destroy();
+ bullets.splice(i, 1);
+ continue;
+ }
+ // Bullet hits enemy
+ for (var j = enemies.length - 1; j >= 0; j--) {
+ var e = enemies[j];
+ if (b.intersects(e)) {
+ LK.setScore(LK.getScore() + 10);
+ scoreTxt.setText(LK.getScore());
+ LK.getSound('enemyDown').play();
+ e.destroy();
+ enemies.splice(j, 1);
+ b.destroy();
+ bullets.splice(i, 1);
+ break;
+ }
+ }
+ }
+ // Enemies
+ for (var i = enemies.length - 1; i >= 0; i--) {
+ var e = enemies[i];
+ e.update();
+ if (e.y > 2732 + 100) {
+ e.destroy();
+ enemies.splice(i, 1);
+ continue;
+ }
+ // Enemy hits player
+ if (e.intersects(player)) {
+ if (!player.invincible) {
+ player.hit();
+ updateLives();
+ if (player.lives <= 0) {
+ gameOver = true;
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ return;
+ }
+ }
+ e.destroy();
+ enemies.splice(i, 1);
+ }
+ }
+ // Obstacles
+ for (var i = obstacles.length - 1; i >= 0; i--) {
+ var o = obstacles[i];
+ o.update();
+ if (o.y > 2732 + 60) {
+ o.destroy();
+ obstacles.splice(i, 1);
+ continue;
+ }
+ // Obstacle hits player
+ if (o.intersects(player)) {
+ if (!player.invincible) {
+ player.hit();
+ updateLives();
+ if (player.lives <= 0) {
+ gameOver = true;
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ return;
+ }
+ }
+ o.destroy();
+ obstacles.splice(i, 1);
+ }
+ }
+ // Powerups
+ for (var i = powerups.length - 1; i >= 0; i--) {
+ var p = powerups[i];
+ p.update();
+ if (p.y > 2732 + 80) {
+ p.destroy();
+ powerups.splice(i, 1);
+ continue;
+ }
+ // Powerup hits player
+ if (p.intersects(player)) {
+ player.powerup();
+ p.destroy();
+ powerups.splice(i, 1);
+ }
+ }
+};
+// Score display
+scoreTxt.setText(LK.getScore());
+updateLives();
\ No newline at end of file
soldier pixel. In-Game asset. 2d. High contrast. No shadows
pixel ammo. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
pixel zombie character. In-Game asset. 2d. High contrast. No shadows
pixel brick wall. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Red zombie pixel. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
blood pixel. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
pixel shotgun. In-Game asset. 2d. High contrast. No shadows