User prompt
Add a asset background
User prompt
Make a background all screen
User prompt
Make a asset background green
User prompt
Add a background
Code edit (1 edits merged)
Please save this source code
User prompt
Canlı Kalıp Savaşı
User prompt
3 canı olsun yukarı ortada kalıplar olsun asset şeklinde
Initial prompt
Yazı mı tura mı oyunu yap animasyonlar ekle
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Obstacle class
var Obstacle = Container.expand(function () {
var self = Container.call(this);
// Randomly pick a shape for variety
var types = ['obstacle_box', 'obstacle_ellipse', 'obstacle_tall', 'obstacle_wide'];
var type = types[Math.floor(Math.random() * types.length)];
var gfx = self.attachAsset(type, {
anchorX: 0.5,
anchorY: 0.5
});
self.type = type;
// Speed will be set on creation
self.speed = 0;
// Update method for movement
self.update = function () {
self.y += self.speed;
};
return self;
});
// Player class
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGfx = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
// For collision, use the container itself
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x181818
});
/****
* Game Code
****/
// Add green background shape asset
var background = LK.getAsset('bg_green', {
anchorX: 0.5,
anchorY: 0.5,
x: GAME_WIDTH / 2,
y: GAME_HEIGHT / 2,
scaleX: 1,
scaleY: 1
});
background.zIndex = -1000; // Ensure it's behind everything
game.addChild(background);
// Game constants
// Player character: a colored box
// Obstacle shapes (variety for visual interest)
// Heart icon for lives
var GAME_WIDTH = 2048;
var GAME_HEIGHT = 2732;
var PLAYER_START_X = GAME_WIDTH / 2;
var PLAYER_START_Y = GAME_HEIGHT - 400;
var OBSTACLE_SPAWN_Y = 220; // Top area for obstacles
var OBSTACLE_MIN_SPEED = 7;
var OBSTACLE_MAX_SPEED = 15;
var OBSTACLE_SPAWN_INTERVAL = 70; // ticks
var PLAYER_MOVE_AREA = {
left: 180,
right: GAME_WIDTH - 180,
top: 600,
bottom: GAME_HEIGHT - 100
};
var MAX_LIVES = 3;
// State variables
var player;
var obstacles = [];
var lives = MAX_LIVES;
var score = 0;
var scoreTxt;
var livesNodes = [];
var dragNode = null;
var lastScoreTick = 0;
// --- UI: Score ---
scoreTxt = new Text2('0', {
size: 120,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// --- UI: Lives (Hearts) ---
function updateLivesUI() {
// Remove old
for (var i = 0; i < livesNodes.length; i++) {
if (livesNodes[i].parent) livesNodes[i].parent.removeChild(livesNodes[i]);
}
livesNodes = [];
// Place hearts at top right, spaced
for (var i = 0; i < lives; i++) {
var heart = LK.getAsset('heart', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 0
});
// Place: right margin 60px, then 100px per heart leftward, y=100
heart.x = GAME_WIDTH - 100 - i * 100;
heart.y = 100;
// Add to game (not GUI, so it scales with game)
game.addChild(heart);
livesNodes.push(heart);
}
}
updateLivesUI();
// --- Player ---
player = new Player();
player.x = PLAYER_START_X;
player.y = PLAYER_START_Y;
game.addChild(player);
// --- Touch/Drag Controls ---
function clamp(val, min, max) {
return Math.max(min, Math.min(max, val));
}
function handleMove(x, y, obj) {
if (dragNode) {
// Clamp to allowed area
dragNode.x = clamp(x, PLAYER_MOVE_AREA.left, PLAYER_MOVE_AREA.right);
dragNode.y = clamp(y, PLAYER_MOVE_AREA.top, PLAYER_MOVE_AREA.bottom);
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
// Only allow drag if touch is on player or below
if (x >= player.x - 100 && x <= player.x + 100 && y >= player.y - 100 && y <= player.y + 100) {
dragNode = player;
handleMove(x, y, obj);
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
// --- Obstacle Spawning ---
function spawnObstacle() {
var obs = new Obstacle();
// Random X in a central band (avoid extreme edges)
var minX = 300,
maxX = GAME_WIDTH - 300;
obs.x = minX + Math.floor(Math.random() * (maxX - minX));
obs.y = OBSTACLE_SPAWN_Y;
// Random speed
obs.speed = OBSTACLE_MIN_SPEED + Math.random() * (OBSTACLE_MAX_SPEED - OBSTACLE_MIN_SPEED);
// Optionally, for some types, add horizontal movement
if (obs.type === 'obstacle_wide' && Math.random() < 0.5) {
obs.horizSpeed = (Math.random() < 0.5 ? -1 : 1) * (2 + Math.random() * 3);
obs.update = function () {
this.y += this.speed;
this.x += this.horizSpeed;
// Bounce off walls
if (this.x < 200 || this.x > GAME_WIDTH - 200) this.horizSpeed *= -1;
};
}
obstacles.push(obs);
game.addChild(obs);
}
// --- Game Update Loop ---
game.update = function () {
// Score increases with time survived (every 30 ticks = 0.5s)
if (LK.ticks - lastScoreTick >= 30) {
score += 1;
scoreTxt.setText(score);
lastScoreTick = LK.ticks;
}
// Spawn obstacles
if (LK.ticks % OBSTACLE_SPAWN_INTERVAL === 0) {
spawnObstacle();
}
// Update obstacles, check for collision, remove off-screen
for (var i = obstacles.length - 1; i >= 0; i--) {
var obs = obstacles[i];
// Move
if (typeof obs.update === 'function') obs.update();
// Remove if off bottom
if (obs.y > GAME_HEIGHT + 200) {
obs.destroy();
obstacles.splice(i, 1);
continue;
}
// Collision with player
if (obs.intersects(player)) {
// Remove obstacle
obs.destroy();
obstacles.splice(i, 1);
// Lose a life
lives -= 1;
updateLivesUI();
// Flash player red
LK.effects.flashObject(player, 0xff0000, 600);
// If out of lives, game over
if (lives <= 0) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
}
}
}
};
// --- Reset on Game Over ---
LK.on('gameover', function () {
// Reset state for new game
lives = MAX_LIVES;
score = 0;
scoreTxt.setText(score);
updateLivesUI();
// Remove all obstacles
for (var i = 0; i < obstacles.length; i++) {
obstacles[i].destroy();
}
obstacles = [];
// Reset player position
player.x = PLAYER_START_X;
player.y = PLAYER_START_Y;
dragNode = null;
lastScoreTick = LK.ticks;
});
// --- Initial UI state ---
scoreTxt.setText(score);
updateLivesUI(); ===================================================================
--- original.js
+++ change.js
@@ -45,16 +45,16 @@
/****
* Game Code
****/
-// Add background image
-var background = LK.getAsset('obstacle_wide', {
+// Add green background shape asset
+var background = LK.getAsset('bg_green', {
anchorX: 0.5,
anchorY: 0.5,
x: GAME_WIDTH / 2,
y: GAME_HEIGHT / 2,
- scaleX: GAME_WIDTH / 250,
- scaleY: GAME_HEIGHT / 250
+ scaleX: 1,
+ scaleY: 1
});
background.zIndex = -1000; // Ensure it's behind everything
game.addChild(background);
// Game constants