User prompt
nesneler şişe dokunmadan, yakınından geçerken puan alabiliyorum. şiş nesneye tam temas etmeli
User prompt
şiş ekranın yarısından yukarı çıkamasın.
User prompt
Please fix the bug: 'ReferenceError: skewerFiring is not defined' in or related to this line: 'if (skewerFiring) {' Line Number: 126
User prompt
şiş istediğimiz gibi hareket ettirelim ve dik konumda olsun. şişe ile her nesneyi aldığımızda küçük bir efekt olsun şişin ucunda ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
şişe tıkladığım da ekranın diğer köşesine kadar gitsin gelsin. ve gidiş geliş hızı biraz daha yüksek olsun ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
şiş ekranın sol alt köşesinde çarpaz şekilde dursun. üzerine tıkladığımızda ileri doğru gidip nesneleri yakalasın. nesneler bir tık daha yavaş düşebilir.
User prompt
arka plan rengini değiştir. gökyüzü mavisi yada turkuaz gibi olabilir
User prompt
arka plan görselini farklı kullan
Code edit (1 edits merged)
Please save this source code
User prompt
Şişli Yakala
Initial prompt
bir adet şiş olacak. yukarıdan düşen sebzeleri ve köfteleri şiş ile yakalayacağız. arada bomba düşecek şiş ile onu yakalarsak oyun bitecek. sebze veya köfte yere düşerse oyun yine bitecek
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Düşen yiyecek ve bomba için temel sınıf
var FallingItem = Container.expand(function () {
var self = Container.call(this);
// .type, .speed, .assetId dışarıdan atanacak
self.update = function () {
self.y += self.speed;
};
return self;
});
// Şiş (Skewer) class
var Skewer = Container.expand(function () {
var self = Container.call(this);
var skewerAsset = self.attachAsset('skewer', {
anchorX: 0.5,
anchorY: 0.5
});
// No update needed, position is set by player
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0xf7e7c1 // Açık krem arka plan
});
/****
* Game Code
****/
// Bomba (bomb) - siyah
// Köfte (meatball) - kahverengi
// Sebze (vegetable) - yeşil
// Şiş (skewer)
// Oyun alanı boyutları
var GAME_WIDTH = 2048;
var GAME_HEIGHT = 2732;
// Skewer oluştur ve konumlandır
var skewer = new Skewer();
game.addChild(skewer);
skewer.y = GAME_HEIGHT - 180;
skewer.x = GAME_WIDTH / 2;
// Skewer'ın hareketi için sürükleme değişkenleri
var dragging = false;
// Skor metni
var scoreTxt = new Text2('0', {
size: 120,
fill: 0x7C4D03
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Skor
var score = 0;
// Düşen nesneler dizisi
var fallingItems = [];
// Oyun bitti mi kontrolü
var gameOver = false;
// Rastgele item türü seçimi
function getRandomItemType() {
// %40 sebze, %40 köfte, %20 bomba
var r = Math.random();
if (r < 0.4) return 'veggie';
if (r < 0.8) return 'meatball';
return 'bomb';
}
// Yeni düşen nesne oluştur
function spawnFallingItem() {
var itemType = getRandomItemType();
var item = new FallingItem();
item.type = itemType;
item.assetId = itemType;
item.speed = 12 + Math.random() * 6; // 12-18 px/sn
// Asset ekle
var asset = item.attachAsset(item.assetId, {
anchorX: 0.5,
anchorY: 0.5
});
// Rastgele x, kenarlara taşmasın
var margin = 100 + asset.width / 2;
item.x = margin + Math.random() * (GAME_WIDTH - 2 * margin);
item.y = -asset.height / 2;
fallingItems.push(item);
game.addChild(item);
}
// Oyun güncelleme fonksiyonu
game.update = function () {
if (gameOver) return;
// Düşen nesneleri güncelle
for (var i = fallingItems.length - 1; i >= 0; i--) {
var item = fallingItems[i];
item.update();
// Yere değdi mi?
if (item.y - item.height / 2 > GAME_HEIGHT) {
if (item.type === 'veggie' || item.type === 'meatball') {
// Yiyecek yere düştü, oyun biter
LK.effects.flashScreen(0xff0000, 800);
LK.showGameOver();
gameOver = true;
return;
} else {
// Bomba yere düştü, sadece sil
item.destroy();
fallingItems.splice(i, 1);
continue;
}
}
// Şiş ile çarpışma kontrolü
if (item.intersects(skewer)) {
if (item.type === 'bomb') {
// Bomba yakalandı, oyun biter
LK.effects.flashScreen(0xff0000, 800);
LK.showGameOver();
gameOver = true;
return;
} else {
// Yiyecek yakalandı, skor artır
score += 1;
LK.setScore(score);
scoreTxt.setText(score);
// Yakalanan itemi sil
item.destroy();
fallingItems.splice(i, 1);
continue;
}
}
}
// Belirli aralıklarla yeni nesne oluştur
if (LK.ticks % 36 === 0) {
// ~1 adet/sn
spawnFallingItem();
}
};
// Skewer'ı sürüklemek için dokunma/taşıma olayları
function clamp(val, min, max) {
return Math.max(min, Math.min(max, val));
}
game.down = function (x, y, obj) {
// Sadece skewer'ın yakınında başlat
var local = skewer.toLocal(game.toGlobal({
x: x,
y: y
}));
if (Math.abs(local.x) < skewer.width / 2 + 80 && Math.abs(local.y) < skewer.height / 2 + 80) {
dragging = true;
moveSkewer(x, y);
}
};
game.move = function (x, y, obj) {
if (dragging) {
moveSkewer(x, y);
}
};
game.up = function (x, y, obj) {
dragging = false;
};
function moveSkewer(x, y) {
// Sadece yatay hareket, kenarlara taşmasın
var halfWidth = skewer.width / 2;
skewer.x = clamp(x, halfWidth + 40, GAME_WIDTH - halfWidth - 40);
}
// Oyun başında skor sıfırla
score = 0;
LK.setScore(0);
scoreTxt.setText(score);
// Oyun bittiğinde cleanup (LK.showGameOver çağrıldığında otomatik resetlenir) ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,173 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+// Düşen yiyecek ve bomba için temel sınıf
+var FallingItem = Container.expand(function () {
+ var self = Container.call(this);
+ // .type, .speed, .assetId dışarıdan atanacak
+ self.update = function () {
+ self.y += self.speed;
+ };
+ return self;
+});
+// Şiş (Skewer) class
+var Skewer = Container.expand(function () {
+ var self = Container.call(this);
+ var skewerAsset = self.attachAsset('skewer', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // No update needed, position is set by player
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0xf7e7c1 // Açık krem arka plan
+});
+
+/****
+* Game Code
+****/
+// Bomba (bomb) - siyah
+// Köfte (meatball) - kahverengi
+// Sebze (vegetable) - yeşil
+// Şiş (skewer)
+// Oyun alanı boyutları
+var GAME_WIDTH = 2048;
+var GAME_HEIGHT = 2732;
+// Skewer oluştur ve konumlandır
+var skewer = new Skewer();
+game.addChild(skewer);
+skewer.y = GAME_HEIGHT - 180;
+skewer.x = GAME_WIDTH / 2;
+// Skewer'ın hareketi için sürükleme değişkenleri
+var dragging = false;
+// Skor metni
+var scoreTxt = new Text2('0', {
+ size: 120,
+ fill: 0x7C4D03
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+// Skor
+var score = 0;
+// Düşen nesneler dizisi
+var fallingItems = [];
+// Oyun bitti mi kontrolü
+var gameOver = false;
+// Rastgele item türü seçimi
+function getRandomItemType() {
+ // %40 sebze, %40 köfte, %20 bomba
+ var r = Math.random();
+ if (r < 0.4) return 'veggie';
+ if (r < 0.8) return 'meatball';
+ return 'bomb';
+}
+// Yeni düşen nesne oluştur
+function spawnFallingItem() {
+ var itemType = getRandomItemType();
+ var item = new FallingItem();
+ item.type = itemType;
+ item.assetId = itemType;
+ item.speed = 12 + Math.random() * 6; // 12-18 px/sn
+ // Asset ekle
+ var asset = item.attachAsset(item.assetId, {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Rastgele x, kenarlara taşmasın
+ var margin = 100 + asset.width / 2;
+ item.x = margin + Math.random() * (GAME_WIDTH - 2 * margin);
+ item.y = -asset.height / 2;
+ fallingItems.push(item);
+ game.addChild(item);
+}
+// Oyun güncelleme fonksiyonu
+game.update = function () {
+ if (gameOver) return;
+ // Düşen nesneleri güncelle
+ for (var i = fallingItems.length - 1; i >= 0; i--) {
+ var item = fallingItems[i];
+ item.update();
+ // Yere değdi mi?
+ if (item.y - item.height / 2 > GAME_HEIGHT) {
+ if (item.type === 'veggie' || item.type === 'meatball') {
+ // Yiyecek yere düştü, oyun biter
+ LK.effects.flashScreen(0xff0000, 800);
+ LK.showGameOver();
+ gameOver = true;
+ return;
+ } else {
+ // Bomba yere düştü, sadece sil
+ item.destroy();
+ fallingItems.splice(i, 1);
+ continue;
+ }
+ }
+ // Şiş ile çarpışma kontrolü
+ if (item.intersects(skewer)) {
+ if (item.type === 'bomb') {
+ // Bomba yakalandı, oyun biter
+ LK.effects.flashScreen(0xff0000, 800);
+ LK.showGameOver();
+ gameOver = true;
+ return;
+ } else {
+ // Yiyecek yakalandı, skor artır
+ score += 1;
+ LK.setScore(score);
+ scoreTxt.setText(score);
+ // Yakalanan itemi sil
+ item.destroy();
+ fallingItems.splice(i, 1);
+ continue;
+ }
+ }
+ }
+ // Belirli aralıklarla yeni nesne oluştur
+ if (LK.ticks % 36 === 0) {
+ // ~1 adet/sn
+ spawnFallingItem();
+ }
+};
+// Skewer'ı sürüklemek için dokunma/taşıma olayları
+function clamp(val, min, max) {
+ return Math.max(min, Math.min(max, val));
+}
+game.down = function (x, y, obj) {
+ // Sadece skewer'ın yakınında başlat
+ var local = skewer.toLocal(game.toGlobal({
+ x: x,
+ y: y
+ }));
+ if (Math.abs(local.x) < skewer.width / 2 + 80 && Math.abs(local.y) < skewer.height / 2 + 80) {
+ dragging = true;
+ moveSkewer(x, y);
+ }
+};
+game.move = function (x, y, obj) {
+ if (dragging) {
+ moveSkewer(x, y);
+ }
+};
+game.up = function (x, y, obj) {
+ dragging = false;
+};
+function moveSkewer(x, y) {
+ // Sadece yatay hareket, kenarlara taşmasın
+ var halfWidth = skewer.width / 2;
+ skewer.x = clamp(x, halfWidth + 40, GAME_WIDTH - halfWidth - 40);
+}
+// Oyun başında skor sıfırla
+score = 0;
+LK.setScore(0);
+scoreTxt.setText(score);
+// Oyun bittiğinde cleanup (LK.showGameOver çağrıldığında otomatik resetlenir)
\ No newline at end of file
bomba. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
köfte. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
dikey bir kebab şişi. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
domates. In-Game asset. 2d. High contrast. No shadows
biber. In-Game asset. 2d. High contrast. No shadows