User prompt
Skor increase 10x
User prompt
müzik notalarıni pianoyla vurunca puan skor artsın 10x artsın
User prompt
Skor yakaladıkça 10 ar artsın
User prompt
Her müzik parçacığını yakaladığımızda 10 puan aksın.
User prompt
Bir tane cam barekle oyun oynarken gözüksün, üç canımız olsun, üç candan müzik parçacıkları düşünce bir can azalsın.
User prompt
Piyanodan ışık çıksın ve müzik parçacıklarını yok etsin ve ışık uzansın ileri doğru.
User prompt
Piyanodan ışık çıksın ve müzik parçacıklarını yok etsin.
User prompt
Piyanodan ışık çıksın.
User prompt
Can Barı ekle.
User prompt
Sağ üst köşeye üç tane cam ekle.
User prompt
Müzik parçacıklarına dokununca tepki vermesin.
User prompt
Müzik parçacıkları gelmeye devam etsin.
User prompt
Işık öne uzansın.
User prompt
Piyanolara bastığında piyanoların ön hizasından bir ışık çıksın ve müzik parçacıklarını yok etsin.
User prompt
Piyanoların ön hizasından bir ışık çıksın ve o ışık müzik parçacıklarını yok etsin.
User prompt
Piyanonun aralarındaki küçük parçalar olmasın.
User prompt
Piyanonun tuşları alt tarafa bütün sığacak şekilde olsun.
User prompt
Aşağıda piyanonun sadece tuşları olsun.
User prompt
Aşağıya piyano koy ve o piyanoya müzik parçacıkları düşmeden biz onları yakalayalım.
User prompt
Bebeğe 32, 68'i kullan.
User prompt
Oyuna güzel bir müzik ekle.
User prompt
Skor yazısını biraz daha alta al.
User prompt
Skor tablosundaki sayının üstünde skor yazsın.
User prompt
Oyun ekrana dokununca başlasın.
User prompt
Oyunun başında oyuna yazı çıksın.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Müzik parçası (düşen kutu) sınıfı var MusicNote = Container.expand(function () { var self = Container.call(this); // Asseti ekle ve ortala var note = self.attachAsset('musicNote', { anchorX: 0.5, anchorY: 0.5 }); // Hız (tüm notalar için sabit) self.speed = 10; // Tıklanıp tıklanmadığını takip et self.collected = false; // Her frame çağrılır self.update = function () { self.y += self.speed; }; // Tıklama/dokunma olayı self.down = function (x, y, obj) { // Artık dokununca hiçbir şey olmasın }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x181818 }); /**** * Game Code ****/ // Sağ üst köşeye üç cam (can) ekle // Oyun alanında başka bir şey yok, sadece notalar ve skor var.; var lifeCount = 3; var lifeIcons = []; var lifeIconSize = 90; var lifeIconMargin = 30; for (var i = 0; i < 3; i++) { // Basit bir daire şeklinde cam simgesi (yeşil) var lifeIcon = LK.getAsset('centerCircle', { width: lifeIconSize, height: lifeIconSize, color: 0x00FF99, shape: 'ellipse', anchorX: 1, anchorY: 0, x: 2048 - i * (lifeIconSize + lifeIconMargin), y: 0 }); LK.gui.topRight.addChild(lifeIcon); lifeIcons.push(lifeIcon); } // Can barı ekle (üstte, görsel bar) var canBarWidth = 400; var canBarHeight = 32; var canBarBg = LK.getAsset('centerCircle', { width: canBarWidth, height: canBarHeight, color: 0x333333, shape: 'box', anchorX: 1, anchorY: 0, x: 2048 - 3 * (lifeIconSize + lifeIconMargin) - 40, y: 30 }); LK.gui.topRight.addChild(canBarBg); var canBarFill = LK.getAsset('centerCircle', { width: canBarWidth, height: canBarHeight, color: 0x00FF99, shape: 'box', anchorX: 1, anchorY: 0, x: 2048 - 3 * (lifeIconSize + lifeIconMargin) - 40, y: 30 }); LK.gui.topRight.addChild(canBarFill); // Can barını güncelleyen fonksiyon function updateCanBar() { var ratio = Math.max(0, Math.min(1, lifeCount / 3)); canBarFill.width = canBarWidth * ratio; } updateCanBar(); // Başlangıç mesajı var startMsg = new Text2('Meme Müzik\nBaşlamak için ekrana dokun!', { size: 120, fill: 0xFFD700, align: 'center' }); startMsg.anchor.set(0.5, 0.5); startMsg.x = 2048 / 2; startMsg.y = 2732 / 2; game.addChild(startMsg); // Oyun başlatılana kadar notalar gelmesin, skor sıfırlanmasın var gameStarted = false; // Not ve zamanlayıcıyı başlatan fonksiyon function startGame() { if (gameStarted) return; gameStarted = true; if (startMsg && startMsg.parent) startMsg.parent.removeChild(startMsg); LK.setScore(0); scoreTxt.setText('0'); // Güzel bir müzik başlat LK.playMusic('musicId', { fade: { start: 0, end: 1, duration: 1000 } }); scheduleNextNote(); } // Ekrana ilk dokunuşta oyunu başlat game.down = function (x, y, obj) { if (!gameStarted) { startGame(); return; } }; // Not spawn ve zamanlayıcıyı başlatmayı engelle // scheduleNextNote(); // Müzik parçası için renkli bir kutu şeklinde asset // Animasyonlar için tween eklentisi // Skor başlığı var scoreLabel = new Text2('Skor', { size: 70, fill: 0xFFD700, align: 'center' }); scoreLabel.anchor.set(0.5, 1); LK.gui.top.addChild(scoreLabel); scoreLabel.y = 80; var scoreTxt = new Text2('0', { size: 120, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); // Skor üstte ortada, menüyle çakışmasın diye biraz aşağıda LK.gui.top.addChild(scoreTxt); scoreTxt.y = 40 + scoreLabel.height; // Düşen notaların tutulduğu dizi var notes = []; // Sadece piyano tuşlarını ekle (beyaz ve siyah tuşlar) // Tuş sayısı ve boyutları var keyCount = 7; var keys = []; // Beyaz tuşlar için genişlik, tüm ekranı kaplayacak şekilde hesaplanır var keyMargin = 0; // Tuşlar bitişik olacak var keyWidth = Math.floor(2048 / keyCount); var keyHeight = 220; var keysY = 2732 - keyHeight / 2 - 20; // 20px alt boşluk var startX = keyWidth / 2; // Beyaz tuşlar for (var i = 0; i < keyCount; i++) { var key = game.addChild(LK.getAsset('piano', { width: keyWidth, height: keyHeight, color: 0xffffff, shape: 'box', anchorX: 0.5, anchorY: 0.5, x: startX + i * keyWidth, y: keysY })); // Her tuşa basıldığında önündeki beam'i göster ve notaları yok et (function (keyIndex) { key.down = function (x, y, obj) { // Işık huzmesini göster (animasyonlu) var beam = beams[keyIndex]; beam.alpha = 1; // Beam'i ileriye doğru uzat (ör: 800px'e kadar) var originalHeight = beam.height; var extendedHeight = 800; var originalY = beam.y; beam.height = extendedHeight; beam.y = originalY - (extendedHeight - originalHeight) / 2; // O anda uzayan beam ile kesişen notaları yok et for (var n = notes.length - 1; n >= 0; n--) { var note = notes[n]; if (!note.collected) { // Beam ile yatayda ve dikeyde çakışıyor mu? (uzamış beam için) if (note.x + note.width / 2 >= beam.x - keyWidth / 2 && note.x - note.width / 2 <= beam.x + keyWidth / 2 && note.y + note.height / 2 >= beam.y - beam.height / 2 && note.y - note.height / 2 <= beam.y + beam.height / 2) { note.collected = true; tween(note, { alpha: 0, scaleX: 1.5, scaleY: 1.5 }, { duration: 120, easing: tween.easeOut, onFinish: function (note, n) { return function () { note.destroy(); }; }(note, n) }); notes.splice(n, 1); } } } // Beam'i animasyonla eski haline döndür (yükseklik ve y) tween(beam, { alpha: 0, height: originalHeight, y: originalY, scaleY: 1 }, { duration: 250, easing: tween.easeOut }); }; })(i); keys.push(key); } // Her tuş için ayrı bir ışık hüzmesi (beam) oluşturulacak ve başta görünmez olacak var beamHeight = 40; var beamY = keysY - keyHeight / 2 - beamHeight / 2 + 10; // tuşların hemen önünde var beams = []; for (var i = 0; i < keyCount; i++) { var beam = game.addChild(LK.getAsset('piano', { width: keyWidth, height: beamHeight, color: 0xFFFF99, shape: 'box', anchorX: 0.5, anchorY: 0.5, x: startX + i * keyWidth, y: beamY })); beam.alpha = 0; // Başta görünmez beams.push(beam); } // Yeni nota oluşturma fonksiyonu function spawnNote() { var note = new MusicNote(); // Rastgele x (ekranın kenarına taşmasın) var margin = 180; note.x = margin + Math.random() * (2048 - 2 * margin); // Y: Menüyle çakışmasın diye -100 yerine -320'den başlat (yüksekliği kadar yukarıdan) note.y = -320; note.scaleX = 1; note.scaleY = 1; note.alpha = 1; note.collected = false; notes.push(note); game.addChild(note); } // Notaların rastgele aralıklarla gelmesi için zamanlayıcı var minInterval = 500; var maxInterval = 1200; var noteTimer = null; function scheduleNextNote() { var interval = minInterval + Math.random() * (maxInterval - minInterval); noteTimer = LK.setTimeout(function () { spawnNote(); scheduleNextNote(); }, interval); } // scheduleNextNote(); // Oyun güncelleme döngüsü game.update = function () { for (var i = notes.length - 1; i >= 0; i--) { var note = notes[i]; // Not güncelle note.update(); // Işık hüzmesine (beam) değdi mi? (Yalnızca henüz toplanmamışsa) if (!note.collected && note.y + note.height / 2 >= beam.y - beam.height / 2 && note.y - note.height / 2 <= beam.y + beam.height / 2) { // Notayı yok et (puan vermeden) note.collected = true; tween(note, { alpha: 0, scaleX: 1.5, scaleY: 1.5 }, { duration: 120, easing: tween.easeOut, onFinish: function onFinish() { note.destroy(); } }); notes.splice(i, 1); continue; } // Piyano tuşlarına değdi mi? (Yalnızca henüz toplanmamışsa) if (!note.collected && note.y + note.height / 2 >= keysY - keyHeight / 2) { // Beyaz tuşlardan birine denk geliyorsa yakalandı say for (var k = 0; k < keyCount; k++) { var key = keys[k]; if (note.x + note.width / 2 >= key.x - keyWidth / 2 && note.x - note.width / 2 <= key.x + keyWidth / 2) { // Notayı yakala note.collected = true; // Skoru artır (her zaman 10 ekle) var prevScore = LK.getScore(); var newScore = prevScore + 10; LK.setScore(newScore); // Skor animasyonlu aksın var animScore = prevScore; var scoreAnim = { value: prevScore }; tween(scoreAnim, { value: newScore }, { duration: 400, easing: tween.easeOut, onUpdate: function onUpdate() { animScore = Math.floor(scoreAnim.value); scoreTxt.setText(animScore); }, onFinish: function onFinish() { scoreTxt.setText(newScore); } }); // 300 puana ulaşıldıysa oyunu kazan if (LK.getScore() >= 300) { LK.showYouWin(); } // Kısa bir animasyonla kaybolsun tween(note, { alpha: 0, scaleX: 1.5, scaleY: 1.5 }, { duration: 200, easing: tween.easeOut, onFinish: function onFinish() { note.destroy(); } }); notes.splice(i, 1); break; } } continue; } // Ekranın dışına çıktıysa veya toplandıysa sil if (note.y - note.height / 2 > 2732 + 50) { // Nota kaçtıysa can azalt if (!note.collected) { lifeCount--; updateCanBar(); // Can ikonlarını güncelle (görsel olarak sil) if (lifeIcons[lifeCount]) { lifeIcons[lifeCount].alpha = 0.2; } // Can bitti mi? if (lifeCount <= 0) { LK.showGameOver(); return; } } note.destroy(); notes.splice(i, 1); } else if (note.collected) { note.destroy(); notes.splice(i, 1); } } }; // Oyun sıfırlanırken zamanlayıcıyı temizle game.destroy = function () { if (noteTimer) LK.clearTimeout(noteTimer); // Müziği durdur LK.stopMusic(); }; // Oyun başladığında ilk skor sıfırlansın // LK.setScore(0); // scoreTxt.setText('0'); // Oyun alanında başka bir şey yok, sadece notalar ve skor var.
===================================================================
--- original.js
+++ change.js
@@ -38,10 +38,10 @@
/****
* Game Code
****/
-// Oyun alanında başka bir şey yok, sadece notalar ve skor var.;
// Sağ üst köşeye üç cam (can) ekle
+// Oyun alanında başka bir şey yok, sadece notalar ve skor var.;
var lifeCount = 3;
var lifeIcons = [];
var lifeIconSize = 90;
var lifeIconMargin = 30;
@@ -298,9 +298,9 @@
var key = keys[k];
if (note.x + note.width / 2 >= key.x - keyWidth / 2 && note.x - note.width / 2 <= key.x + keyWidth / 2) {
// Notayı yakala
note.collected = true;
- // Skoru artır
+ // Skoru artır (her zaman 10 ekle)
var prevScore = LK.getScore();
var newScore = prevScore + 10;
LK.setScore(newScore);
// Skor animasyonlu aksın
Arkaplanı kaldır
arkaplan temizle
arkaplan temizle
meme silah uzatan kedi. In-Game asset. 2d. High contrast. No shadows
regular show modecaı. In-Game asset. 2d. High contrast. No shadows
kaka yüzü. In-Game asset. 2d. High contrast. No shadows
kalp. In-Game asset. 2d. High contrast. No shadows
meme chill guy face. In-Game asset. 2d. High contrast. No shadows
minecraft chiken jokey. In-Game asset. 2d. High contrast. No shadows
halay çeken insan. In-Game asset. 2d. High contrast. No shadows