User prompt
Oyunda bi topu vurduğumuzda yanda %6 şansla sadece 3 dk boyunca +30 daha fazla güç veya aynı anda 2 ok firlatma aktive gelsin ekranda sağ köşede bu özelliklerin dakikası ve bitme zamanı ve özellikle ismi gözüksün ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Oyuna süre zamanı ekle toplam 30 dk olsun ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Toplar ve bombalar sağa sola ve çapraz hareket etsin hepsi farklı yerlere hareket etsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Toplar ve bombalar sadece yukarda dursun ve sağa sağa hareket edebilsin ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Oyunu optimize et ve düzelt
User prompt
Bombalar ve topları yukarda hareket ettie ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Sadece yukarda hareket edebilsinler
User prompt
Ele kadar kaçamasınlar ortada en fazla
User prompt
Bombalar toplar aşağıdada çok aşağı olmadan hareket edebilsin biraz hizlandir hepsini ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Arka plana cs2 Dust 2 fotoğrafını ekle
User prompt
Ok hızını çok az hizlandir
User prompt
Bombalar ve toplar hareket etsin hızları orta olsun
User prompt
Can barlarini aşağı al diğer seçenek ise oyuna başlamadan önce play ekranı olsun
User prompt
Eklediğim müziği oyuna ekle
User prompt
Yok olan topları rastgele oluştur diğer bir seçenek ise topa vurduğumuzda puan sesi ekle bombaya vurdugumuzda bomba sesi ekle.
User prompt
Eli yukari doğru kaldıramayak tamamen onu sadece 3 adım ilerletebilek lütfen köşeye can puanını rkle 5 kere bombaya basarsak oyunu sıfırdan başlat
User prompt
Oyun donuyor optimizasyon yap
User prompt
Toplar yan yana birleşik olmasın aralarında mesefe olsun lütfen
User prompt
Toplar dokunmatik ekranla patlatilmasin ve toplar çok fazla olsun ok yönüde yukari doğru olsun bombayı patlatinca can gitsin toplamda 5 can olsun sağ yukarda kalpler gözüksün.
User prompt
Topların hepsi yan yana dursun ve patlamadan yenisi gelmesin topları vurmak için aşağıdan el çıksın ve ona basılı tutarak ok fırlatsın
User prompt
Şimdi Bir top patlatma oyunu yapicaz kırmızı toplar sarı toplar mavi toplar olacak aralarında bomba olsun onları patlatırsak -30 puan alıyoruz, kırmızı toplar 40 puan sarı toplar 60 puan mavi toplar 70 puan olsun, top sayıları eşit olsun.
User prompt
Bu oyunu tamamen sil
Code edit (1 edits merged)
Please save this source code
User prompt
Garden Defense: Plants vs Invaders
Initial prompt
Plants Vs Zombies oyunundaki gibi bir bahçe ardından savunmak için bitkileri ve arkasında bahçe makinesi toplamda oyun başladıktan sonra 30 sn sonra zombiler gelsin.
/****
* Classes
****/
var Arrow = Container.expand(function (targetX, targetY, startX, startY) {
var self = Container.call(this);
// Attach arrow asset
var arrowGraphics = self.attachAsset('arrow', {
anchorX: 0.5,
anchorY: 0.5
});
// Calculate direction and speed
var dx = targetX - startX;
var dy = targetY - startY;
var distance = Math.sqrt(dx * dx + dy * dy);
var speed = 8;
self.velocityX = dx / distance * speed;
self.velocityY = dy / distance * speed;
// Set rotation to point toward target
arrowGraphics.rotation = Math.atan2(dy, dx);
self.update = function () {
self.x += self.velocityX;
self.y += self.velocityY;
// Check collision with balls
for (var i = balls.length - 1; i >= 0; i--) {
if (self.intersects(balls[i])) {
// Trigger ball hit
balls[i].hit();
self.destroy();
return;
}
}
// Check collision with bombs
for (var j = bombs.length - 1; j >= 0; j--) {
if (self.intersects(bombs[j])) {
// Trigger bomb hit
bombs[j].hit();
self.destroy();
return;
}
}
// Remove arrow if it goes off screen
if (self.x < -100 || self.x > 2148 || self.y < -100 || self.y > 2832) {
self.destroy();
}
};
return self;
});
var Ball = Container.expand(function (ballType) {
var self = Container.call(this);
// Store ball type and set properties based on type
self.ballType = ballType;
var assetId, points;
switch (ballType) {
case 'red':
assetId = 'redBall';
points = 40;
break;
case 'yellow':
assetId = 'yellowBall';
points = 60;
break;
case 'blue':
assetId = 'blueBall';
points = 70;
break;
}
self.points = points;
// Attach the appropriate ball asset
var ballGraphics = self.attachAsset(assetId, {
anchorX: 0.5,
anchorY: 0.5
});
// Add floating animation
self.floatDirection = Math.random() > 0.5 ? 1 : -1;
self.floatSpeed = 0.5 + Math.random() * 0.5;
self.floatOffset = 0;
self.update = function () {
self.floatOffset += self.floatSpeed;
self.y += Math.sin(self.floatOffset) * self.floatDirection * 0.3;
};
self.hit = function () {
// Award points and remove ball
LK.setScore(LK.getScore() + self.points);
scoreTxt.setText(LK.getScore());
LK.getSound('pop').play();
// Remove from balls array
for (var i = balls.length - 1; i >= 0; i--) {
if (balls[i] === self) {
balls.splice(i, 1);
break;
}
}
self.destroy();
};
return self;
});
var Bomb = Container.expand(function () {
var self = Container.call(this);
// Attach bomb asset
var bombGraphics = self.attachAsset('bomb', {
anchorX: 0.5,
anchorY: 0.5
});
// Add pulsing animation to make it look dangerous
self.pulseOffset = Math.random() * Math.PI * 2;
self.update = function () {
self.pulseOffset += 0.1;
var scale = 1 + Math.sin(self.pulseOffset) * 0.1;
bombGraphics.scaleX = scale;
bombGraphics.scaleY = scale;
};
self.hit = function () {
// Deduct points and lose a life for hitting bomb
LK.setScore(Math.max(0, LK.getScore() - 30));
scoreTxt.setText(LK.getScore());
lives--;
updateHeartsDisplay();
LK.getSound('bombSound').play();
// Flash screen red to indicate penalty
LK.effects.flashScreen(0xff0000, 500);
// Check game over
if (lives <= 0) {
LK.showGameOver();
}
// Remove from bombs array
for (var i = bombs.length - 1; i >= 0; i--) {
if (bombs[i] === self) {
bombs.splice(i, 1);
break;
}
}
self.destroy();
};
return self;
});
/****
* Initialize Game
****/
// Game arrays to track objects
var game = new LK.Game({
backgroundColor: 0x001122
});
/****
* Game Code
****/
// Game arrays to track objects
// Initialize ball assets with different colors
var balls = [];
var bombs = [];
var lives = 5;
var hearts = [];
// Score display
var scoreTxt = new Text2('0', {
size: 100,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Initialize hearts display
function updateHeartsDisplay() {
// Clear existing hearts
for (var h = 0; h < hearts.length; h++) {
hearts[h].destroy();
}
hearts = [];
// Create new hearts based on current lives
for (var i = 0; i < lives; i++) {
var heart = LK.getAsset('heart', {
anchorX: 0.5,
anchorY: 0.5
});
heart.x = LK.gui.topRight.x - 100 - i * 70;
heart.y = 80;
LK.gui.topRight.addChild(heart);
hearts.push(heart);
}
}
// Initialize hearts display
updateHeartsDisplay();
// Ball types for spawning
var ballTypes = ['red', 'yellow', 'blue'];
// Create initial grid of balls and bombs arranged side by side
var currentX = 120;
var currentY = 200;
var itemsPerRow = 12;
var spacing = 90;
var itemCount = 0;
// Create equal amounts of balls and bombs in a grid
for (var row = 0; row < 8; row++) {
for (var col = 0; col < itemsPerRow; col++) {
var x = currentX + col * spacing;
var y = currentY + row * spacing;
if (itemCount % 6 === 5) {
// Every 6th item is a bomb
var bomb = new Bomb();
bomb.x = x;
bomb.y = y;
bombs.push(bomb);
game.addChild(bomb);
} else {
// Create balls in sequence: red, yellow, blue
var ballType = ballTypes[itemCount % 3];
var ball = new Ball(ballType);
ball.x = x;
ball.y = y;
balls.push(ball);
game.addChild(ball);
}
itemCount++;
}
}
// Create hand launcher at bottom center
var hand = game.addChild(LK.getAsset('hand', {
anchorX: 0.5,
anchorY: 0.5
}));
hand.x = 1024;
hand.y = 2500;
var isDragging = false;
var dragStartX = 0;
var dragStartY = 0;
game.down = function (x, y, obj) {
// Check if touch is near the hand
var distance = Math.sqrt((x - hand.x) * (x - hand.x) + (y - hand.y) * (y - hand.y));
if (distance < 100) {
isDragging = true;
dragStartX = x;
dragStartY = y;
}
};
game.move = function (x, y, obj) {
if (isDragging) {
// Move hand slightly toward drag direction
var dx = x - dragStartX;
var dy = y - dragStartY;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 10) {
hand.x = 1024 + dx * 0.3;
hand.y = 2500 + dy * 0.3;
}
}
};
game.up = function (x, y, obj) {
if (isDragging) {
// Calculate launch direction (upward from hand position)
var dx = x - hand.x;
var dy = y - hand.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 20) {
// Create and launch arrow toward touch point
var arrow = new Arrow(x, y, hand.x, hand.y);
arrow.x = hand.x;
arrow.y = hand.y;
game.addChild(arrow);
}
// Reset hand position
hand.x = 1024;
hand.y = 2500;
isDragging = false;
}
};
game.update = function () {
// Update score display
scoreTxt.setText(LK.getScore());
}; ===================================================================
--- original.js
+++ change.js
@@ -23,18 +23,18 @@
// Check collision with balls
for (var i = balls.length - 1; i >= 0; i--) {
if (self.intersects(balls[i])) {
// Trigger ball hit
- balls[i].down(0, 0, {});
+ balls[i].hit();
self.destroy();
return;
}
}
// Check collision with bombs
for (var j = bombs.length - 1; j >= 0; j--) {
if (self.intersects(bombs[j])) {
// Trigger bomb hit
- bombs[j].down(0, 0, {});
+ bombs[j].hit();
self.destroy();
return;
}
}
@@ -77,9 +77,9 @@
self.update = function () {
self.floatOffset += self.floatSpeed;
self.y += Math.sin(self.floatOffset) * self.floatDirection * 0.3;
};
- self.down = function (x, y, obj) {
+ self.hit = function () {
// Award points and remove ball
LK.setScore(LK.getScore() + self.points);
scoreTxt.setText(LK.getScore());
LK.getSound('pop').play();
@@ -108,15 +108,21 @@
var scale = 1 + Math.sin(self.pulseOffset) * 0.1;
bombGraphics.scaleX = scale;
bombGraphics.scaleY = scale;
};
- self.down = function (x, y, obj) {
- // Deduct points for hitting bomb
+ self.hit = function () {
+ // Deduct points and lose a life for hitting bomb
LK.setScore(Math.max(0, LK.getScore() - 30));
scoreTxt.setText(LK.getScore());
+ lives--;
+ updateHeartsDisplay();
LK.getSound('bombSound').play();
// Flash screen red to indicate penalty
LK.effects.flashScreen(0xff0000, 500);
+ // Check game over
+ if (lives <= 0) {
+ LK.showGameOver();
+ }
// Remove from bombs array
for (var i = bombs.length - 1; i >= 0; i--) {
if (bombs[i] === self) {
bombs.splice(i, 1);
@@ -142,30 +148,53 @@
// Game arrays to track objects
// Initialize ball assets with different colors
var balls = [];
var bombs = [];
+var lives = 5;
+var hearts = [];
// Score display
var scoreTxt = new Text2('0', {
size: 100,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
+// Initialize hearts display
+function updateHeartsDisplay() {
+ // Clear existing hearts
+ for (var h = 0; h < hearts.length; h++) {
+ hearts[h].destroy();
+ }
+ hearts = [];
+ // Create new hearts based on current lives
+ for (var i = 0; i < lives; i++) {
+ var heart = LK.getAsset('heart', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ heart.x = LK.gui.topRight.x - 100 - i * 70;
+ heart.y = 80;
+ LK.gui.topRight.addChild(heart);
+ hearts.push(heart);
+ }
+}
+// Initialize hearts display
+updateHeartsDisplay();
// Ball types for spawning
var ballTypes = ['red', 'yellow', 'blue'];
// Create initial grid of balls and bombs arranged side by side
-var currentX = 200;
-var currentY = 400;
-var itemsPerRow = 6;
-var spacing = 150;
+var currentX = 120;
+var currentY = 200;
+var itemsPerRow = 12;
+var spacing = 90;
var itemCount = 0;
// Create equal amounts of balls and bombs in a grid
-for (var row = 0; row < 4; row++) {
+for (var row = 0; row < 8; row++) {
for (var col = 0; col < itemsPerRow; col++) {
var x = currentX + col * spacing;
var y = currentY + row * spacing;
- if (itemCount % 4 === 3) {
- // Every 4th item is a bomb
+ if (itemCount % 6 === 5) {
+ // Every 6th item is a bomb
var bomb = new Bomb();
bomb.x = x;
bomb.y = y;
bombs.push(bomb);
@@ -214,15 +243,15 @@
}
};
game.up = function (x, y, obj) {
if (isDragging) {
- // Calculate launch direction (opposite of drag)
- var dx = dragStartX - x;
- var dy = dragStartY - y;
+ // Calculate launch direction (upward from hand position)
+ var dx = x - hand.x;
+ var dy = y - hand.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 20) {
- // Create and launch arrow
- var arrow = new Arrow(hand.x + dx, hand.y + dy, hand.x, hand.y);
+ // Create and launch arrow toward touch point
+ var arrow = new Arrow(x, y, hand.x, hand.y);
arrow.x = hand.x;
arrow.y = hand.y;
game.addChild(arrow);
}