Kod yazmayı öğrenmek uzun bir yolculuk olabilir. Yalnızca öğrenmenize yardımcı olacak kaynaklar bulmakla kalmaz, aynı zamanda eğitiminizi yolunda tutan heyecan verici proje fikirleri bulmanız gerekir.
Video oyunları, zevk alabileceğiniz bir şeyi programlamak için harika bir fırsat sağlar. Ayrıca size iyi bir programcı olmak için ihtiyacınız olan temel bilgileri de öğretebilirler. Bu makale, başlamanıza yardımcı olacak bir DIY el Arduino video oyunu projesini araştırıyor.
Ne Yapıyoruz ve Neden?
Bu makalenin kılavuz kısmına dalmadan önce, ne yaptığımızı ve bu proje için neden onu seçtiğimizi araştırmak mantıklıdır. Arduinos gibi cihazlar için oyunlar yaparken çeşitli zorluklar ortaya çıkar.
- Depolama Alanı: Çoğu Arduino panoları çok az RAM veya flash bellek ile gelir. Bu, yalnızca çalıştırabilecekleri kod miktarına bir sınır getirmekle kalmaz, aynı zamanda değişkenlerle çalışma söz konusu olduğunda zorluklar da sunar.
- İşlem Gücü: Kullandığımız Arduino'nun düşük güçlü bir CPU'su var, bu nedenle bunun için kaynağa aç uygulamalar oluşturmak imkansız.
- Sınırlı Bileşenler: Arduino'larda çok sayıda pim bulunur, ancak birçok bileşenin birden fazlasına ihtiyacı vardır. Bu, kontroller ve ekran çıktıları söz konusu olduğunda bizi sınırlar.
Bu zorlukları göz önünde bulundurarak, reaksiyona dayalı çok basit bir oyun çalıştıran el tipi bir cihaz oluşturmaya karar verdik. Çalıştığımız donanım için kolayca başka oyunlar yapabilirsiniz ve sizi yaratıcı olmaya teşvik ediyoruz.
Oyunun kendisi çok basit. Ekranda, ikisi ana hatlarıyla çizilmiş ve biri doldurulmuş, her biri aşağıda karşılık gelen bir fiziksel düğme bulunan üç blok görünür. Oyuncu, oyuna devam etmek için her turda doğru düğmeye basmalıdır ve yanlış düğmeye basarsa veya zaman biterse oyun biter. Her başarılı düğmeye basmak puan kazandırır. Oyun, mevcut reaksiyon süresini azaltarak zorluğunu yavaşça yükseltir.
OLED Ekranı, Arduino'yu ve Düğmeleri Kablolama
Elde taşınır oyununuzu kablolamak bu süreçteki ilk adımdır. Yukarıdaki devre şemasında da görebileceğiniz gibi, başlamak için çok fazla bağlantı yapmanıza gerek yok ve bu proje için bir breadboard bile kullanabilirsiniz.
yapmanıza yardımcı olacak bir kılavuz yayınladık. Arduino'ya tel basma düğmeleri. Bizim Arduino Akvaryum Monitör projesi size bunun gibi bir mikrodenetleyici ile bir OLED ekranın nasıl kullanılacağını gösterir. Bu nedenle, bu makalenin geri kalanında bu projenin koduna odaklanacağız.
Arduino El Oyun Kodu
Doğru biçimlendirme ve düzenli dosya yapıları, hem acemi hem de deneyimli programcılar için çok önemlidir. Tekrar gözden geçirmeniz gerekirse, kodunuzu düzgün bir şekilde düzenlemek için zaman ayırdığınız için kendinize teşekkür edeceksiniz.
Kod, projemizin temelini oluşturmak için bir ana INO dosyası kullanır. Ayrıca ekranımızı kontrol etmek için bir C++ dosyası, ana oyun kodunu çalıştırmak için bir C++ dosyası ve hepsini birbirine bağlamak için bir Arduino kütüphane dosyası var.
Aşağıda bu kodun derinliklerine ineceğiz, ancak yorum yapılan koda göz atmanızı öneririz. GitHub'da Arduino El Oyunu projesi. Bu makalenin yanında ona başvurmanıza yardımcı olacaktır.
Kütüphane Dosyası (library.h)
Kütüphane dosyamız, diğer proje dosyalarımızı tek bir uygulama olarak çalışabilmeleri için birbirine bağlayarak çok önemli bir rol oynar. Bu dosya, Arduino.h kütüphanesini ve dosyalarımız arasında çalışması gereken oyun kodumuzdaki tüm fonksiyonları içerecek bildirimleri içerir. Bu olmadan, kodumuz basitçe çalışmaz.
Ana INO Dosyası (main.ino)
Birçok Arduino projesi gibi, bu proje de Arduino IDE tarafından sağlanan varsayılan şablonla başladı. Bu şablon verir kurmak ve döngü diğer dosyalarımızdaki işlevleri çağırmak için kullandığımız işlevler. Bu dosya ayrıca library.h dosyasını dahil etmek için bir bildirime sahiptir.
Kurulum işlevi, Arduino sıfırlandığında veya açıldığında yalnızca bir kez çalıştığı için ekranımızı ve düğmelerimizi başlatmak için idealdir. Bunun için display dosyamızdaki disSetup() fonksiyonunu, oyun dosyamızdaki butSetup() fonksiyonunu çağırıyoruz.
Döngü() işlevimiz, oyun dosyamızda bulunan gameState() işlevine yapılan tek bir çağrıyla, setup() işlevinden bile daha basittir. Bunu makalenin ilerleyen kısımlarında daha ayrıntılı olarak inceleyeceğiz.
Görüntü Kodu Dosyası (display.cpp)
Bu proje için bir SSD1306 OLED ekran kullanıyoruz, ancak kodu uygun şekilde düzenlerseniz farklı bir ekran türü kullanabilirsiniz. Bu dosya, kütüphane dosyasının eklenmesiyle başlar, kütüphane.h. Ardından SPI, Wire, Adafruit_GX ve Adafruit_SSD1306 kitaplıkları için bildirimler içerir. Bunu takiben, ekran için ayarları sağlamak için bazı sabitler tanımlar.
İlk fonksiyon, kurulum, ekranı başlatır ve bir logo açılış ekranı gösterir. Yaklaşık 2 saniye bekledikten sonra ekranı siler. Ana dosyamız main.ino, kendi içinde disSetup'ı çağırır. kurmak işlev.
Bu dosyadaki timerBar() dışındaki diğer işlevler, oyun boyunca görülen farklı ekranları oluşturur. oyun dosyası, oyun.cpp, bu işlevlerin her birini çağırır.
- startGame(): Bu fonksiyon oyuncunun gördüğü ilk ekranı kontrol eder. Telefonu ararken sadece hazır olup olmadıklarını soruyor. switchInstance oyun dosyasında bulunan işlev.
- startGame(): Oyuncu oyuna başladığında, bu ekranda kısa bir geri sayım gösterilir. Daha sonra oyunun durumunu eşleşecek şekilde değiştirir.
- inGame(): Bu, oyunun her turunu yüklemek için üç değişken kullanan görüntüleme işlevlerimizin en karmaşıkıdır. Üç karodan hangisinin doldurulacağını belirleyen bir if ifadesi ile başlar, ardından karoları ve oyuncunun seviyesini ve puanını görüntüler.
- timerBar(): Bu işlev, ekranın altında bir zamanlayıcı çubuğu görüntülemek için bir değişken kullanır. Oyuncuya her tur için ne kadar zamanları olduğunu gösterir.
- SuccessScreen(): Bu, oyuncunun bir turu başarıyla tamamladığı her seferde bir mesaj görüntüleyen basit bir işlevdir.
- endGame(): Bu son işlev, oyuncunun puanı ve oyuna yeniden başlama seçeneği ile birlikte bir oyunu ekran üzerinde görüntüler.
Oyun Kodu Dosyası (game.cpp)
Son olarak, keşfedilecek son dosya olarak oyun koduna bakmanın zamanı geldi. Bu dosya da diğerleri gibi library.h dosyasının eklenmesiyle başlar. Ayrıca oyun sırasında kullandığımız farklı tamsayı değişkenlerinin uzun bir listesini içerir.
butSetup() işlevini her şeyden önce bulacaksınız. Ana dosyamızdaki setup() işlevi butSetup'ı çağırır. Bu işlev, düğmelerimizi daha sonra okuyabileceğimiz girdiler olarak ayarlamak için değişkenleri kullanır.
- switchInstance(): Bu işlev, başlangıç ekranından oyuna ve oyun ekranlarına kadar oyunun örnekleri arasında geçiş yapar. Hangi oyun durumuna geçeceğini söyleyen bir değişken alır. Bir if ifadesi, oyunu startGame() durumundan başlatmak için bir düğmeye basılmasını bekler. Başka bir if ifadesi, oyunu endGame() durumundan yeniden başlatır.
- gameState(): Bu işlev, oyuncunun puanına göre oyun zorluğunu belirler ve oyunun durumuna göre doğru işlevi çağırır. Oyuncunun puanına göre değişkenleri ayarlayan bir dizi if ifadesiyle başlar, ardından mevcut örneği kontrol etmek için daha fazla if ifadesi gelir.
- tileSelector(): Bu işlev, oyuna herhangi bir zamanda üç karodan hangisinin doldurulacağını söyleyen 0 ile 2 arasında rastgele bir sayı üretir.
- theGame(): Bu işlev, tartışmasız en önemlisidir. Şunu çağırır: kiremitSeçici ve oyunda işlevleri, yeni bir döşeme seçme ve ekranda görüntüleme. Bunu takiben, her tur için bir zamanlayıcı görevi gören bir for döngüsü bulacaksınız. Düğme basışlarını alan ve bunların doğru olup olmadığını belirleyen bir dizi if ifadesi içerir.
Kendi Elde Taşınabilir Arduino Oyununuzu Oluşturma
Bu makale, GitHub'da bulunan proje kodunun tamamlayıcısıdır. Kullandığımız belirli kod satırları hakkında daha fazla bilgiyi bu dosyalardaki yorumlarda bulabilirsiniz. Ama aynı zamanda Arduino'nuza yükleyebilir ve eğlencenin tadını çıkarabilirsiniz.
Yaratıcılık, oyun geliştirme dünyasının anahtarıdır ve sizi bunun yanında kendi oyun fikirleriniz üzerinde çalışmaya teşvik ediyoruz.
En İyi 10 Arduino Radyo Projesi
Sonrakini Oku
İlgili konular
- Programlama
- kendin yap
- Kendin Yap Proje Fikirleri
- Kendin Yap Projesi Eğitimleri
- Arduino
- Programlama
Yazar hakkında
Samuel, kendin yap ile ilgili her şeye tutkuyla bağlı, İngiltere merkezli bir teknoloji yazarıdır. Uzun yıllar yazar olarak çalışmanın yanı sıra web geliştirme ve 3D baskı alanlarında iş kuran Samuel, teknoloji dünyasına benzersiz bir bakış açısı sunuyor. Ağırlıklı olarak kendin yap teknolojisi projelerine odaklanarak, evde deneyebileceğiniz eğlenceli ve heyecan verici fikirleri paylaşmaktan başka bir şey sevmiyor. İş dışında, Samuel genellikle bisiklet sürerken, bilgisayar oyunları oynarken veya çaresizce evcil yengeciyle iletişim kurmaya çalışırken bulunabilir.
Haber bültenimize abone ol
Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!
Abone olmak için buraya tıklayın