User prompt
oyun zor olmuş kolaylaştır
Code edit (1 edits merged)
Please save this source code
User prompt
Perfect Timing Strike
Initial prompt
1️⃣ Zamanında Tıkla Ekranda dönen bir çubuk var. Çubuk, hedefin üstüne geldiğinde tıklarsan skor. Kaçırırsan oyun biter. Ne kadar hızlı olursa o kadar bağımlı yapar.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Rod = Container.expand(function () { var self = Container.call(this); var rodGraphics = self.attachAsset('rod', { anchorX: 0, anchorY: 0.5 }); self.rotationSpeed = 0.015; self.update = function () { self.rotation += self.rotationSpeed; }; return self; }); var TargetZone = Container.expand(function () { var self = Container.call(this); var zoneGraphics = self.attachAsset('targetZone', { anchorX: 0.5, anchorY: 0.5, alpha: 0.7 }); return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a2e }); /**** * Game Code ****/ var centerX = 2048 / 2; var centerY = 2732 / 2; var targetAngle = Math.PI / 2; // Target at 90 degrees (top) var angleThreshold = 0.25; // Tolerance for hitting target (increased for easier gameplay) var gameActive = true; var lastHitState = false; // Create pivot point var pivot = LK.getAsset('pivot', { anchorX: 0.5, anchorY: 0.5, x: centerX, y: centerY }); game.addChild(pivot); // Create spinning rod var rod = new Rod(); rod.x = centerX; rod.y = centerY; game.addChild(rod); // Create target zone var targetZone = new TargetZone(); targetZone.x = centerX; targetZone.y = centerY - 200; game.addChild(targetZone); // Create score display var scoreTxt = new Text2('0', { size: 100, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Create instructions var instructionTxt = new Text2('TAP WHEN ROD HITS GREEN ZONE', { size: 60, fill: 0x27AE60 }); instructionTxt.anchor.set(0.5, 1); instructionTxt.y = -50; LK.gui.bottom.addChild(instructionTxt); function normalizeAngle(angle) { while (angle < 0) angle += Math.PI * 2; while (angle >= Math.PI * 2) angle -= Math.PI * 2; return angle; } function isInTargetZone() { var currentAngle = normalizeAngle(rod.rotation); var targetAngleNorm = normalizeAngle(targetAngle); var diff = Math.abs(currentAngle - targetAngleNorm); if (diff > Math.PI) { diff = Math.PI * 2 - diff; } return diff <= angleThreshold; } function handleHit() { if (!gameActive) return; if (isInTargetZone()) { // Successful hit LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); // Increase speed slightly rod.rotationSpeed += 0.002; // Visual feedback LK.effects.flashObject(targetZone, 0x00ff00, 300); // Play hit sound LK.getSound('hit').play(); lastHitState = true; } else { // Miss - game over gameActive = false; // Visual feedback LK.effects.flashScreen(0xff0000, 1000); // Play miss sound LK.getSound('miss').play(); // Show game over LK.showGameOver(); } } game.down = function (x, y, obj) { if (gameActive) { handleHit(); } }; game.update = function () { if (!gameActive) return; // Update target zone color based on rod position var inZone = isInTargetZone(); if (inZone && !lastHitState) { targetZone.alpha = 1.0; } else if (!inZone) { targetZone.alpha = 0.7; lastHitState = false; } };
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Rod = Container.expand(function () {
var self = Container.call(this);
var rodGraphics = self.attachAsset('rod', {
anchorX: 0,
anchorY: 0.5
});
self.rotationSpeed = 0.015;
self.update = function () {
self.rotation += self.rotationSpeed;
};
return self;
});
var TargetZone = Container.expand(function () {
var self = Container.call(this);
var zoneGraphics = self.attachAsset('targetZone', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.7
});
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
var centerX = 2048 / 2;
var centerY = 2732 / 2;
var targetAngle = Math.PI / 2; // Target at 90 degrees (top)
var angleThreshold = 0.25; // Tolerance for hitting target (increased for easier gameplay)
var gameActive = true;
var lastHitState = false;
// Create pivot point
var pivot = LK.getAsset('pivot', {
anchorX: 0.5,
anchorY: 0.5,
x: centerX,
y: centerY
});
game.addChild(pivot);
// Create spinning rod
var rod = new Rod();
rod.x = centerX;
rod.y = centerY;
game.addChild(rod);
// Create target zone
var targetZone = new TargetZone();
targetZone.x = centerX;
targetZone.y = centerY - 200;
game.addChild(targetZone);
// Create score display
var scoreTxt = new Text2('0', {
size: 100,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Create instructions
var instructionTxt = new Text2('TAP WHEN ROD HITS GREEN ZONE', {
size: 60,
fill: 0x27AE60
});
instructionTxt.anchor.set(0.5, 1);
instructionTxt.y = -50;
LK.gui.bottom.addChild(instructionTxt);
function normalizeAngle(angle) {
while (angle < 0) angle += Math.PI * 2;
while (angle >= Math.PI * 2) angle -= Math.PI * 2;
return angle;
}
function isInTargetZone() {
var currentAngle = normalizeAngle(rod.rotation);
var targetAngleNorm = normalizeAngle(targetAngle);
var diff = Math.abs(currentAngle - targetAngleNorm);
if (diff > Math.PI) {
diff = Math.PI * 2 - diff;
}
return diff <= angleThreshold;
}
function handleHit() {
if (!gameActive) return;
if (isInTargetZone()) {
// Successful hit
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
// Increase speed slightly
rod.rotationSpeed += 0.002;
// Visual feedback
LK.effects.flashObject(targetZone, 0x00ff00, 300);
// Play hit sound
LK.getSound('hit').play();
lastHitState = true;
} else {
// Miss - game over
gameActive = false;
// Visual feedback
LK.effects.flashScreen(0xff0000, 1000);
// Play miss sound
LK.getSound('miss').play();
// Show game over
LK.showGameOver();
}
}
game.down = function (x, y, obj) {
if (gameActive) {
handleHit();
}
};
game.update = function () {
if (!gameActive) return;
// Update target zone color based on rod position
var inZone = isInTargetZone();
if (inZone && !lastHitState) {
targetZone.alpha = 1.0;
} else if (!inZone) {
targetZone.alpha = 0.7;
lastHitState = false;
}
};