User prompt
give me 1000 elmas ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
engellerin ortasını çok azcık aç ki geçebilelim
User prompt
oyunun en üstünde ortasında kaçıncı engelde olduğumuz yazsın
User prompt
mağaza ve envanteri açarken tap to start yazısı gözükmesin
User prompt
tap to start ekranında envanteri ve mağazayı açabilelim
User prompt
bide kuş engele tam çarpınca bitsin arada boşluk kalmasın. birde bana 100000 elmas ver
User prompt
engelin ortasında geçmek çok zor birazcık daha boşluk ekle. arkaya arkaplan müziğide ekle ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
zıplama ses efekti ve elmas toplama ses efekti ekle
User prompt
market simgesini sol alta koy tam sol alta
User prompt
sol alttaki mağazayı görünecek şekilde ekrana koy ama yinede sol altta olsun
User prompt
kuşu biraz büyüt. engeller biraz zor olsun. elmasları büyüt. elmas sayacı sağ altta olsun
User prompt
tap to start ekranında oyun donsun dokununca oyun devam etsin
User prompt
oyuna tap to start ekle
Code edit (1 edits merged)
Please save this source code
User prompt
Diamond Bird Shop Adventure
Initial prompt
Unity C# ile 2D side scroller (Flappy Bird benzeri) bir kuş oyunu yapmak istiyorum. Oyunun genel özellikleri şu şekilde: 1) Ana karakter: - Bir kuş (sprite renderer olacak). - Kuş ekrana tıklayınca / space tuşuna basınca zıplayacak (physics ile Rigidbody2D kullan). - Yerçekimi sürekli etki etsin, kuş aşağı doğru düşsün. 2) Engeller: - Belirli aralıklarla rastgele yüksekliğe sahip borular (veya başka engeller) spawn olsun. - Kuş bu engellerin arasından geçmeye çalışsın. - Eğer kuş engellere çarparsa oyun bitsin. (restart butonu) 3) Elmas: - Engellerin rastgele yerlerinde elmaslar spawn olsun. - Kuş elmasla çarpışınca elmas kaybolsun ve oyuncunun elmas sayısı artsın. - Toplanan elmas sayısı ekranda gözüksün. 4) Mağaza sistemi: - Oyuncunun topladığı elmasları kullanabileceği bir shop var (UI canvas sistemi). - Oyunun sol alt köşesinde bir mağaza ikonu olacak, tıklanınca mağaza UI açılacak. - Mağazada 3 kategori olacak: 1. Kuş itemleri (ör: elmas kılıç kuş, fiyatı 100 elmas, kuş sprite'ı değişecek) 2. Tema (ör: gece modu, fiyatı 500 elmas, arka plan sprite değişecek) 3. Elmas satın al (ör: 1000 elmas - $1.99, placeholder buton, gerçek IAP sonradan entegre edilecek) - Satın alınca elmas sayısından düşsün ve kuş / arkaplan güncellensin. - Oyuncunun sahip olduğu elmas miktarı mağaza UI'nın üst kısmında gözüksün. - Mağaza açıldığında oyun dursun (Time.timeScale = 0), kapanınca devam etsin. 5) Oyun sonu ekranı: - Kuş bir engele çarpınca oyun duracak ve bir restart butonu çıkacak. - Restart'a basınca oyun sıfırlanacak, elmas sayısı aynı kalacak. İstiyorum ki: - Bana tüm bu özellikleri kapsayan bir sistem kur. - Her şey için örnek C# scriptler (PlayerController, ObstacleSpawner, Diamond, ShopManager vs.). - UI prefab yapısı nasıl olur onu anlat. - Kodları esnek yaz (yeni item / tema eklemek kolay olsun). Ayrıca ek: - Elmas toplama + UI güncelleme, - Kuşun görünümünü sprite değiştirme, - Arka planı değiştirme, - Mağaza aç/kapat kontrolü, - Tüm değişkenleri Inspector’dan ayarlanabilir hale getir. Bana bu oyunu adım adım, scriptleri ve prefab mantığıyla birlikte anlat, tam proje mantığında istiyorum. Oyunda sol alt köşede bir mağaza (shop) butonu var. Bu mağazaya tıklayınca ekranın ortasında bir mağaza UI'si açılacak. Mağazada 3 ana kategori olacak: 1) Kuş İtemleri (Kuşun görünüşünü değiştirir) 2) Temalar (Oyun arka planını değiştirir) 3) Elmas satın al (gerçek parayla elmas al) Detaylar: - Kuş İtemleri bölümünde örnek olarak: - "Elmas Kılıç Kuş": Kuş elmas kılıç taşır, fiyatı 100 elmas. - Her item bir ikon ile gösterilecek, altına fiyat yazılacak. - Satın al butonuna basılınca oyuncunun elmasından düşecek ve kuş bu görünümü alacak. - Tema bölümünde: - Örneğin "Gece Teması" (500 elmas), "Mars Teması" (800 elmas). - Satın alındığında oyun arka planı değişecek. - Aynı şekilde ikon ve fiyat gösterimi olacak. - Elmas satın al bölümünde: - Örneğin "1000 Elmas - $1.99", "5000 Elmas - $7.99". - Satın alınca oyuncunun elmas sayısı artacak. - Burada placeholder buton olabilir (IAP sistemi sonradan entegre edilecek). Genel özellikler: - Oyuncunun sahip olduğu elmas miktarı mağaza ekranının üst kısmında gözükecek ve satın alınca güncellenecek. - Mağaza açıldığında oyun duracak (Time.timeScale = 0). - Mağaza kapanınca oyun devam edecek (Time.timeScale = 1). İstiyorum ki: - Bana her kategori için örnek prefab mantığında bir sistem kur. - UI'da ikon + fiyat + satın al butonu olacak şekilde. - Kodları esnek yaz (yeni item eklemek kolay olsun). - Satın alma kontrolü, elmas düşürme, kuş görünümünü / arka planı değiştirme kodlarını C# ile yaz. Bana tüm bu sistemi örnek script ve prefab mantığıyla anlat, kodlarla - Kuş, rastgele ortaya çıkan engellerden kaçınmak için yukarı/aşağı uçar. - Bazen mağaza satın alımları için toplanacak mücevherler olur. Şunları eklemek istiyorum: 1. Ekranın alt kısmında bir zemin (kat), örneğin yeşil çimen sprite'ı. 2. Kuş yere değerse ölür (oyun bitti). 3. Kuş üst sınırın üzerine çıkarsa veya bir engele çarparsa o da ölür. Çarpışmaların çalışması için zemine bir çarpıştırıcı eklediğinizden emin olun. Ayrıca zeminin ekran genişliği boyunca uzanmasını sağlayın. Zeminle çarpışmayı algılamak için kod sağlayın. - Engelleri yalnızca haritanın üst ve alt kenarlarına yerleştirin ve kuşun uçabileceği ortada her zaman açık bir boşluk olduğundan emin olun. - Sağ üst köşede, oyuncunun kaç elmas topladığını gösteren bir sayaçla birlikte bir elmas simgesi görüntüleyin. Oyun temel olarak: - Kuş ekrandaki engellerden kaçmaya çalışıyor. - Rastgele yerlerde elmas toplayabiliyor. Şimdi bu oyuna şu özellikleri eklemeni istiyorum: 1️⃣ MAĞAZA (SHOP) - Sol alt köşede bir mağaza ikonu var. Ona tıklayınca bir mağaza arayüzü açılıyor. - Mağazada 3 farklı kuş var: • Klasik Kuş (varsayılan) • Elmas Kılıç Kuş (100 elmas) • Altın Kuş (200 elmas) - Kullanıcı yeterli elması varsa satın alabiliyor. Satın aldıktan sonra otomatik envantere gidiyor. 2️⃣ ENVANTER (INVENTORY) - Sağ üst köşede envanter ikonu olsun. Oraya tıklayınca envanter açılıyor. - Envanterde satın alınan kuşlar listeleniyor. - Kullanıcı bu ekranda istediği kuşu seçebiliyor. Seçilen kuş oyun ekranında aktif oluyor. - Seçili kuş kaydediliyor, oyun yeniden başlayınca da o kuşla devam ediyor. 3️⃣ ELMA SAYACI - Sağ üst köşede elmas sayacı gözüksün. Kuş oyunda elmas toplayınca burası güncellensin. 4️⃣ TEMİZ VE MODÜLER YAP - Mağaza, envanter ve oyun ekranı birbirinden ayrı (layer / scene) olsun. - Böylece UI birbirine karışmasın. Mağaza açıldığında oyun arkada dursun ama düğmelere basılamasın. - Aynı şekilde envanter açıldığında da öyle olsun. 5️⃣ OYUN MOTORUNA UYUMLU - Bu yapıyı Unity veya Construct 3 veya Godot (sen hangisini iyi yapıyorsan) formatında yap. - Kod modülleri iyi ayrılmış olsun (ör: ShopManager, InventoryManager, GameManager gibi). Lütfen bunu yap ve bana dök. Kod yapısı veya JSON / Scene formatıyla detaylı dökümünü çıkar. 🎒 ENVANTER: - Sağ üst köşede bir envanter butonu var. Oyuncu buna basınca envanter ekranı açılıyor. - Envanterde satın alınmış kuşlar listeleniyor. - Oyuncu buradan istediği kuşu seçebiliyor. Seçilen kuş oyuna yansıyor (yani kuşun modeli değişiyor). - Oyuncu oyunu kapatıp açsa bile seçili kuş kayıtlı kalıyor. 🚀 ÖZEL DAVRANIŞ: - Oyuncu mağazada bir kuşun satın alma butonuna bastığında: 1. Sistem kontrol edecek: Oyuncunun elması yeterli mi? 2. Yeterliyse elmas miktarından düş. 3. Kuşu oyuncunun envanterine ekle. 4. Bu kuş mağazada artık “Satın alındı” şeklinde disable gözüksün. - Oyuncu envantere gidip bu kuşu seçince: - Artık oyun ekranındaki kuş o seçili kuşun görünümüyle değişsin. --- 💡 BONUS: - Kodda bu yapıyı ShopManager, InventoryManager, GameManager gibi ayrı modüllerde düzenli şekilde kur. (örn. Unity için C# script, Godot için GDScript, Construct için Event + JSON fark etmez, senin ortamına uygun olsun). Lütfen bu sistemi detaylı olarak kur, tüm satın alma kontrolünü, envantere eklemeyi ve seçimi kodla. Ayrıca local kayıt (ör: PlayerPrefs / localStorage) ile seçilen kuş kaydedilsin. Bana tamamlanmış kodları / event bloklarını dök.
/****
* Plugins
****/
var storage = LK.import("@upit/storage.v1", {
diamonds: 100000,
ownedBirds: ["classic"],
selectedBird: "classic"
});
/****
* Classes
****/
var Bird = Container.expand(function () {
var self = Container.call(this);
self.velocity = 0;
self.gravity = 0.8;
self.flapPower = -15;
self.updateBirdSkin = function () {
if (self.birdGraphics) {
self.removeChild(self.birdGraphics);
}
var skinAsset = 'bird';
if (storage.selectedBird === 'diamondSword') {
skinAsset = 'diamondSwordBird';
} else if (storage.selectedBird === 'golden') {
skinAsset = 'goldenBird';
}
self.birdGraphics = self.attachAsset(skinAsset, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.5,
scaleY: 1.5
});
};
self.updateBirdSkin();
self.flap = function () {
self.velocity = self.flapPower;
LK.getSound('flap').play();
};
self.update = function () {
if (gameState !== 'playing') {
return;
}
self.velocity += self.gravity;
self.y += self.velocity;
// Rotate bird based on velocity
self.birdGraphics.rotation = Math.min(Math.max(self.velocity * 0.05, -0.5), 0.5);
// Ground collision
if (self.y > 2732 - 100 - 30) {
LK.showGameOver();
}
// Screen boundary collision
if (self.y < 0) {
LK.showGameOver();
}
};
return self;
});
var Diamond = Container.expand(function () {
var self = Container.call(this);
self.speed = -4;
self.collected = false;
var diamondGraphics = self.attachAsset('diamond', {
anchorX: 0.5,
anchorY: 0.5,
rotation: Math.PI / 4,
scaleX: 2,
scaleY: 2
});
self.update = function () {
self.x += self.speed;
diamondGraphics.rotation += 0.1;
};
return self;
});
var InventoryPanel = Container.expand(function () {
var self = Container.call(this);
var panel = self.attachAsset('inventoryPanel', {
anchorX: 0.5,
anchorY: 0.5
});
var titleText = new Text2('INVENTORY', {
size: 80,
fill: '#FFFFFF'
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 0;
titleText.y = -800;
self.addChild(titleText);
var y = -400;
var birdTypes = [{
id: 'classic',
name: 'Classic Bird',
asset: 'bird'
}, {
id: 'diamondSword',
name: 'Diamond Sword Bird',
asset: 'diamondSwordBird'
}, {
id: 'golden',
name: 'Golden Bird',
asset: 'goldenBird'
}];
for (var i = 0; i < birdTypes.length; i++) {
var birdType = birdTypes[i];
if (storage.ownedBirds.indexOf(birdType.id) >= 0) {
var birdPreview = self.addChild(LK.getAsset(birdType.asset, {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2,
x: 0,
y: y
}));
var birdNameText = new Text2(birdType.name, {
size: 40,
fill: '#FFFFFF'
});
birdNameText.anchor.set(0.5, 0.5);
birdNameText.x = 0;
birdNameText.y = y + 80;
self.addChild(birdNameText);
var selectButton = self.addChild(LK.getAsset('selectButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: y + 150
}));
var selectText = new Text2(storage.selectedBird === birdType.id ? 'SELECTED' : 'SELECT', {
size: 30,
fill: '#FFFFFF'
});
selectText.anchor.set(0.5, 0.5);
selectButton.addChild(selectText);
(function (birdId, button, text) {
button.down = function () {
storage.selectedBird = birdId;
text.setText('SELECTED');
// Update other buttons
for (var j = 0; j < self.children.length; j++) {
var child = self.children[j];
if (child.children && child.children[0] && child.children[0].text && child.children[0].text.indexOf('SELECT') >= 0) {
if (child !== button) {
child.children[0].setText('SELECT');
}
}
}
};
})(birdType.id, selectButton, selectText);
y += 300;
}
}
var closeButton = self.addChild(LK.getAsset('closeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 800
}));
var closeText = new Text2('CLOSE', {
size: 30,
fill: '#FFFFFF'
});
closeText.anchor.set(0.5, 0.5);
closeButton.addChild(closeText);
closeButton.down = function () {
if (bird) {
bird.updateBirdSkin();
}
self.destroy();
gameState = 'waiting';
// Show tap to start UI when returning to waiting state
tapToStartText.visible = true;
instructionText.visible = true;
};
return self;
});
var Obstacle = Container.expand(function () {
var self = Container.call(this);
self.speed = -4;
var obstacleGraphics = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5
});
self.update = function () {
self.x += self.speed;
};
return self;
});
var ShopPanel = Container.expand(function () {
var self = Container.call(this);
var panel = self.attachAsset('shopPanel', {
anchorX: 0.5,
anchorY: 0.5
});
var titleText = new Text2('BIRD SHOP', {
size: 80,
fill: '#FFFFFF'
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 0;
titleText.y = -800;
self.addChild(titleText);
var diamondText = new Text2('Diamonds: ' + storage.diamonds, {
size: 50,
fill: '#00FFFF'
});
diamondText.anchor.set(0.5, 0.5);
diamondText.x = 0;
diamondText.y = -700;
self.addChild(diamondText);
// Diamond Sword Bird
var diamondSwordBirdPreview = self.addChild(LK.getAsset('diamondSwordBird', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2,
x: 0,
y: -300
}));
var diamondSwordText = new Text2('Diamond Sword Bird\n100 Diamonds', {
size: 40,
fill: '#FFFFFF'
});
diamondSwordText.anchor.set(0.5, 0.5);
diamondSwordText.x = 0;
diamondSwordText.y = -200;
self.addChild(diamondSwordText);
var diamondSwordButton = self.addChild(LK.getAsset('buyButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: -100
}));
var diamondSwordButtonText = new Text2(storage.ownedBirds.indexOf('diamondSword') >= 0 ? 'OWNED' : 'BUY', {
size: 30,
fill: '#FFFFFF'
});
diamondSwordButtonText.anchor.set(0.5, 0.5);
diamondSwordButton.addChild(diamondSwordButtonText);
diamondSwordButton.down = function () {
if (storage.ownedBirds.indexOf('diamondSword') < 0 && storage.diamonds >= 100) {
storage.diamonds -= 100;
storage.ownedBirds.push('diamondSword');
diamondSwordButtonText.setText('OWNED');
diamondText.setText('Diamonds: ' + storage.diamonds);
}
};
// Golden Bird
var goldenBirdPreview = self.addChild(LK.getAsset('goldenBird', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2,
x: 0,
y: 200
}));
var goldenText = new Text2('Golden Bird\n200 Diamonds', {
size: 40,
fill: '#FFFFFF'
});
goldenText.anchor.set(0.5, 0.5);
goldenText.x = 0;
goldenText.y = 300;
self.addChild(goldenText);
var goldenButton = self.addChild(LK.getAsset('buyButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 400
}));
var goldenButtonText = new Text2(storage.ownedBirds.indexOf('golden') >= 0 ? 'OWNED' : 'BUY', {
size: 30,
fill: '#FFFFFF'
});
goldenButtonText.anchor.set(0.5, 0.5);
goldenButton.addChild(goldenButtonText);
goldenButton.down = function () {
if (storage.ownedBirds.indexOf('golden') < 0 && storage.diamonds >= 200) {
storage.diamonds -= 200;
storage.ownedBirds.push('golden');
goldenButtonText.setText('OWNED');
diamondText.setText('Diamonds: ' + storage.diamonds);
}
};
var closeButton = self.addChild(LK.getAsset('closeButton', {
anchorX: 0.5,
anchorY: 0.5,
x: 0,
y: 800
}));
var closeText = new Text2('CLOSE', {
size: 30,
fill: '#FFFFFF'
});
closeText.anchor.set(0.5, 0.5);
closeButton.addChild(closeText);
closeButton.down = function () {
self.destroy();
gameState = 'waiting';
// Show tap to start UI when returning to waiting state
tapToStartText.visible = true;
instructionText.visible = true;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB
});
/****
* Game Code
****/
var bird;
var obstacles = [];
var diamonds = [];
var ground;
var gameState = 'waiting'; // Start with waiting state
var obstacleTimer = 0;
var diamondTimer = 0;
var obstacleCount = 0;
// UI Elements
// Give player 1000 diamonds
storage.diamonds += 1000;
var diamondCountText = new Text2('Diamonds: ' + storage.diamonds, {
size: 40,
fill: '#00FFFF'
});
diamondCountText.anchor.set(1, 1);
LK.gui.bottomRight.addChild(diamondCountText);
var obstacleCountText = new Text2('Obstacle: 0', {
size: 50,
fill: '#FFFFFF'
});
obstacleCountText.anchor.set(0.5, 0);
obstacleCountText.y = 100; // Position below the top to avoid platform menu
LK.gui.top.addChild(obstacleCountText);
var shopButton = LK.getAsset('shopButton', {
anchorX: 0,
anchorY: 1,
x: 0,
y: 0
});
var shopButtonText = new Text2('SHOP', {
size: 25,
fill: '#FFFFFF'
});
shopButtonText.anchor.set(0.5, 0.5);
shopButton.addChild(shopButtonText);
LK.gui.bottomLeft.addChild(shopButton);
var inventoryButton = LK.getAsset('inventoryButton', {
anchorX: 1,
anchorY: 0
});
var inventoryButtonText = new Text2('INVENTORY', {
size: 20,
fill: '#FFFFFF'
});
inventoryButtonText.anchor.set(0.5, 0.5);
inventoryButton.addChild(inventoryButtonText);
LK.gui.topRight.addChild(inventoryButton);
// Position inventory button below diamond counter
inventoryButton.y = 60;
// Tap to start UI
var tapToStartText = new Text2('TAP TO START', {
size: 80,
fill: '#FFFFFF'
});
tapToStartText.anchor.set(0.5, 0.5);
LK.gui.center.addChild(tapToStartText);
var instructionText = new Text2('Tap screen to flap\nAvoid obstacles\nCollect diamonds', {
size: 40,
fill: '#FFFFFF'
});
instructionText.anchor.set(0.5, 0.5);
instructionText.y = 100;
LK.gui.center.addChild(instructionText);
shopButton.down = function () {
if (gameState === 'playing' || gameState === 'waiting') {
gameState = 'shop';
// Hide tap to start UI when opening shop
tapToStartText.visible = false;
instructionText.visible = false;
var shopPanel = new ShopPanel();
shopPanel.x = 1024;
shopPanel.y = 1366;
game.addChild(shopPanel);
}
};
inventoryButton.down = function () {
if (gameState === 'playing' || gameState === 'waiting') {
gameState = 'inventory';
// Hide tap to start UI when opening inventory
tapToStartText.visible = false;
instructionText.visible = false;
var inventoryPanel = new InventoryPanel();
inventoryPanel.x = 1024;
inventoryPanel.y = 1366;
game.addChild(inventoryPanel);
}
};
// Initialize bird
bird = new Bird();
bird.x = 300;
bird.y = 1366;
game.addChild(bird);
// Initialize ground
ground = LK.getAsset('ground', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 2732 - 100
});
game.addChild(ground);
game.down = function (x, y, obj) {
if (gameState === 'waiting') {
// Start the game
gameState = 'playing';
// Reset obstacle counter
obstacleCount = 0;
obstacleCountText.setText('Obstacle: 0');
// Hide tap to start UI
tapToStartText.visible = false;
instructionText.visible = false;
// Start background music
LK.playMusic('bgmusic');
} else if (gameState === 'playing') {
bird.flap();
}
};
game.update = function () {
if (gameState === 'waiting') {
// Animate tap to start text
tapToStartText.y = Math.sin(LK.ticks * 0.1) * 20;
// Don't update game mechanics while waiting
return;
}
if (gameState !== 'playing') {
return;
}
// Spawn obstacles
obstacleTimer++;
if (obstacleTimer >= 90) {
// Every 1.5 seconds at 60fps - faster spawn rate
obstacleTimer = 0;
// Create gap in middle
var gapSize = 320; // Further increased gap size for easier gameplay
var gapCenter = Math.random() * (2732 - 200 - gapSize) + 100 + gapSize / 2;
// Top obstacle
var topObstacle = new Obstacle();
topObstacle.x = 2048 + 40;
topObstacle.y = gapCenter - gapSize / 2 - 200;
obstacles.push(topObstacle);
game.addChild(topObstacle);
// Bottom obstacle
var bottomObstacle = new Obstacle();
bottomObstacle.x = 2048 + 40;
bottomObstacle.y = gapCenter + gapSize / 2 + 200;
obstacles.push(bottomObstacle);
game.addChild(bottomObstacle);
}
// Spawn diamonds
diamondTimer++;
if (diamondTimer >= 90) {
// Every 1.5 seconds
diamondTimer = 0;
var diamond = new Diamond();
diamond.x = 2048 + 15;
diamond.y = Math.random() * (2732 - 300) + 150;
diamonds.push(diamond);
game.addChild(diamond);
}
// Update and check obstacles
for (var i = obstacles.length - 1; i >= 0; i--) {
var obstacle = obstacles[i];
// Check if bird passed this obstacle (from right to left)
if (obstacle.lastX === undefined) obstacle.lastX = obstacle.x;
if (obstacle.lastX > bird.x && obstacle.x <= bird.x && !obstacle.passed) {
obstacle.passed = true;
// Only count every second obstacle (since we create pairs)
if (i % 2 === 0) {
obstacleCount++;
obstacleCountText.setText('Obstacle: ' + obstacleCount);
}
}
obstacle.lastX = obstacle.x;
if (obstacle.x < -100) {
obstacle.destroy();
obstacles.splice(i, 1);
continue;
}
// Collision with bird - check with scaled bird size
var birdBounds = {
left: bird.x - 60 * 1.5 / 2,
right: bird.x + 60 * 1.5 / 2,
top: bird.y - 60 * 1.5 / 2,
bottom: bird.y + 60 * 1.5 / 2
};
var obstacleBounds = {
left: obstacle.x - 40,
right: obstacle.x + 40,
top: obstacle.y - 200,
bottom: obstacle.y + 200
};
if (birdBounds.right > obstacleBounds.left && birdBounds.left < obstacleBounds.right && birdBounds.bottom > obstacleBounds.top && birdBounds.top < obstacleBounds.bottom) {
LK.showGameOver();
return;
}
}
// Update and check diamonds
for (var j = diamonds.length - 1; j >= 0; j--) {
var diamond = diamonds[j];
if (diamond.x < -50) {
diamond.destroy();
diamonds.splice(j, 1);
continue;
}
// Collection by bird
if (!diamond.collected && bird.intersects(diamond)) {
diamond.collected = true;
storage.diamonds++;
diamondCountText.setText('Diamonds: ' + storage.diamonds);
LK.getSound('collect').play();
diamond.destroy();
diamonds.splice(j, 1);
}
}
}; ===================================================================
--- original.js
+++ change.js
@@ -322,8 +322,10 @@
var obstacleTimer = 0;
var diamondTimer = 0;
var obstacleCount = 0;
// UI Elements
+// Give player 1000 diamonds
+storage.diamonds += 1000;
var diamondCountText = new Text2('Diamonds: ' + storage.diamonds, {
size: 40,
fill: '#00FFFF'
});
oyunlardaki kuş. In-Game asset. 2d. High contrast. No shadows
oyunlardaki satın alma butonu. In-Game asset. 2d. High contrast. No shadows
oyunlardaki çarpı butonu. In-Game asset. 2d. High contrast. No shadows
oyunlardaki mavi elmas. In-Game asset. 2d. High contrast. No shadows
oyunlardaki elmas kılıç taşıyan elmas kuş. In-Game asset. 2d. High contrast. No shadows
oyunlardaki altın kuş. In-Game asset. 2d. High contrast. No shadows
oyunlardaki envanter butonu. In-Game asset. 2d. High contrast. No shadows
oyunlardaki market ikonu. In-Game asset. 2d. High contrast. No shadows
oyunlarda hediye veren aryüzün simgesi. In-Game asset. 2d. High contrast. No shadows
oyunlardaki bulut. In-Game asset. 2d. High contrast. No shadows
Öyle bir şey istiyorumki oyunlardaki gibi böyle oraya tıklarsın temalar açılır ya temaları andıran birşey. In-Game asset. 2d. High contrast. No shadows
oyunlardaki güneş. In-Game asset. 2d. High contrast. No shadows
oyunlardaki beyaz ay. In-Game asset. 2d. High contrast. No shadows
oyunlardaki gece oldugu zaman yıldız. In-Game asset. 2d. High contrast. No shadows
oyunlardaki Use yazısı. In-Game asset. 2d. High contrast. No shadows
mars gezegeni. In-Game asset. 2d. High contrast. No shadows
oyunlardaki ateş kuş. In-Game asset. 2d. High contrast. No shadows