User prompt
sineklere vurmak için ekrana mouse ile kontrol edilen bir sineklik yerleştirelim
User prompt
sinekler random hareket etsin ve ekranda en fazla 5 saniye kalsın ↪💡 Consider importing and using the following plugins: @upit/tween.v1
Code edit (1 edits merged)
Please save this source code
User prompt
Fly Swatter
Initial prompt
bir oyun yapalım bu oyunda amaç sinek avlamak olsun
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Fly = Container.expand(function () {
var self = Container.call(this);
var flyGraphics = self.attachAsset('fly', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 2 + Math.random() * 3;
self.directionX = (Math.random() - 0.5) * 2;
self.directionY = (Math.random() - 0.5) * 2;
self.timeAlive = 0;
self.maxLifetime = 3000 + Math.random() * 2000; // 3-5 seconds
self.buzzTimer = 0;
self.isSwatted = false;
// Normalize direction
var length = Math.sqrt(self.directionX * self.directionX + self.directionY * self.directionY);
if (length > 0) {
self.directionX /= length;
self.directionY /= length;
}
self.update = function () {
if (self.isSwatted) return;
self.timeAlive += 16.67; // ~60fps
// Change direction randomly
if (Math.random() < 0.02) {
self.directionX += (Math.random() - 0.5) * 0.5;
self.directionY += (Math.random() - 0.5) * 0.5;
}
// Move fly
self.x += self.directionX * self.speed;
self.y += self.directionY * self.speed;
// Bounce off walls
if (self.x < 50 || self.x > 1998) {
self.directionX *= -1;
self.x = Math.max(50, Math.min(1998, self.x));
}
if (self.y < 50 || self.y > 2682) {
self.directionY *= -1;
self.y = Math.max(50, Math.min(2682, self.y));
}
// Buzzing sound effect
self.buzzTimer += 16.67;
if (self.buzzTimer > 1000 + Math.random() * 2000) {
LK.getSound('buzz').play();
self.buzzTimer = 0;
}
// Slight rotation for buzzing effect
flyGraphics.rotation += 0.1;
// Check if lifetime expired
if (self.timeAlive > self.maxLifetime) {
self.escape();
}
};
self.escape = function () {
if (!self.isSwatted) {
missedFlies++;
LK.getSound('miss').play();
}
self.destroy();
for (var i = flies.length - 1; i >= 0; i--) {
if (flies[i] === self) {
flies.splice(i, 1);
break;
}
}
};
self.swat = function () {
if (self.isSwatted) return;
self.isSwatted = true;
LK.setScore(LK.getScore() + 10);
scoreTxt.setText(LK.getScore());
// Visual feedback
tween(flyGraphics, {
scaleX: 0,
scaleY: 0,
alpha: 0
}, {
duration: 200,
onFinish: function onFinish() {
self.destroy();
for (var i = flies.length - 1; i >= 0; i--) {
if (flies[i] === self) {
flies.splice(i, 1);
break;
}
}
}
});
};
self.down = function (x, y, obj) {
self.swat();
LK.getSound('swat').play();
// Show swatter effect
var swatter = LK.getAsset('swatter', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.8
});
game.addChild(swatter);
swatter.x = self.x;
swatter.y = self.y;
tween(swatter, {
scaleX: 1.5,
scaleY: 1.5,
alpha: 0
}, {
duration: 300,
onFinish: function onFinish() {
swatter.destroy();
}
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xf0f8ff
});
/****
* Game Code
****/
var flies = [];
var spawnTimer = 0;
var spawnInterval = 2000; // Start with 2 seconds between spawns
var missedFlies = 0;
var maxMissedFlies = 10;
var gameDifficulty = 1;
// Score display
var scoreTxt = new Text2('0', {
size: 120,
fill: 0x333333
});
scoreTxt.setText(LK.getScore());
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Missed flies counter
var missedTxt = new Text2('Missed: 0/' + maxMissedFlies, {
size: 80,
fill: 0xCC0000
});
missedTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(missedTxt);
function spawnFly() {
var fly = new Fly();
// Spawn at random edge of screen
var edge = Math.floor(Math.random() * 4);
switch (edge) {
case 0:
// Top
fly.x = Math.random() * 2048;
fly.y = 50;
break;
case 1:
// Right
fly.x = 1998;
fly.y = Math.random() * 2732;
break;
case 2:
// Bottom
fly.x = Math.random() * 2048;
fly.y = 2682;
break;
case 3:
// Left
fly.x = 50;
fly.y = Math.random() * 2732;
break;
}
flies.push(fly);
game.addChild(fly);
}
function increaseDifficulty() {
gameDifficulty += 0.1;
spawnInterval = Math.max(800, 2000 / gameDifficulty); // Minimum 0.8 seconds
// Increase fly speed for new flies
for (var i = 0; i < flies.length; i++) {
flies[i].speed = Math.min(flies[i].speed * 1.05, 8);
}
}
game.update = function () {
// Update missed flies display
missedTxt.setText('Missed: ' + missedFlies + '/' + maxMissedFlies);
// Check game over condition
if (missedFlies >= maxMissedFlies) {
LK.showGameOver();
return;
}
// Spawn new flies
spawnTimer += 16.67;
if (spawnTimer >= spawnInterval) {
spawnFly();
spawnTimer = 0;
}
// Increase difficulty every 10 seconds
if (LK.ticks % 600 === 0) {
increaseDifficulty();
}
// Limit number of flies on screen
if (flies.length > 15) {
var oldestFly = flies[0];
oldestFly.escape();
}
};
// Initial fly spawn
spawnFly(); ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,216 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Fly = Container.expand(function () {
+ var self = Container.call(this);
+ var flyGraphics = self.attachAsset('fly', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = 2 + Math.random() * 3;
+ self.directionX = (Math.random() - 0.5) * 2;
+ self.directionY = (Math.random() - 0.5) * 2;
+ self.timeAlive = 0;
+ self.maxLifetime = 3000 + Math.random() * 2000; // 3-5 seconds
+ self.buzzTimer = 0;
+ self.isSwatted = false;
+ // Normalize direction
+ var length = Math.sqrt(self.directionX * self.directionX + self.directionY * self.directionY);
+ if (length > 0) {
+ self.directionX /= length;
+ self.directionY /= length;
+ }
+ self.update = function () {
+ if (self.isSwatted) return;
+ self.timeAlive += 16.67; // ~60fps
+ // Change direction randomly
+ if (Math.random() < 0.02) {
+ self.directionX += (Math.random() - 0.5) * 0.5;
+ self.directionY += (Math.random() - 0.5) * 0.5;
+ }
+ // Move fly
+ self.x += self.directionX * self.speed;
+ self.y += self.directionY * self.speed;
+ // Bounce off walls
+ if (self.x < 50 || self.x > 1998) {
+ self.directionX *= -1;
+ self.x = Math.max(50, Math.min(1998, self.x));
+ }
+ if (self.y < 50 || self.y > 2682) {
+ self.directionY *= -1;
+ self.y = Math.max(50, Math.min(2682, self.y));
+ }
+ // Buzzing sound effect
+ self.buzzTimer += 16.67;
+ if (self.buzzTimer > 1000 + Math.random() * 2000) {
+ LK.getSound('buzz').play();
+ self.buzzTimer = 0;
+ }
+ // Slight rotation for buzzing effect
+ flyGraphics.rotation += 0.1;
+ // Check if lifetime expired
+ if (self.timeAlive > self.maxLifetime) {
+ self.escape();
+ }
+ };
+ self.escape = function () {
+ if (!self.isSwatted) {
+ missedFlies++;
+ LK.getSound('miss').play();
+ }
+ self.destroy();
+ for (var i = flies.length - 1; i >= 0; i--) {
+ if (flies[i] === self) {
+ flies.splice(i, 1);
+ break;
+ }
+ }
+ };
+ self.swat = function () {
+ if (self.isSwatted) return;
+ self.isSwatted = true;
+ LK.setScore(LK.getScore() + 10);
+ scoreTxt.setText(LK.getScore());
+ // Visual feedback
+ tween(flyGraphics, {
+ scaleX: 0,
+ scaleY: 0,
+ alpha: 0
+ }, {
+ duration: 200,
+ onFinish: function onFinish() {
+ self.destroy();
+ for (var i = flies.length - 1; i >= 0; i--) {
+ if (flies[i] === self) {
+ flies.splice(i, 1);
+ break;
+ }
+ }
+ }
+ });
+ };
+ self.down = function (x, y, obj) {
+ self.swat();
+ LK.getSound('swat').play();
+ // Show swatter effect
+ var swatter = LK.getAsset('swatter', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ alpha: 0.8
+ });
+ game.addChild(swatter);
+ swatter.x = self.x;
+ swatter.y = self.y;
+ tween(swatter, {
+ scaleX: 1.5,
+ scaleY: 1.5,
+ alpha: 0
+ }, {
+ duration: 300,
+ onFinish: function onFinish() {
+ swatter.destroy();
+ }
+ });
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0xf0f8ff
+});
+
+/****
+* Game Code
+****/
+var flies = [];
+var spawnTimer = 0;
+var spawnInterval = 2000; // Start with 2 seconds between spawns
+var missedFlies = 0;
+var maxMissedFlies = 10;
+var gameDifficulty = 1;
+// Score display
+var scoreTxt = new Text2('0', {
+ size: 120,
+ fill: 0x333333
+});
+scoreTxt.setText(LK.getScore());
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+// Missed flies counter
+var missedTxt = new Text2('Missed: 0/' + maxMissedFlies, {
+ size: 80,
+ fill: 0xCC0000
+});
+missedTxt.anchor.set(1, 0);
+LK.gui.topRight.addChild(missedTxt);
+function spawnFly() {
+ var fly = new Fly();
+ // Spawn at random edge of screen
+ var edge = Math.floor(Math.random() * 4);
+ switch (edge) {
+ case 0:
+ // Top
+ fly.x = Math.random() * 2048;
+ fly.y = 50;
+ break;
+ case 1:
+ // Right
+ fly.x = 1998;
+ fly.y = Math.random() * 2732;
+ break;
+ case 2:
+ // Bottom
+ fly.x = Math.random() * 2048;
+ fly.y = 2682;
+ break;
+ case 3:
+ // Left
+ fly.x = 50;
+ fly.y = Math.random() * 2732;
+ break;
+ }
+ flies.push(fly);
+ game.addChild(fly);
+}
+function increaseDifficulty() {
+ gameDifficulty += 0.1;
+ spawnInterval = Math.max(800, 2000 / gameDifficulty); // Minimum 0.8 seconds
+ // Increase fly speed for new flies
+ for (var i = 0; i < flies.length; i++) {
+ flies[i].speed = Math.min(flies[i].speed * 1.05, 8);
+ }
+}
+game.update = function () {
+ // Update missed flies display
+ missedTxt.setText('Missed: ' + missedFlies + '/' + maxMissedFlies);
+ // Check game over condition
+ if (missedFlies >= maxMissedFlies) {
+ LK.showGameOver();
+ return;
+ }
+ // Spawn new flies
+ spawnTimer += 16.67;
+ if (spawnTimer >= spawnInterval) {
+ spawnFly();
+ spawnTimer = 0;
+ }
+ // Increase difficulty every 10 seconds
+ if (LK.ticks % 600 === 0) {
+ increaseDifficulty();
+ }
+ // Limit number of flies on screen
+ if (flies.length > 15) {
+ var oldestFly = flies[0];
+ oldestFly.escape();
+ }
+};
+// Initial fly spawn
+spawnFly();
\ No newline at end of file
2 boyutlu ve renkli bir plastik sineklik
level complete background. In-Game asset. 2d. High contrast. No shadows
crushed fly In-Game asset. 2d. High contrast. No shadows
arkaplan için geniş bir zemin gerçekçi bir salon genellikle pencere kapı koltuk gibi şeyler olsun. In-Game asset. 2d. High contrast. No shadows
arkaplan için gerçekçi bir oda içinde çalışma masası bilgisayar pencere kapı gibi şeyler olsun. yüksek çözünürlüklü ve gerçekçi olması gerekiyor In-Game asset. 2d. High contrast. No shadows
gerçekçi bir orman ambiyansı tam ortasında büyük bir böcek yuvası olan ve yeşil tonlarında. In-Game asset. 2d. High contrast. No shadows
ezilmiş bir böcek. In-Game asset. 2d. High contrast. No shadows
next level button. In-Game asset. 2d. High contrast. No shadows