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