İçindekiler:

LCD İstilacılar: 16x2 LCD Karakter Ekranında Oyun Gibi Bir Uzay İstilacıları: 7 Adım
LCD İstilacılar: 16x2 LCD Karakter Ekranında Oyun Gibi Bir Uzay İstilacıları: 7 Adım

Video: LCD İstilacılar: 16x2 LCD Karakter Ekranında Oyun Gibi Bir Uzay İstilacıları: 7 Adım

Video: LCD İstilacılar: 16x2 LCD Karakter Ekranında Oyun Gibi Bir Uzay İstilacıları: 7 Adım
Video: Zombi Salgınında 100 Gün Hayatta Kaldım! Neler Mi Oldu? 2024, Aralık
Anonim
LCD İstilacılar: 16x2 LCD Karakter Ekranında Oyun Gibi Bir Uzay İstilacı
LCD İstilacılar: 16x2 LCD Karakter Ekranında Oyun Gibi Bir Uzay İstilacı
LCD İstilacılar: 16x2 LCD Karakter Ekranında Oyun Gibi Bir Uzay İstilacı
LCD İstilacılar: 16x2 LCD Karakter Ekranında Oyun Gibi Bir Uzay İstilacı
LCD İstilacılar: 16x2 LCD Karakter Ekranında Oyun Gibi Bir Uzay İstilacı
LCD İstilacılar: 16x2 LCD Karakter Ekranında Oyun Gibi Bir Uzay İstilacı
LCD İstilacılar: 16x2 LCD Karakter Ekranında Oyun Gibi Bir Uzay İstilacı
LCD İstilacılar: 16x2 LCD Karakter Ekranında Oyun Gibi Bir Uzay İstilacı

Efsanevi bir "Space Invaders" oyununu tanıtmaya gerek yok. Bu projenin en ilginç özelliği, grafik çıktı için metin gösterimi kullanmasıdır. 8 özel karakter uygulanarak elde edilir.

Arduino taslağının tamamını buradan indirebilirsiniz:

github.com/arduinocelentano/LCD_invaders/

Gereçler

Arduino UNO kurulu

LCD tuş takımı kalkanı

Çizim yüklemek için USB kablosu

Adım 1: Oyun Tasarımı

Oyun Tasarımı
Oyun Tasarımı

Ekran ayrı pikselleri kontrol etmeye izin vermiyor ve oyun için yeterli olmayan sadece iki satırlık metin sağlıyor. Ancak 8 adede kadar özel karakter uygulanmasına izin verir. İşin püf noktası, her 5x8 piksel karakteri iki 5x4 piksel oyun hücresi olarak işlemek. Yani 16x4 oyun alanımız olacak, bu mantıklı. 8 karakter, oyuncunun uzay gemisi, mermiler ve animasyonlu uzaylılar için sprite uygulamak için yeterlidir. Spritelar 5x4 ve karakterler 5x8 olduğundan, "uzay gemisi ve mermi" hareketli grafiği, "uzaylı ve mermi hareketli grafiği" gibi iki hareketli karaktere ihtiyacımız olacak. Tüm özel karakterler resimde gösterilmektedir.

Adım 2: İşlem Düğmeleri

İşleme Düğmeleri
İşleme Düğmeleri

Tipik olarak, bir LCD ekrandaki tüm düğmeler aynı analog pime bağlanır. LCD ekranının farklı sürümleri vardır, bu nedenle düğme işleme kodumda tamsayı değişmezlerini muhtemelen biraz değiştirmeniz gerekecek.

3. Adım: Sınıflar Hiyerarşisi

Sınıflar Hiyerarşisi
Sınıflar Hiyerarşisi

Koordinatları ve hız alanları olan ve çarpışmaları işleyen temel bir GameObject sınıfı uyguladım. Gemi, Uzaylı ve Mermi sınıfları ondan miras alınır.

4. Adım: Ekranı Güncelleme

Ekranı Güncelleme
Ekranı Güncelleme

Oluşturma mantığı biraz karmaşık görünebilir çünkü 16x4 oyun mantığını 16x2 ekrana dönüştürmemiz gerekiyor. Daha fazla referans için lütfen koddaki yorumları okuyun. Titremeyi önlemek için metin arabelleği olarak iki boyutlu bir karakter dizisi kullandım. Ekranı güncellemek için birkaç (her satır için bir tane) yazdırma işleminin kullanılmasına izin verir.

Adım 5: Oyun Mantığı

Oyun Mantığı
Oyun Mantığı

İşte oyunun kalbi. Ana döngü, tüm nesnelerin koordinatlarını değiştirir, her türlü çarpışmayı ve düğmeye basma olaylarını kontrol eder. Uzaylıların hızı ve atış olasılıkları seviyeden seviyeye artar. Ancak puan ödülü de artar.

Adım 6: Bir Paskalya Yumurtası

Paskalya Yumurtası
Paskalya Yumurtası

42 levelden sonra level yok. Cidden. Bu, Yaşamın, Evrenin ve Her Şeyin Nihai Seviyesidir.:)

Önerilen: