İçindekiler:
Video: ATtiny85 ve OLED Ekran SSD1306'da Flappy Bird: 6 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Selam millet, Bugün size oluşturduğum basit bir flappy bird klonunu ve benzer bir oyunu nasıl yapabileceğinizi göstereceğim. Esasen kodumu sizinle birlikte inceleyeceğim ve yolun her adımında nasıl çalıştığını açıklayacağım. Bu oyun, I2C OLED ekranlı, 1MHz'de saat hızına sahip bir ATtiny85'te çalışacak şekilde tasarlanmıştır. İleri!
Adım 1: Donanım
Oyun için gerçekten bir devre inşa etmekle ilgilenmiyorsanız, ancak arkasındaki teoriyi anlıyorsanız, bu adımı atlayabilirsiniz.
Oyunum iki düğme, bir ATtiny85, bir I2C OLED 128x64px ekran ve bir miktar güç kaynağı gerektiriyor. Eğitilebilir Kartvizitim/Oyun Konsolum: ATtiny85 ve OLED Ekranı, üzerinde ihtiyacınız olan her şeye sahip bir tahtayı nasıl oluşturacağınızı gösterir! Tahtamı yapmakla ilgilenmiyorsanız, devre tahtanızı çıkarın, size özellikleri anlatacağım. ATtiny85'in herhangi bir çeşidini kullanabilirsiniz. Bunun gibi OLED ekranları öneririm.
- ATtiny85'inizdeki 2 ve 3 numaralı pinlere iki basmalı düğmenin bir tarafını bağlayın. Bu kabloların üzerine ayrıca toprağa bağlı 10k ohm'luk bir direnç ekleyin (aşağı çekme direnci).
- Bu butonların diğer tarafını voltaja bağlayın. Düğmeye basılmadığında, pin durumu düşük olacaktır. Basıldığında, pin durumu yüksek olacaktır.
- 7 numaralı pini ekranınızdaki SCL pinine ve 5 numaralı pini ekranınızdaki SDA pinine bağlayın. Ekrandaki güç pimlerini (VCC ve GND) uygun şekilde bağlayın.
- Son olarak, ATtiny'deki 4 numaralı pini toprağa ve 8 numaralı pini voltaja bağlayın.
Adım 2: Yazılım
Ekli, oyunu çalıştırmak için ihtiyacınız olan tüm dosyaları içeren bir klasördür. Dosyalardan ikisi, FlappyBird.ino ve WallFunctions.h, okuma zevkiniz için çok iyi yorumlanmıştır. FlappyBird.ino çizimini ATtiny85'inize (1MHz'de) yükleyebilir ve oynayabilirsiniz! Bu oyunun arkasındaki teoriyi öğrenmek ilginizi çekiyorsa veya kendi oyununuzu yapmak istiyorsanız okumaya devam edin!
Oyunumda hala birkaç sorun var. I2C, hiçbir şekilde veri iletmenin en iyi yolu değildir. Bu gönderiye göre, ekran yalnızca yaklaşık 100KHz'de veri kabul edebilir, bu nedenle ATtiny saat hızını 8MHz'e çıkarsak bile I2C kanalı hala darboğaz olacaktır. Ekran maksimum yaklaşık 10 fps çıkış verebilir. Ekranın ne kadar ayrı resim çizmesi gerekiyorsa, tüm süreç o kadar yavaş olur. Bu nedenle, duvarları ekran boyunca çok hızlı hareket ettiremeyeceğiniz için oyunum oldukça kolay! Göreve hazır olduğunuzu düşünüyorsanız, aşağıda sizin için bazı zorluklar var:
- Oyunu zorlaştırmak için, duvarlar arasındaki mesafeyi 4 yerine 2'ye getirip getiremeyeceğinize bakın. Programımın nasıl çalıştığını anladıktan sonra bu çok zor olmamalı:). Çalıştırabilirseniz lütfen yorumlara yazın!
- Oyunumda eksik olan başka bir şey de bir skor sistemi ve skoru göstermenin ve kaydetmenin bir yolu. Bakalım bir tane uygulayabilecek misin!
- Son olarak, duvarların her seferinde bir sütunu hareket ettirmesini sağlamak yerine, daha yumuşak hareket için her bir duvarın her seferinde bir pikseli hareket ettirmesini deneyin.
Adım 3: Flappy Bird ATtiny85: Teori
Kullandığımız ekran oyun için 64 piksel yüksekliğe sahip olsa da, öğeleri yalnızca 8 piksellik bloklar halinde konumlandırmak mümkün. Bu nedenle, yalnızca 8 olası y koordinatı vardır. İşleri kolaylaştırmak için, yazılımda tüm ekranı bu şekilde böldüm, her bloğun 8x8 piksel olduğu 16 blok x 8 bloktan oluşan bir ızgara yaptım. Her bloğu doldurmak için oyundaki her hareketli karakter 8x8 pikseldir. Bu, her şeyi yönetmeyi ÇOK daha kolay hale getirir. Yukarıdaki resme bakarsanız, ekranı nasıl böldüğümü görebilirsiniz. Her bir duvar, 2 blok yüksekliğinde bir delik ile 6 bloktan oluşur ve her bir duvarın toplam yüksekliğini 8 blok yapar.
Programda her duvar, Duvar adı verilen bir yapı olarak temsil edilmektedir. Her Duvar yapısının iki özelliği vardır - delikKonumu ve sütun. 'holePosition' 0-6 sayısıdır, çünkü 2 blok yüksekliğinde bir delik için 8 bloktan oluşan bir duvarda yalnızca 7 olası konum vardır. 'sütun' 0-15 arasında bir sayıdır, çünkü ekranda 16 sütun blok olabilir.
Önerilen:
Muscle Powered Flappy Bird: 9 Adım (Resimlerle)
Muscle Powered Flappy Bird: Flappy Bird'ün dünyayı kasıp kavurduğu ve sonunda o kadar popüler hale geldiği zamanı hatırlarsınız, yaratıcısı istenmeyen reklamlardan kaçınmak için onu uygulama mağazalarından kaldırmıştır. Bu, daha önce hiç görmediğiniz gibi Flappy Bird; birkaç hazır kompozisyonu birleştirerek
Dokunmatik Ekran Macintosh - Ekran için IPad Mini'li Klasik Mac: 5 Adım (Resimlerle)
Dokunmatik Ekran Macintosh | Ekran için IPad Mini'li Klasik Mac: Bu, eski bir Macintosh'un ekranının bir iPad mini ile nasıl değiştirileceğine ilişkin güncellemem ve gözden geçirilmiş tasarımım. Bu, yıllar içinde yaptığım 6'ncı ve bunun evrimi ve tasarımından oldukça memnunum! 2013'te yaptığım zaman
Arduino Flappy Bird - Arduino 2.4" TFT Dokunmatik Ekran SPFD5408 Kuş Oyunu Projesi: 3 Adım
Arduino Flappy Bird | Arduino 2.4" TFT Dokunmatik Ekran SPFD5408 Kuş Oyun Projesi: Flappy Bird birkaç yıl içinde çok popüler bir oyundu ve birçok kişi onu kendi yöntemleriyle yarattı, ben de Arduino ile flappy bird'ün benim versiyonunu ve ucuz 2.4" TFT'yi yarattım. Dokunmatik ekran SPFD5408, Haydi başlayalım
Arduino Uno ve OLED 0.96 SSD1306 Ekran ile PONG Oyunu Oynayın: 6 Adım
Arduino Uno ve OLED 0.96 SSD1306 Ekran ile PONG Oyunu Oynayın: Merhaba arkadaşlar bugün Arduino ile PONG Oyunu yapacağız. Oyunu görüntülemek için adafruit'in 0.96 oled ekranını kullanacağız & oyunu kontrol etmek için düğmelere basın
Itsybitsy M4 Express Kullanan CircuitPython ile SSD1306 I2C OLED 128x64 Ekrandaki Grafikler: 13 Adım (Resimlerle)
Bir Itsybitsy M4 Express Kullanan CircuitPython ile SSD1306 I2C OLED 128x64 Ekranda Grafikler: SSD1306 OLED ekran, küçük (0,96"), ucuz, yaygın olarak bulunabilen, I2C, tek renkli grafik ekrandır ve 128x64 piksele sahiptir ve kolayca arayüzlenebilir (yalnızca 4 teller) Raspberry Pi, Arduino gibi mikroişlemci geliştirme kartlarına veya