/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var FeedbackEffect = Container.expand(function () { var self = Container.call(this); self.showEffect = function (type, x, y) { var effectGraphics; if (type === 'perfect') { effectGraphics = self.attachAsset('perfectHit', { anchorX: 0.5, anchorY: 0.5 }); } else if (type === 'good') { effectGraphics = self.attachAsset('goodHit', { anchorX: 0.5, anchorY: 0.5 }); } else { effectGraphics = self.attachAsset('missHit', { anchorX: 0.5, anchorY: 0.5 }); } self.x = x; self.y = y; effectGraphics.alpha = 0.8; effectGraphics.scaleX = 0.5; effectGraphics.scaleY = 0.5; tween(effectGraphics, { alpha: 0, scaleX: 1.5, scaleY: 1.5 }, { duration: 500, easing: tween.easeOut, onFinish: function onFinish() { self.destroy(); } }); }; return self; }); var MovingIndicator = Container.expand(function () { var self = Container.call(this); var indicatorGraphics = self.attachAsset('indicator', { anchorX: 0.5, anchorY: 0.5 }); self.angle = 0; self.speed = 0.03; self.radius = 450; self.centerX = 1024; self.centerY = 1366; self.update = function () { self.angle += self.speed; if (self.angle > Math.PI * 2) { self.angle = 0; } self.x = self.centerX + Math.cos(self.angle) * self.radius; self.y = self.centerY + Math.sin(self.angle) * self.radius; }; self.increaseSpeed = function () { self.speed += 0.01; if (self.speed > 0.15) { self.speed = 0.15; } }; return self; }); var TargetZone = Container.expand(function () { var self = Container.call(this); var targetGraphics = self.attachAsset('targetZone', { anchorX: 0.5, anchorY: 0.5 }); targetGraphics.alpha = 0.8; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a1a }); /**** * Game Code ****/ var gameScore = 0; var missCount = 0; var maxMisses = 3; var level = 1; var isGameRunning = true; var lastTapTime = 0; // Create track background var trackBg = game.addChild(LK.getAsset('trackBackground', { anchorX: 0.5, anchorY: 0.5, x: 1024, y: 1366, alpha: 0.3 })); // Create target zone var targetZone = game.addChild(new TargetZone()); targetZone.x = 1024 + 450; // Position on the right side of the circle targetZone.y = 1366; // Create moving indicator var indicator = game.addChild(new MovingIndicator()); // Create UI elements var scoreText = new Text2('Puan: 0', { size: 80, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); var levelText = new Text2('Seviye: 1', { size: 60, fill: 0xFFFFFF }); levelText.anchor.set(0, 0); levelText.x = 50; levelText.y = 150; LK.gui.topLeft.addChild(levelText); var missesText = new Text2('Kaçırma: 0/3', { size: 60, fill: 0xFF6B6B }); missesText.anchor.set(1, 0); LK.gui.topRight.addChild(missesText); var instructionText = new Text2('Yeşil daire turuncu hedefe değdiğinde dokun!', { size: 50, fill: 0xCCCCCC }); instructionText.anchor.set(0.5, 1); LK.gui.bottom.addChild(instructionText); function updateUI() { scoreText.setText('Puan: ' + gameScore); levelText.setText('Seviye: ' + level); missesText.setText('Kaçırma: ' + missCount + '/' + maxMisses); } function calculateDistance(x1, y1, x2, y2) { var dx = x2 - x1; var dy = y2 - y1; return Math.sqrt(dx * dx + dy * dy); } function handleTap() { if (!isGameRunning) return; var currentTime = LK.ticks; if (currentTime - lastTapTime < 10) return; // Prevent rapid tapping lastTapTime = currentTime; var distance = calculateDistance(indicator.x, indicator.y, targetZone.x, targetZone.y); var targetRadius = 100; // Half of target zone width var feedbackEffect = game.addChild(new FeedbackEffect()); if (distance <= 50) { // Perfect hit gameScore += 100; feedbackEffect.showEffect('perfect', indicator.x, indicator.y); LK.getSound('perfectSound').play(); LK.effects.flashObject(targetZone, 0x00FF00, 300); } else if (distance <= targetRadius) { // Good hit gameScore += 50; feedbackEffect.showEffect('good', indicator.x, indicator.y); LK.getSound('goodSound').play(); LK.effects.flashObject(targetZone, 0xFFFF00, 300); } else { // Miss missCount++; feedbackEffect.showEffect('miss', indicator.x, indicator.y); LK.getSound('missSound').play(); LK.effects.flashObject(targetZone, 0xFF0000, 500); if (missCount >= maxMisses) { isGameRunning = false; LK.setScore(gameScore); LK.showGameOver(); return; } } // Level progression if (gameScore > 0 && gameScore % 250 === 0) { level++; indicator.increaseSpeed(); LK.effects.flashScreen(0x4CAF50, 500); } updateUI(); } game.down = function (x, y, obj) { handleTap(); }; game.update = function () { if (!isGameRunning) return; // Check if indicator passed target zone without being tapped var distance = calculateDistance(indicator.x, indicator.y, targetZone.x, targetZone.y); if (indicator.lastDistance !== undefined) { if (indicator.lastDistance > 100 && distance <= 100) { // Indicator just entered target zone indicator.inTargetZone = true; } else if (indicator.lastDistance <= 100 && distance > 100 && indicator.inTargetZone) { // Indicator just left target zone without being tapped indicator.inTargetZone = false; if (LK.ticks - lastTapTime > 30) { // Only count as miss if no recent tap missCount++; var missEffect = game.addChild(new FeedbackEffect()); missEffect.showEffect('miss', targetZone.x, targetZone.y); LK.getSound('missSound').play(); if (missCount >= maxMisses) { isGameRunning = false; LK.setScore(gameScore); LK.showGameOver(); return; } updateUI(); } } } indicator.lastDistance = distance; };
===================================================================
--- original.js
+++ change.js
@@ -52,9 +52,9 @@
anchorY: 0.5
});
self.angle = 0;
self.speed = 0.03;
- self.radius = 350;
+ self.radius = 450;
self.centerX = 1024;
self.centerY = 1366;
self.update = function () {
self.angle += self.speed;
@@ -107,9 +107,9 @@
alpha: 0.3
}));
// Create target zone
var targetZone = game.addChild(new TargetZone());
-targetZone.x = 1024 + 350; // Position on the right side of the circle
+targetZone.x = 1024 + 450; // Position on the right side of the circle
targetZone.y = 1366;
// Create moving indicator
var indicator = game.addChild(new MovingIndicator());
// Create UI elements
@@ -154,11 +154,11 @@
var currentTime = LK.ticks;
if (currentTime - lastTapTime < 10) return; // Prevent rapid tapping
lastTapTime = currentTime;
var distance = calculateDistance(indicator.x, indicator.y, targetZone.x, targetZone.y);
- var targetRadius = 60; // Half of target zone width
+ var targetRadius = 100; // Half of target zone width
var feedbackEffect = game.addChild(new FeedbackEffect());
- if (distance <= 30) {
+ if (distance <= 50) {
// Perfect hit
gameScore += 100;
feedbackEffect.showEffect('perfect', indicator.x, indicator.y);
LK.getSound('perfectSound').play();
@@ -197,12 +197,12 @@
if (!isGameRunning) return;
// Check if indicator passed target zone without being tapped
var distance = calculateDistance(indicator.x, indicator.y, targetZone.x, targetZone.y);
if (indicator.lastDistance !== undefined) {
- if (indicator.lastDistance > 60 && distance <= 60) {
+ if (indicator.lastDistance > 100 && distance <= 100) {
// Indicator just entered target zone
indicator.inTargetZone = true;
- } else if (indicator.lastDistance <= 60 && distance > 60 && indicator.inTargetZone) {
+ } else if (indicator.lastDistance <= 100 && distance > 100 && indicator.inTargetZone) {
// Indicator just left target zone without being tapped
indicator.inTargetZone = false;
if (LK.ticks - lastTapTime > 30) {
// Only count as miss if no recent tap