User prompt
Top halkanın kenar kısmının tam ortasına gelecek şekilde konumlansin
User prompt
Topu halkanın kenarına sığacak şekilde konumlandir
User prompt
Halkanın büyüklüğü aynı kalsın ama kenar genişliği 2 kat azalsın
User prompt
Halka ve topu 2 kat büyüt
User prompt
Can objesinin spawn olma süresini 15 sn yap
User prompt
Tuzaklarla aynı mantıkta çalışan can ekle. Can objesine temas edersek can sayısı bir artsın
User prompt
Can sayısı ekle başlangıçta 1 canımız olsun. Can sayısı ekranın sol üst kısmında görünsün
User prompt
Tuzakların hızını biraz daha arttır
User prompt
Spawn süresi 8 saniye olsun
User prompt
Tuzakların hareket hızı 1.5 kat artsın
User prompt
Ekranın dış kısmından rastgele konumlarda tuzak spawn olsun ve halkanın merkezinden geçecek şekilde sabit hızda hareket etsin. 5 saniyede 1 kere spawn olsun
User prompt
Ekrana tikladigimda topun yönü tersine dönsün
User prompt
Top halkanın mavi kısmına sığacak şekilde konumlansin
User prompt
Halkayı biraz daha büyült
User prompt
Tuzakları kaldır. Top sonsuza kadar dönsün
User prompt
Suanlik puan tuzak gibi şeyleri kaldır
Code edit (1 edits merged)
Please save this source code
User prompt
Ring Runner
Initial prompt
Ortada simit şeklinde bir halka olsun ve onun sınırlarını takip eden bir top olsun.
/****
* Classes
****/
var Ball = Container.expand(function () {
var self = Container.call(this);
var ballGraphics = self.attachAsset('ball', {
anchorX: 0.5,
anchorY: 0.5
});
self.angle = 0;
self.speed = 0.02;
self.ringRadius = 375; // Distance from center to ball center - positioned in blue ring section
self.centerX = 2048 / 2;
self.centerY = 2732 / 2;
self.update = function () {
self.angle += self.speed;
if (self.angle > Math.PI * 2) {
self.angle -= Math.PI * 2;
}
self.x = self.centerX + Math.cos(self.angle) * self.ringRadius;
self.y = self.centerY + Math.sin(self.angle) * self.ringRadius;
};
return self;
});
var HealthPickup = Container.expand(function () {
var self = Container.call(this);
var healthGraphics = self.attachAsset('healthPickup', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 6;
self.centerX = 2048 / 2;
self.centerY = 2732 / 2;
self.directionX = 0;
self.directionY = 0;
self.setDirection = function (targetX, targetY) {
var dx = targetX - self.x;
var dy = targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
self.directionX = dx / distance;
self.directionY = dy / distance;
};
self.update = function () {
self.x += self.directionX * self.speed;
self.y += self.directionY * self.speed;
};
return self;
});
var Trap = Container.expand(function () {
var self = Container.call(this);
var trapGraphics = self.attachAsset('trap', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 6;
self.centerX = 2048 / 2;
self.centerY = 2732 / 2;
self.directionX = 0;
self.directionY = 0;
self.setDirection = function (targetX, targetY) {
var dx = targetX - self.x;
var dy = targetY - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
self.directionX = dx / distance;
self.directionY = dy / distance;
};
self.update = function () {
self.x += self.directionX * self.speed;
self.y += self.directionY * self.speed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
// Create central ring
var ring = game.addChild(LK.getAsset('ring', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
}));
// Lives system
var lives = 1;
// Trap spawning variables
var traps = [];
var trapSpawnTimer = 0;
var trapSpawnInterval = 480; // 8 seconds at 60 FPS
// Health pickup spawning variables
var healthPickups = [];
var healthSpawnTimer = 0;
var healthSpawnInterval = 900; // 15 seconds at 60 FPS
var ringHole = game.addChild(LK.getAsset('ringHole', {
anchorX: 0.5,
anchorY: 0.5,
x: 2048 / 2,
y: 2732 / 2
}));
// Create ball
var ball = game.addChild(new Ball());
// Create lives display text
var livesText = new Text2('Lives: ' + lives, {
size: 80,
fill: 0xFFFFFF
});
livesText.anchor.set(0, 0); // Top-left anchor
livesText.x = 120; // Position away from top-left menu area
livesText.y = 50;
game.addChild(livesText);
// Add tap handler to reverse ball direction
game.down = function (x, y, obj) {
ball.speed = -ball.speed;
};
game.update = function () {
// Ball will continue moving infinitely around the ring
// Spawn traps every 8 seconds
trapSpawnTimer++;
if (trapSpawnTimer >= trapSpawnInterval) {
trapSpawnTimer = 0;
// Spawn trap at random position on screen edge
var trap = new Trap();
var side = Math.floor(Math.random() * 4); // 0=top, 1=right, 2=bottom, 3=left
switch (side) {
case 0:
// Top edge
trap.x = Math.random() * 2048;
trap.y = -40;
break;
case 1:
// Right edge
trap.x = 2048 + 40;
trap.y = Math.random() * 2732;
break;
case 2:
// Bottom edge
trap.x = Math.random() * 2048;
trap.y = 2732 + 40;
break;
case 3:
// Left edge
trap.x = -40;
trap.y = Math.random() * 2732;
break;
}
// Set direction toward ring center
trap.setDirection(2048 / 2, 2732 / 2);
traps.push(trap);
game.addChild(trap);
}
// Spawn health pickups every 8 seconds
healthSpawnTimer++;
if (healthSpawnTimer >= healthSpawnInterval) {
healthSpawnTimer = 0;
// Spawn health pickup at random position on screen edge
var healthPickup = new HealthPickup();
var side = Math.floor(Math.random() * 4); // 0=top, 1=right, 2=bottom, 3=left
switch (side) {
case 0:
// Top edge
healthPickup.x = Math.random() * 2048;
healthPickup.y = -40;
break;
case 1:
// Right edge
healthPickup.x = 2048 + 40;
healthPickup.y = Math.random() * 2732;
break;
case 2:
// Bottom edge
healthPickup.x = Math.random() * 2048;
healthPickup.y = 2732 + 40;
break;
case 3:
// Left edge
healthPickup.x = -40;
healthPickup.y = Math.random() * 2732;
break;
}
// Set direction toward ring center
healthPickup.setDirection(2048 / 2, 2732 / 2);
healthPickups.push(healthPickup);
game.addChild(healthPickup);
}
// Check collision between ball and traps
for (var i = traps.length - 1; i >= 0; i--) {
var trap = traps[i];
// Check collision with ball
if (ball.intersects(trap)) {
lives--;
livesText.setText('Lives: ' + lives);
// Remove the trap that hit the ball
trap.destroy();
traps.splice(i, 1);
// Check game over condition
if (lives <= 0) {
LK.showGameOver();
}
continue;
}
// Clean up traps that have moved off screen
if (trap.x < -100 || trap.x > 2148 || trap.y < -100 || trap.y > 2832) {
trap.destroy();
traps.splice(i, 1);
}
}
// Check collision between ball and health pickups
for (var j = healthPickups.length - 1; j >= 0; j--) {
var healthPickup = healthPickups[j];
// Check collision with ball
if (ball.intersects(healthPickup)) {
lives++;
livesText.setText('Lives: ' + lives);
// Remove the health pickup that was collected
healthPickup.destroy();
healthPickups.splice(j, 1);
continue;
}
// Clean up health pickups that have moved off screen
if (healthPickup.x < -100 || healthPickup.x > 2148 || healthPickup.y < -100 || healthPickup.y > 2832) {
healthPickup.destroy();
healthPickups.splice(j, 1);
}
}
}; ===================================================================
--- original.js
+++ change.js
@@ -8,9 +8,9 @@
anchorY: 0.5
});
self.angle = 0;
self.speed = 0.02;
- self.ringRadius = 450; // Distance from center to ball center - positioned in blue ring section
+ self.ringRadius = 375; // Distance from center to ball center - positioned in blue ring section
self.centerX = 2048 / 2;
self.centerY = 2732 / 2;
self.update = function () {
self.angle += self.speed;
Circle smile face record dark color. In-Game asset. 2d. High contrast. No shadows. Cartoon
Circle smile human face. In-Game asset. 2d. High contrast. No shadows. Cartoon
Sand clock smile face. In-Game asset. 2d. High contrast. No shadows. Cartoon. Cartoon
King clock smile face. In-Game asset. 2d. High contrast. No shadows. Cartoon