User prompt
Nesneler bazen yön değiştirebilir
User prompt
Nesne sayısı sıfır olamaz
User prompt
Nesneler sürekli çağrılır
User prompt
İlk başta aynı anda 5 nesne ekrandadır zamanla artarak maksimum 15 tane nesne aynı anda olur
User prompt
Nesnelerin sıklığı yavaş yavaş artar
User prompt
Nesnelerin hızları bazen yavaşlar bazen ise hızlanır bütün nesnelerin hızları birbirinden bağımsızdır
User prompt
Bu nesneler aynı anda sağdan sola, soldan sağa, yukarıdan aşağıya ve aşağıdan yukarıya doğru gelebildim
User prompt
Yeni bir varlık ekle ve bu varlığa tıklayınca puanı eksilt
User prompt
Yukarıdan varlıklar gelecek şekilde ayarla ve gelen varlıklara tıklayınca puanın gelmesini sağla
Code edit (1 edits merged)
Please save this source code
User prompt
Tap Score Frenzy
Initial prompt
public int score = 0; public void OnClick() { score++; scoreText.text = score.ToString(); }
/**** * Classes ****/ // BadFallingObject class: represents a clickable object that decreases score var BadFallingObject = Container.expand(function () { var self = Container.call(this); // Attach a red ellipse asset, centered var obj = self.attachAsset('badFallingEllipse', { anchorX: 0.5, anchorY: 0.5 }); // Direction: 0=down, 1=up, 2=left, 3=right self.direction = 0; self.speed = 8 + Math.random() * 8; // Track last positions for off-screen detection self.lastX = self.x; self.lastY = self.y; // Handle tap/click on the object self.down = function (x, y, objEvent) { if (!self._destroyed) { score -= 1; if (score < 0) score = 0; updateScore(); self.destroy(); } }; // Called every frame self.update = function () { self.lastX = self.x; self.lastY = self.y; // Randomly accelerate or decelerate speed a little, but clamp to min/max if (Math.random() < 0.15) { // 15% chance per frame to change speed var delta = (Math.random() - 0.5) * 1.2; // -0.6 to +0.6 self.speed += delta; if (self.speed < 3) self.speed = 3; if (self.speed > 20) self.speed = 20; } if (self.direction === 0) { // down self.y += self.speed; if (self.lastY <= 2732 && self.y > 2732) { self.destroy(); } } else if (self.direction === 1) { // up self.y -= self.speed; if (self.lastY >= -100 && self.y < -100) { self.destroy(); } } else if (self.direction === 2) { // left self.x -= self.speed; if (self.lastX >= -100 && self.x < -100) { self.destroy(); } } else if (self.direction === 3) { // right self.x += self.speed; if (self.lastX <= 2048 + 100 && self.x > 2048 + 100) { self.destroy(); } } }; return self; }); // FallingObject class: represents a clickable object moving in any direction var FallingObject = Container.expand(function () { var self = Container.call(this); // Attach a simple ellipse asset, centered var obj = self.attachAsset('fallingEllipse', { anchorX: 0.5, anchorY: 0.5 }); // Direction: 0=down, 1=up, 2=left, 3=right self.direction = 0; self.speed = 8 + Math.random() * 8; // Track last positions for off-screen detection self.lastX = self.x; self.lastY = self.y; // Handle tap/click on the object self.down = function (x, y, objEvent) { if (!self._destroyed) { score += 1; updateScore(); self.destroy(); } }; // Called every frame self.update = function () { self.lastX = self.x; self.lastY = self.y; // Randomly accelerate or decelerate speed a little, but clamp to min/max if (Math.random() < 0.15) { // 15% chance per frame to change speed var delta = (Math.random() - 0.5) * 1.2; // -0.6 to +0.6 self.speed += delta; if (self.speed < 3) self.speed = 3; if (self.speed > 20) self.speed = 20; } if (self.direction === 0) { // down self.y += self.speed; if (self.lastY <= 2732 && self.y > 2732) { self.destroy(); } } else if (self.direction === 1) { // up self.y -= self.speed; if (self.lastY >= -100 && self.y < -100) { self.destroy(); } } else if (self.direction === 2) { // left self.x -= self.speed; if (self.lastX >= -100 && self.x < -100) { self.destroy(); } } else if (self.direction === 3) { // right self.x += self.speed; if (self.lastX <= 2048 + 100 && self.x > 2048 + 100) { self.destroy(); } } }; return self; }); /**** * Initialize Game ****/ // Asset for falling objects (ellipse, visually distinct) // No custom assets needed for this minimal tap game. The score will be displayed using Text2. // No plugins needed for this minimal tap game. // No custom classes needed for this minimal tap game. var game = new LK.Game({ backgroundColor: 0x000000 // Black background for contrast }); /**** * Game Code ****/ // Set a visually appealing background color (optional, can be changed) game.setBackgroundColor(0x1a1a1a); // Create the score text, large and centered at the top var scoreTxt = new Text2('0', { size: 200, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); // Center horizontally, top edge LK.gui.top.addChild(scoreTxt); // Initialize score variable var score = 0; // Function to update score display function updateScore() { scoreTxt.setText(score); } // Handle tap/click/touch anywhere on the game area game.down = function (x, y, obj) { // Do nothing here; objects handle their own tap }; // Optionally, update the score at start updateScore(); // Array to keep track of falling objects var fallingObjects = []; // Spawn 5 objects at the start for (var i = 0; i < 5; i++) { spawnFallingObject(); } // Spawn a new falling object from a random direction function spawnFallingObject() { // 25% chance to spawn a bad object, 75% normal var isBad = Math.random() < 0.25; var obj; if (isBad) { obj = new BadFallingObject(); } else { obj = new FallingObject(); } // Pick a random direction: 0=down, 1=up, 2=left, 3=right var dir = Math.floor(Math.random() * 4); obj.direction = dir; // Set initial position based on direction if (dir === 0) { // down (from top) obj.x = 120 + Math.random() * (2048 - 240); obj.y = -100; } else if (dir === 1) { // up (from bottom) obj.x = 120 + Math.random() * (2048 - 240); obj.y = 2732 + 100; } else if (dir === 2) { // left (from right) obj.x = 2048 + 100; obj.y = 120 + Math.random() * (2732 - 240); } else if (dir === 3) { // right (from left) obj.x = -100; obj.y = 120 + Math.random() * (2732 - 240); } fallingObjects.push(obj); game.addChild(obj); } // Game update: move objects, remove destroyed ones, spawn new ones game.update = function () { // Update all falling objects for (var i = fallingObjects.length - 1; i >= 0; i--) { var obj = fallingObjects[i]; if (obj._destroyed) { // Only remove if more than 1 object will remain if (fallingObjects.length > 1) { fallingObjects.splice(i, 1); continue; } else { // If this is the last object, do not remove it obj._destroyed = false; // Prevent further removal attempts } } if (typeof obj.update === "function") obj.update(); } // Gradually decrease the spawn interval to increase spawn frequency over time if (typeof spawnInterval === "undefined") { var spawnInterval = 40; // initial interval (frames) var minSpawnInterval = 10; // minimum interval (max frequency) var spawnIntervalDecreaseRate = 0.01; // decrease per frame var spawnIntervalAccumulator = 0; var maxObjects = 5; // Start with 5 objects var maxObjectsIncreaseRate = 1 / (60 * 10); // Increase maxObjects by 1 every 10 seconds (at 60fps) var maxObjectsAccumulator = 0; } // Increase maxObjects over time, up to 15 if (maxObjects < 15) { maxObjectsAccumulator += maxObjectsIncreaseRate; if (maxObjectsAccumulator >= 1) { maxObjects += 1; if (maxObjects > 15) maxObjects = 15; maxObjectsAccumulator = 0; } } spawnIntervalAccumulator += 1; if (spawnIntervalAccumulator >= spawnInterval) { // Only spawn if we have less than maxObjects on screen if (fallingObjects.length < maxObjects) { spawnFallingObject(); } spawnIntervalAccumulator = 0; // Decrease interval, but clamp to minSpawnInterval spawnInterval -= spawnIntervalDecreaseRate; if (spawnInterval < minSpawnInterval) spawnInterval = minSpawnInterval; } }; // Remove tap-to-score-anywhere, now only objects are clickable game.down = function (x, y, obj) { // Do nothing here; objects handle their own tap }; // Asset for falling objects (ellipse, visually distinct)
===================================================================
--- original.js
+++ change.js
@@ -207,10 +207,16 @@
// Update all falling objects
for (var i = fallingObjects.length - 1; i >= 0; i--) {
var obj = fallingObjects[i];
if (obj._destroyed) {
- fallingObjects.splice(i, 1);
- continue;
+ // Only remove if more than 1 object will remain
+ if (fallingObjects.length > 1) {
+ fallingObjects.splice(i, 1);
+ continue;
+ } else {
+ // If this is the last object, do not remove it
+ obj._destroyed = false; // Prevent further removal attempts
+ }
}
if (typeof obj.update === "function") obj.update();
}
// Gradually decrease the spawn interval to increase spawn frequency over time