User prompt
add
User prompt
Create a global variable 'hazards' as an array. Push each spawned trap or enemy into this array for global tracking
User prompt
Create an object or entity for the item that will cause the game to end when taken
User prompt
Designate specific platforms in your game as places where this item can appear
User prompt
put an item on non-coin platforms
User prompt
put things that will end the game when taken on empty platforms
User prompt
put hazard on empty platforms
User prompt
put hazard instead of coins on some platforms
User prompt
put hazard on some platforms
User prompt
put hazard on some platforms and the game ends
User prompt
Hazard should not be on platforms, follow the character and try to kill him
User prompt
Hazard follows the character and tries to make him lose the game
User prompt
put things that make us lose the game when we get it on some platforms
User prompt
Make the platforms as high as the character can jump on
User prompt
make a start platform
User prompt
delete ground box
User prompt
Make the platforms as high as the character can jump on
User prompt
ower the platforms so that the distance between them is the same on all of them
User prompt
Don't touch the gaps between the platforms but move them down a little bit
User prompt
lower the platforms a little
User prompt
Place the platforms at a distance that the character can jump
User prompt
make more space between platforms
User prompt
add coffee house to latest platform
User prompt
Add a coffeehouse to the last platform, the game ends when the character touches it
User prompt
Add a coffeehouse to the last platform, the game ends when the character touches it
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Coin class
var Coin = Container.expand(function () {
var self = Container.call(this);
var coinAsset = self.attachAsset('coinCircle', {
anchorX: 0.5,
anchorY: 0.5
});
self.width = coinAsset.width;
self.height = coinAsset.height;
return self;
});
// Hazard class
var Hazard = Container.expand(function () {
var self = Container.call(this);
var hazardAsset = self.attachAsset('hazard', {
anchorX: 0.5,
anchorY: 1
});
self.width = hazardAsset.width;
self.height = hazardAsset.height;
return self;
});
// Platform class
var Platform = Container.expand(function () {
var self = Container.call(this);
var platAsset = self.attachAsset('platformBox', {
anchorX: 0,
anchorY: 0
});
self.width = platAsset.width;
self.height = platAsset.height;
return self;
});
// Player character class
var Player = Container.expand(function () {
var self = Container.call(this);
// Attach player asset (red box)
var playerAsset = self.attachAsset('playerBox', {
anchorX: 0.5,
anchorY: 1
});
// Physics properties
self.vx = 0;
self.vy = 0;
self.isOnGround = false;
self.width = playerAsset.width;
self.height = playerAsset.height;
// For jump control
self.jumpRequested = false;
// Touch down on player (for jump)
self.down = function (x, y, obj) {
// Only allow jump if on ground
if (self.isOnGround) {
self.jumpRequested = true;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb // Sky blue
});
/****
* Game Code
****/
// Sun and cloud assets (example IDs, replace with real asset IDs as needed)
// --- Asset Initialization (shapes) ---
// Tween for animations (jump, enemy movement, etc)
// --- Game Variables ---
// Hazard asset (example id)
var GRAVITY = 2.2;
var JUMP_VELOCITY = -54;
var PLAYER_SPEED = 16;
var SCROLL_SPEED = 10;
var LEVEL_LENGTH = 2048 * 3; // 3 screens wide
var player;
var platforms = [];
var coins = [];
var coffeeHouse = null;
var cameraX = 0;
var score = 0;
var distance = 0;
var gameOver = false;
// --- GUI ---
var scoreTxt = new Text2('0', {
size: 100,
fill: 0xFFF700
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var distTxt = new Text2('0m', {
size: 60,
fill: 0xFFFFFF
});
distTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(distTxt);
distTxt.y = 110;
// --- Level Generation ---
function createLevel() {
// Clear old
for (var i = 0; i < platforms.length; i++) platforms[i].destroy();
for (var i = 0; i < coins.length; i++) coins[i].destroy();
if (typeof coffeeHouse !== "undefined" && coffeeHouse) coffeeHouse.destroy();
platforms = [];
coins = [];
coffeeHouse = null;
// Add sun to the sky
var sun = LK.getAsset('sun', {
anchorX: 0.5,
anchorY: 0.5
});
sun.x = 300;
sun.y = 300;
game.addChild(sun);
// Add a few clouds at different positions
var cloud1 = LK.getAsset('cloud', {
anchorX: 0.5,
anchorY: 0.5
});
cloud1.x = 700;
cloud1.y = 400;
game.addChild(cloud1);
var cloud2 = LK.getAsset('cloud', {
anchorX: 0.5,
anchorY: 0.5
});
cloud2.x = 1400;
cloud2.y = 600;
game.addChild(cloud2);
var cloud3 = LK.getAsset('cloud', {
anchorX: 0.5,
anchorY: 0.5
});
cloud3.x = 2000;
cloud3.y = 350;
game.addChild(cloud3);
// Platform layout: up/down, not fixed order, player can jump between them
var numPlatforms = 50;
var platSpacingX = 950; // Further increased horizontal spacing for much more space
var platMinY = 800; // Lowered min Y for more vertical play area
var platMaxY = 1900; // Raised max Y for more vertical play area
// Calculate max jump height based on physics
// vy = JUMP_VELOCITY, gravity = GRAVITY
// maxJumpHeight = - (vy^2) / (2 * gravity)
var maxJumpHeight = -(JUMP_VELOCITY * JUMP_VELOCITY) / (2 * GRAVITY);
// Use 90% of maxJumpHeight for margin of error
var platformGapY = Math.floor(maxJumpHeight * 0.9);
var lastY = 1800;
// Add start platform at the very beginning
var startPlat = new Platform();
startPlat.x = 100;
startPlat.y = 2000;
platforms.push(startPlat);
game.addChild(startPlat);
// Place a coin above the start platform
var startCoin = new Coin();
startCoin.x = startPlat.x + startPlat.width / 2;
startCoin.y = startPlat.y - 80;
coins.push(startCoin);
game.addChild(startCoin);
for (var i = 0; i < numPlatforms; i++) {
var plat = new Platform();
plat.x = 600 + i * platSpacingX;
// Alternate up/down, but keep within jumpable range
if (i === 0) {
plat.y = lastY;
} else {
// Randomly go up or down, but clamp to min/max
var deltaY = (Math.random() > 0.5 ? -1 : 1) * (platformGapY + Math.floor(Math.random() * 40) - 20); // Small random offset
plat.y = lastY + deltaY;
if (plat.y < platMinY) plat.y = platMinY;
if (plat.y > platMaxY) plat.y = platMaxY;
lastY = plat.y;
}
platforms.push(plat);
game.addChild(plat);
// Place a coin or hazard above every platform (not start or last)
var placed = false;
if (i > 0 && i < numPlatforms - 2 && Math.random() < 0.25) {
// Place a hazard instead of a coin
if (typeof window.hazards === "undefined") window.hazards = [];
var hazard = new Hazard();
hazard.x = plat.x + plat.width / 2;
hazard.y = plat.y - 80;
window.hazards.push(hazard);
game.addChild(hazard);
placed = true;
} else {
// Place a coin
var coin = new Coin();
coin.x = plat.x + plat.width / 2;
coin.y = plat.y - 80;
coins.push(coin);
game.addChild(coin);
placed = true;
}
// If nothing was placed (empty platform), put a hazard
if (!placed && i > 0 && i < numPlatforms - 2) {
if (typeof window.hazards === "undefined") window.hazards = [];
var hazard2 = new Hazard();
hazard2.x = plat.x + plat.width / 2;
hazard2.y = plat.y - 80;
window.hazards.push(hazard2);
game.addChild(hazard2);
}
}
// Add coffee house on the last platform
if (platforms.length > 0) {
var lastPlat = platforms[platforms.length - 1];
coffeeHouse = LK.getAsset('coffeeHouse', {
anchorX: 0.5,
anchorY: 1
});
coffeeHouse.x = lastPlat.x + lastPlat.width / 2;
coffeeHouse.y = lastPlat.y;
game.addChild(coffeeHouse);
}
}
// --- Player Initialization ---
function resetPlayer() {
if (player) player.destroy();
player = new Player();
// Place player on the start platform if it exists
if (platforms.length > 0) {
player.x = platforms[0].x + platforms[0].width / 2;
player.y = platforms[0].y;
} else {
player.x = 200;
player.y = 2200;
}
player.vx = 0;
player.vy = 0;
player.isOnGround = false;
game.addChild(player);
}
// --- Camera ---
function updateCamera() {
// Camera follows player, but clamps to level bounds
cameraX = player.x - 600;
if (cameraX < 0) cameraX = 0;
if (cameraX > LEVEL_LENGTH - 2048) cameraX = LEVEL_LENGTH - 2048;
// Move all game objects (except GUI) by -cameraX
for (var i = 0; i < platforms.length; i++) platforms[i].xScreen = platforms[i].x - cameraX;
for (var i = 0; i < coins.length; i++) coins[i].xScreen = coins[i].x - cameraX;
player.xScreen = player.x - cameraX;
}
// --- Utility: AABB collision ---
function intersectsAABB(a, b) {
return a.x < b.x + b.width && a.x + a.width > b.x && a.y < b.y + b.height && a.y + a.height > b.y;
}
// --- Touch Controls ---
// Touch controls: tap anywhere to jump, hold left/right for movement
var moveDir = 0; // -1 = left, 1 = right, 0 = none
game.down = function (x, y, obj) {
if (gameOver) return;
// Convert to game coordinates
var gx = x + cameraX;
// Always allow jump on tap down, anywhere
if (player.isOnGround) {
player.jumpRequested = true;
}
// Hold left/right for movement
if (x < 2048 / 2) {
moveDir = -1;
} else {
moveDir = 1;
}
};
game.up = function (x, y, obj) {
moveDir = 0;
};
game.move = function (x, y, obj) {
// Allow drag to change direction
if (x < 2048 / 2) {
moveDir = -1;
} else {
moveDir = 1;
}
};
// --- Game Update Loop ---
game.update = function () {
if (gameOver) return;
// --- Player Movement ---
// Horizontal movement
player.vx = moveDir * PLAYER_SPEED;
// Apply gravity
player.vy += GRAVITY;
// Jump
if (player.jumpRequested) {
player.vy = JUMP_VELOCITY;
player.jumpRequested = false;
player.isOnGround = false;
}
// Move horizontally, check collisions
player.x += player.vx;
var collidedX = false;
for (var i = 0; i < platforms.length; i++) {
var plat = platforms[i];
if (intersectsAABB({
x: player.x - player.width / 2,
y: player.y - player.height,
width: player.width,
height: player.height
}, {
x: plat.x,
y: plat.y,
width: plat.width,
height: plat.height
})) {
// Collided horizontally, push player out
if (player.vx > 0) {
player.x = plat.x - player.width / 2;
} else if (player.vx < 0) {
player.x = plat.x + plat.width + player.width / 2;
}
collidedX = true;
}
}
// Move vertically, check collisions
player.y += player.vy;
var collidedY = false;
player.isOnGround = false;
for (var i = 0; i < platforms.length; i++) {
var plat = platforms[i];
if (intersectsAABB({
x: player.x - player.width / 2,
y: player.y - player.height,
width: player.width,
height: player.height
}, {
x: plat.x,
y: plat.y,
width: plat.width,
height: plat.height
})) {
// Collided vertically
if (player.vy > 0) {
// Falling, land on platform
player.y = plat.y;
player.vy = 0;
player.isOnGround = true;
} else if (player.vy < 0) {
// Hitting head
player.y = plat.y + plat.height + player.height;
player.vy = 0;
}
collidedY = true;
}
}
// --- Coin Collection ---
for (var i = coins.length - 1; i >= 0; i--) {
var coin = coins[i];
if (intersectsAABB({
x: player.x - player.width / 2,
y: player.y - player.height,
width: player.width,
height: player.height
}, {
x: coin.x - coin.width / 2,
y: coin.y - coin.height / 2,
width: coin.width,
height: coin.height
})) {
// Collect coin
score += 1;
scoreTxt.setText(score);
coin.destroy();
coins.splice(i, 1);
}
}
// --- Hazard Collision ---
if (typeof window.hazards !== "undefined") {
for (var i = 0; i < window.hazards.length; i++) {
var hazard = window.hazards[i];
if (intersectsAABB({
x: player.x - player.width / 2,
y: player.y - player.height,
width: player.width,
height: player.height
}, {
x: hazard.x - hazard.width / 2,
y: hazard.y - hazard.height,
width: hazard.width,
height: hazard.height
})) {
LK.effects.flashScreen(0xff0000, 1000);
gameOver = true;
LK.showGameOver();
return;
}
}
}
// --- Enemy Update & Collision ---
// (Removed: No enemies in this version)
// --- Camera & Distance ---
updateCamera();
// Move all objects to screen position
for (var i = 0; i < platforms.length; i++) {
platforms[i].x = platforms[i].xScreen;
}
for (var i = 0; i < coins.length; i++) {
coins[i].x = coins[i].xScreen;
}
player.x = player.xScreen;
// --- Distance ---
distance = Math.floor((player.x + cameraX) / 10);
distTxt.setText(distance + "m");
// --- Win/Lose Conditions ---
// Fall off screen
if (player.y > 2732) {
LK.effects.flashScreen(0xff0000, 1000);
gameOver = true;
LK.showGameOver();
return;
}
// Reached coffee house (win condition)
if (coffeeHouse && intersectsAABB({
x: player.x - player.width / 2,
y: player.y - player.height,
width: player.width,
height: player.height
}, {
x: coffeeHouse.x - coffeeHouse.width / 2,
y: coffeeHouse.y - coffeeHouse.height,
width: coffeeHouse.width,
height: coffeeHouse.height
})) {
LK.effects.flashScreen(0x00ff00, 1000);
LK.setScore(score);
LK.showYouWin();
gameOver = true;
return;
}
// Win condition: player reaches the last platform
if (platforms.length > 0) {
var lastPlat = platforms[platforms.length - 1];
if (player.x + player.width / 2 >= lastPlat.x && player.x - player.width / 2 <= lastPlat.x + lastPlat.width && player.y >= lastPlat.y && player.y - player.height <= lastPlat.y + lastPlat.height) {
LK.effects.flashScreen(0x00ff00, 1000);
LK.setScore(score);
LK.showYouWin();
gameOver = true;
return;
}
}
};
// --- Game Start ---
function startGame() {
score = 0;
distance = 0;
gameOver = false;
scoreTxt.setText(score);
distTxt.setText(distance + "m");
createLevel();
resetPlayer();
cameraX = 0;
moveDir = 0;
}
// --- Start ---
startGame(); ===================================================================
--- original.js
+++ change.js
@@ -186,24 +186,36 @@
}
platforms.push(plat);
game.addChild(plat);
// Place a coin or hazard above every platform (not start or last)
+ var placed = false;
if (i > 0 && i < numPlatforms - 2 && Math.random() < 0.25) {
// Place a hazard instead of a coin
if (typeof window.hazards === "undefined") window.hazards = [];
var hazard = new Hazard();
hazard.x = plat.x + plat.width / 2;
hazard.y = plat.y - 80;
window.hazards.push(hazard);
game.addChild(hazard);
+ placed = true;
} else {
// Place a coin
var coin = new Coin();
coin.x = plat.x + plat.width / 2;
coin.y = plat.y - 80;
coins.push(coin);
game.addChild(coin);
+ placed = true;
}
+ // If nothing was placed (empty platform), put a hazard
+ if (!placed && i > 0 && i < numPlatforms - 2) {
+ if (typeof window.hazards === "undefined") window.hazards = [];
+ var hazard2 = new Hazard();
+ hazard2.x = plat.x + plat.width / 2;
+ hazard2.y = plat.y - 80;
+ window.hazards.push(hazard2);
+ game.addChild(hazard2);
+ }
}
// Add coffee house on the last platform
if (platforms.length > 0) {
var lastPlat = platforms[platforms.length - 1];
cloud. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
sun. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
çay bardağı. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
a kebap. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
baba terliği. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
starbucks kahvesi ama kızgın ve canlı. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
geleneksel türk kıraathanesi. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
starbucks kahvesi ama kaslı ve kıravartı olan sinirli bir starbucks kahvesi. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
180 derece stabucks kahvesi . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
kırmızı ok. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
okun ucu sola baksın ve hiçbirşey değişmesin
şimdi ok yine değişmesin sadece ucu sağa baksın
şiş in içine geçmiş bir şekilde play yazıcak ama domates biber ve etten yani gerçek kebab gibi ama harfler var. daha çizgifilmsel olacak mesela "p" et "l" biber "a" domates "y" et
"Kebab Runner" yaz ama 1 şiş kebab yazının üstünde duracak olacak yani oyunun
çaydanlık adam. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
buzlu bir americano ama stabucks kahvesi çevresi beyaz olsun içinde çok buz olsun No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat