User prompt
Arka planı fruit ninja daki yer yap
User prompt
Meyvelerin boyutlarını büyüt
User prompt
Biraz daha yukarı
User prompt
Meyveler biraz daha yukarı gelebilirim çok alçak
Code edit (1 edits merged)
Please save this source code
User prompt
Fruit Slice 3D
Initial prompt
Fruit ninja gibi oyun yap ama 3d
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Bomb = Container.expand(function () {
var self = Container.call(this);
self.isBomb = true;
self.velocityX = 0;
self.velocityY = 0;
self.gravity = 0.8;
var bombGraphic = self.attachAsset('bomb', {
anchorX: 0.5,
anchorY: 0.5
});
// Make bomb flash red occasionally
self.flashTimer = 0;
self.update = function () {
self.x += self.velocityX;
self.y += self.velocityY;
self.velocityY += self.gravity;
self.flashTimer++;
if (self.flashTimer % 30 < 15) {
bombGraphic.tint = 0xff0000;
} else {
bombGraphic.tint = 0xffffff;
}
};
self.explode = function () {
LK.getSound('bomb').play();
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
};
return self;
});
var Fruit = Container.expand(function (type) {
var self = Container.call(this);
self.fruitType = type || 'apple';
self.isSliced = false;
self.velocityX = 0;
self.velocityY = 0;
self.gravity = 0.8;
self.rotationSpeed = 0;
// Set fruit properties based on type
if (self.fruitType === 'apple') {
self.points = 1;
self.graphic = self.attachAsset('apple', {
anchorX: 0.5,
anchorY: 0.5
});
} else if (self.fruitType === 'orange') {
self.points = 2;
self.graphic = self.attachAsset('orange', {
anchorX: 0.5,
anchorY: 0.5
});
} else if (self.fruitType === 'watermelon') {
self.points = 5;
self.graphic = self.attachAsset('watermelon', {
anchorX: 0.5,
anchorY: 0.5
});
}
self.rotationSpeed = (Math.random() - 0.5) * 0.2;
self.update = function () {
if (!self.isSliced) {
self.x += self.velocityX;
self.y += self.velocityY;
self.velocityY += self.gravity;
self.graphic.rotation += self.rotationSpeed;
}
};
self.slice = function () {
if (self.isSliced) return;
self.isSliced = true;
LK.getSound('slice').play();
// Create halves
var halfType = self.fruitType + 'Half';
var leftHalf = new FruitHalf(halfType, -1);
var rightHalf = new FruitHalf(halfType, 1);
leftHalf.x = self.x - 20;
leftHalf.y = self.y;
rightHalf.x = self.x + 20;
rightHalf.y = self.y;
leftHalf.velocityX = self.velocityX - 3;
leftHalf.velocityY = self.velocityY - 2;
rightHalf.velocityX = self.velocityX + 3;
rightHalf.velocityY = self.velocityY - 2;
game.addChild(leftHalf);
game.addChild(rightHalf);
fruitHalves.push(leftHalf);
fruitHalves.push(rightHalf);
// Create particles
createParticles(self.x, self.y);
// Add score
LK.setScore(LK.getScore() + self.points);
scoreTxt.setText(LK.getScore());
// Hide original fruit
self.visible = false;
};
return self;
});
var FruitHalf = Container.expand(function (halfType, direction) {
var self = Container.call(this);
self.velocityX = 0;
self.velocityY = 0;
self.gravity = 0.8;
self.rotationSpeed = direction * 0.3;
var halfGraphic = self.attachAsset(halfType, {
anchorX: 0.5,
anchorY: 0.5
});
halfGraphic.scaleX = 0.8;
self.update = function () {
self.x += self.velocityX;
self.y += self.velocityY;
self.velocityY += self.gravity;
halfGraphic.rotation += self.rotationSpeed;
};
return self;
});
var Particle = Container.expand(function () {
var self = Container.call(this);
self.velocityX = (Math.random() - 0.5) * 8;
self.velocityY = (Math.random() - 0.5) * 8;
self.life = 30;
var particleGraphic = self.attachAsset('particle', {
anchorX: 0.5,
anchorY: 0.5
});
particleGraphic.tint = Math.random() * 0xffffff;
self.update = function () {
self.x += self.velocityX;
self.y += self.velocityY;
self.life--;
particleGraphic.alpha = self.life / 30;
if (self.life <= 0) {
self.visible = false;
}
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
var fruits = [];
var bombs = [];
var fruitHalves = [];
var particles = [];
var spawnTimer = 0;
var gameSpeed = 1;
var lives = 3;
var missedFruits = 0;
// Create score display
var scoreTxt = new Text2('0', {
size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Create lives display
var livesTxt = new Text2('Lives: 3', {
size: 50,
fill: 0xFFFFFF
});
livesTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(livesTxt);
// Slice trail variables
var isSlicing = false;
var sliceTrail = [];
function createParticles(x, y) {
for (var i = 0; i < 8; i++) {
var particle = new Particle();
particle.x = x;
particle.y = y;
game.addChild(particle);
particles.push(particle);
}
}
function spawnFruit() {
var shouldSpawnBomb = Math.random() < 0.1; // 10% chance for bomb
if (shouldSpawnBomb) {
var bomb = new Bomb();
bomb.x = Math.random() * 1800 + 124; // Random x position
bomb.y = 2732; // Start at bottom
bomb.velocityX = (Math.random() - 0.5) * 8;
bomb.velocityY = -(Math.random() * 8 + 12) * gameSpeed;
game.addChild(bomb);
bombs.push(bomb);
} else {
var fruitTypes = ['apple', 'orange', 'watermelon'];
var randomType = fruitTypes[Math.floor(Math.random() * fruitTypes.length)];
var fruit = new Fruit(randomType);
fruit.x = Math.random() * 1800 + 124; // Random x position
fruit.y = 2732; // Start at bottom
fruit.velocityX = (Math.random() - 0.5) * 8;
fruit.velocityY = -(Math.random() * 8 + 12) * gameSpeed;
game.addChild(fruit);
fruits.push(fruit);
}
}
function checkSliceCollisions(x, y) {
// Check fruits
for (var i = fruits.length - 1; i >= 0; i--) {
var fruit = fruits[i];
if (!fruit.isSliced && fruit.visible) {
var dx = fruit.x - x;
var dy = fruit.y - y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < fruit.graphic.width / 2) {
fruit.slice();
}
}
}
// Check bombs
for (var i = bombs.length - 1; i >= 0; i--) {
var bomb = bombs[i];
if (bomb.visible) {
var dx = bomb.x - x;
var dy = bomb.y - y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < 40) {
bomb.explode();
return;
}
}
}
}
game.down = function (x, y, obj) {
isSlicing = true;
sliceTrail = [];
checkSliceCollisions(x, y);
};
game.move = function (x, y, obj) {
if (isSlicing) {
sliceTrail.push({
x: x,
y: y
});
if (sliceTrail.length > 10) {
sliceTrail.shift();
}
checkSliceCollisions(x, y);
}
};
game.up = function (x, y, obj) {
isSlicing = false;
sliceTrail = [];
};
game.update = function () {
spawnTimer++;
// Increase game speed over time
if (LK.ticks % 600 === 0) {
// Every 10 seconds
gameSpeed += 0.1;
}
// Spawn fruits based on game speed
var spawnRate = Math.max(60 - Math.floor(gameSpeed * 10), 20);
if (spawnTimer >= spawnRate) {
spawnFruit();
spawnTimer = 0;
}
// Update and clean up fruits
for (var i = fruits.length - 1; i >= 0; i--) {
var fruit = fruits[i];
// Check if fruit fell off screen
if (fruit.y > 2800 && !fruit.isSliced) {
missedFruits++;
lives--;
livesTxt.setText('Lives: ' + lives);
if (lives <= 0) {
LK.showGameOver();
return;
}
}
// Remove fruits that are off screen
if (fruit.y > 2800 || fruit.isSliced && !fruit.visible) {
fruit.destroy();
fruits.splice(i, 1);
}
}
// Update and clean up bombs
for (var i = bombs.length - 1; i >= 0; i--) {
var bomb = bombs[i];
if (bomb.y > 2800) {
bomb.destroy();
bombs.splice(i, 1);
}
}
// Update and clean up fruit halves
for (var i = fruitHalves.length - 1; i >= 0; i--) {
var half = fruitHalves[i];
if (half.y > 2800) {
half.destroy();
fruitHalves.splice(i, 1);
}
}
// Update and clean up particles
for (var i = particles.length - 1; i >= 0; i--) {
var particle = particles[i];
if (!particle.visible || particle.life <= 0) {
particle.destroy();
particles.splice(i, 1);
}
}
};
// Play background music
LK.playMusic('bgmusic'); ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,319 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Bomb = Container.expand(function () {
+ var self = Container.call(this);
+ self.isBomb = true;
+ self.velocityX = 0;
+ self.velocityY = 0;
+ self.gravity = 0.8;
+ var bombGraphic = self.attachAsset('bomb', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Make bomb flash red occasionally
+ self.flashTimer = 0;
+ self.update = function () {
+ self.x += self.velocityX;
+ self.y += self.velocityY;
+ self.velocityY += self.gravity;
+ self.flashTimer++;
+ if (self.flashTimer % 30 < 15) {
+ bombGraphic.tint = 0xff0000;
+ } else {
+ bombGraphic.tint = 0xffffff;
+ }
+ };
+ self.explode = function () {
+ LK.getSound('bomb').play();
+ LK.effects.flashScreen(0xff0000, 1000);
+ LK.showGameOver();
+ };
+ return self;
+});
+var Fruit = Container.expand(function (type) {
+ var self = Container.call(this);
+ self.fruitType = type || 'apple';
+ self.isSliced = false;
+ self.velocityX = 0;
+ self.velocityY = 0;
+ self.gravity = 0.8;
+ self.rotationSpeed = 0;
+ // Set fruit properties based on type
+ if (self.fruitType === 'apple') {
+ self.points = 1;
+ self.graphic = self.attachAsset('apple', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ } else if (self.fruitType === 'orange') {
+ self.points = 2;
+ self.graphic = self.attachAsset('orange', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ } else if (self.fruitType === 'watermelon') {
+ self.points = 5;
+ self.graphic = self.attachAsset('watermelon', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ }
+ self.rotationSpeed = (Math.random() - 0.5) * 0.2;
+ self.update = function () {
+ if (!self.isSliced) {
+ self.x += self.velocityX;
+ self.y += self.velocityY;
+ self.velocityY += self.gravity;
+ self.graphic.rotation += self.rotationSpeed;
+ }
+ };
+ self.slice = function () {
+ if (self.isSliced) return;
+ self.isSliced = true;
+ LK.getSound('slice').play();
+ // Create halves
+ var halfType = self.fruitType + 'Half';
+ var leftHalf = new FruitHalf(halfType, -1);
+ var rightHalf = new FruitHalf(halfType, 1);
+ leftHalf.x = self.x - 20;
+ leftHalf.y = self.y;
+ rightHalf.x = self.x + 20;
+ rightHalf.y = self.y;
+ leftHalf.velocityX = self.velocityX - 3;
+ leftHalf.velocityY = self.velocityY - 2;
+ rightHalf.velocityX = self.velocityX + 3;
+ rightHalf.velocityY = self.velocityY - 2;
+ game.addChild(leftHalf);
+ game.addChild(rightHalf);
+ fruitHalves.push(leftHalf);
+ fruitHalves.push(rightHalf);
+ // Create particles
+ createParticles(self.x, self.y);
+ // Add score
+ LK.setScore(LK.getScore() + self.points);
+ scoreTxt.setText(LK.getScore());
+ // Hide original fruit
+ self.visible = false;
+ };
+ return self;
+});
+var FruitHalf = Container.expand(function (halfType, direction) {
+ var self = Container.call(this);
+ self.velocityX = 0;
+ self.velocityY = 0;
+ self.gravity = 0.8;
+ self.rotationSpeed = direction * 0.3;
+ var halfGraphic = self.attachAsset(halfType, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ halfGraphic.scaleX = 0.8;
+ self.update = function () {
+ self.x += self.velocityX;
+ self.y += self.velocityY;
+ self.velocityY += self.gravity;
+ halfGraphic.rotation += self.rotationSpeed;
+ };
+ return self;
+});
+var Particle = Container.expand(function () {
+ var self = Container.call(this);
+ self.velocityX = (Math.random() - 0.5) * 8;
+ self.velocityY = (Math.random() - 0.5) * 8;
+ self.life = 30;
+ var particleGraphic = self.attachAsset('particle', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ particleGraphic.tint = Math.random() * 0xffffff;
+ self.update = function () {
+ self.x += self.velocityX;
+ self.y += self.velocityY;
+ self.life--;
+ particleGraphic.alpha = self.life / 30;
+ if (self.life <= 0) {
+ self.visible = false;
+ }
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x87CEEB
+});
+
+/****
+* Game Code
+****/
+var fruits = [];
+var bombs = [];
+var fruitHalves = [];
+var particles = [];
+var spawnTimer = 0;
+var gameSpeed = 1;
+var lives = 3;
+var missedFruits = 0;
+// Create score display
+var scoreTxt = new Text2('0', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+// Create lives display
+var livesTxt = new Text2('Lives: 3', {
+ size: 50,
+ fill: 0xFFFFFF
+});
+livesTxt.anchor.set(1, 0);
+LK.gui.topRight.addChild(livesTxt);
+// Slice trail variables
+var isSlicing = false;
+var sliceTrail = [];
+function createParticles(x, y) {
+ for (var i = 0; i < 8; i++) {
+ var particle = new Particle();
+ particle.x = x;
+ particle.y = y;
+ game.addChild(particle);
+ particles.push(particle);
+ }
+}
+function spawnFruit() {
+ var shouldSpawnBomb = Math.random() < 0.1; // 10% chance for bomb
+ if (shouldSpawnBomb) {
+ var bomb = new Bomb();
+ bomb.x = Math.random() * 1800 + 124; // Random x position
+ bomb.y = 2732; // Start at bottom
+ bomb.velocityX = (Math.random() - 0.5) * 8;
+ bomb.velocityY = -(Math.random() * 8 + 12) * gameSpeed;
+ game.addChild(bomb);
+ bombs.push(bomb);
+ } else {
+ var fruitTypes = ['apple', 'orange', 'watermelon'];
+ var randomType = fruitTypes[Math.floor(Math.random() * fruitTypes.length)];
+ var fruit = new Fruit(randomType);
+ fruit.x = Math.random() * 1800 + 124; // Random x position
+ fruit.y = 2732; // Start at bottom
+ fruit.velocityX = (Math.random() - 0.5) * 8;
+ fruit.velocityY = -(Math.random() * 8 + 12) * gameSpeed;
+ game.addChild(fruit);
+ fruits.push(fruit);
+ }
+}
+function checkSliceCollisions(x, y) {
+ // Check fruits
+ for (var i = fruits.length - 1; i >= 0; i--) {
+ var fruit = fruits[i];
+ if (!fruit.isSliced && fruit.visible) {
+ var dx = fruit.x - x;
+ var dy = fruit.y - y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance < fruit.graphic.width / 2) {
+ fruit.slice();
+ }
+ }
+ }
+ // Check bombs
+ for (var i = bombs.length - 1; i >= 0; i--) {
+ var bomb = bombs[i];
+ if (bomb.visible) {
+ var dx = bomb.x - x;
+ var dy = bomb.y - y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance < 40) {
+ bomb.explode();
+ return;
+ }
+ }
+ }
+}
+game.down = function (x, y, obj) {
+ isSlicing = true;
+ sliceTrail = [];
+ checkSliceCollisions(x, y);
+};
+game.move = function (x, y, obj) {
+ if (isSlicing) {
+ sliceTrail.push({
+ x: x,
+ y: y
+ });
+ if (sliceTrail.length > 10) {
+ sliceTrail.shift();
+ }
+ checkSliceCollisions(x, y);
+ }
+};
+game.up = function (x, y, obj) {
+ isSlicing = false;
+ sliceTrail = [];
+};
+game.update = function () {
+ spawnTimer++;
+ // Increase game speed over time
+ if (LK.ticks % 600 === 0) {
+ // Every 10 seconds
+ gameSpeed += 0.1;
+ }
+ // Spawn fruits based on game speed
+ var spawnRate = Math.max(60 - Math.floor(gameSpeed * 10), 20);
+ if (spawnTimer >= spawnRate) {
+ spawnFruit();
+ spawnTimer = 0;
+ }
+ // Update and clean up fruits
+ for (var i = fruits.length - 1; i >= 0; i--) {
+ var fruit = fruits[i];
+ // Check if fruit fell off screen
+ if (fruit.y > 2800 && !fruit.isSliced) {
+ missedFruits++;
+ lives--;
+ livesTxt.setText('Lives: ' + lives);
+ if (lives <= 0) {
+ LK.showGameOver();
+ return;
+ }
+ }
+ // Remove fruits that are off screen
+ if (fruit.y > 2800 || fruit.isSliced && !fruit.visible) {
+ fruit.destroy();
+ fruits.splice(i, 1);
+ }
+ }
+ // Update and clean up bombs
+ for (var i = bombs.length - 1; i >= 0; i--) {
+ var bomb = bombs[i];
+ if (bomb.y > 2800) {
+ bomb.destroy();
+ bombs.splice(i, 1);
+ }
+ }
+ // Update and clean up fruit halves
+ for (var i = fruitHalves.length - 1; i >= 0; i--) {
+ var half = fruitHalves[i];
+ if (half.y > 2800) {
+ half.destroy();
+ fruitHalves.splice(i, 1);
+ }
+ }
+ // Update and clean up particles
+ for (var i = particles.length - 1; i >= 0; i--) {
+ var particle = particles[i];
+ if (!particle.visible || particle.life <= 0) {
+ particle.destroy();
+ particles.splice(i, 1);
+ }
+ }
+};
+// Play background music
+LK.playMusic('bgmusic');
\ No newline at end of file
Fruit ninja eski elmalar. In-Game asset. 2d. High contrast. No shadows
Fruit binadaki karpuz. In-Game asset. 2d. High contrast. No shadows
Kavun. In-Game asset. 2d. High contrast. No shadows
Portakal. In-Game asset. 2d. High contrast. No shadows
Muz,banana. In-Game asset. 2d. High contrast. No shadows
Bomba. In-Game asset. 2d. High contrast. No shadows
Çilek. In-Game asset. 2d. High contrast. No shadows
Ahşap duvr. In-Game asset. 2d. High contrast. No shadows
Ahşap zemin. In-Game asset. 2d. High contrast. No shadows
Bambu mat. In-Game asset. 2d. High contrast. No shadows