İçindekiler:

Arduino Savaş Gemisi Oyunu: 3 Adım
Arduino Savaş Gemisi Oyunu: 3 Adım

Video: Arduino Savaş Gemisi Oyunu: 3 Adım

Video: Arduino Savaş Gemisi Oyunu: 3 Adım
Video: Elimi kestim. Demir kanaması deneyi #kimya #shorts 2024, Temmuz
Anonim
Arduino Savaş Gemisi Oyunu
Arduino Savaş Gemisi Oyunu

Çocukken Savaş Gemisi Oyununun kağıt kalem versiyonunu oynadığımı hatırlıyorum. Aslında, 1. Dünya Savaşı'ndan beri var. 1960'ların başında, ışıkları, sesleri ve gizli mayınları olan “Sonar Sub Hunt” adlı bir “elektronik” varyantım da vardı. Günümüzün video oyunu standartlarına göre Battleship oldukça sıkıcı ama torunların bu konuda ne düşündüğünü görmek için yine de bir tane yapacağımı düşündüm. Sonuçta, bazen retro havalı olabilir.

Battleship oyununu yapmakla ilgilenmiyor olsanız bile, bu projenin başka yerlerde faydalı olabilecek parçaları var. Belirli bir karakter konumunu ayarlamak için bir rutin içeren basit bir 4-bit 1602 LCD arayüzüne sahiptir. 4x4 anahtar matrisinin kodunu çözmek için bir arayüz de vardır. Bu iki arabirim ayrı içerme dosyaları olarak mevcuttur, böylece kolayca taşınabilirler. Oyun ayrıca çeşitli ses efekti rutinlerine ve basit bir tek transistörlü ses yükseltici devresine sahiptir.

Adım 1: Donanım

Donanım
Donanım
Donanım
Donanım

Burada sunulan şema tek bir oyuncu içindir, bu nedenle iki ünite yapılması gerekir. Üniteler, UART TX ve RX hatlarını ve bir topraklama kablosunu içeren 3 kablolu bir arabirim kullanarak iletişim kurar. Standart 1/8 inç stereo kulaklık jakı ve her iki ucunda erkek fişli standart bir kablo kullanmayı seçtim. Bir kutudan gelen RX, diğer kutunun TX'ine gider ve bunun tersi de geçerlidir. Bunu, kutunun içindeki kulaklık jakına lehimlenmiş kabloları değiştirerek veya kurarken devre kartında değiştirerek yapabilirsiniz.

Klasik oyun bir matris olarak tasarlanmıştı ama ben ekran için 1602 LCD kullanarak basit bir uygulama yapmaya karar verdim. İlk satır, oyuncunun gemi konumlarını ve rakibin atışlarını gösterir. İkinci satır, oyuncunun atışlarını ve rakibin gemilerindeki isabetleri gösterir. Bu, gemiler için 16 olası konum sağlar. Gemi sayısı yazılımda ayarlandı ve ben keyfi olarak 5'i seçtim.

16 gemi konumu, 4x4 matrise izin verdiği için anahtar gereksinimlerine iyi uyum sağlar. 4x4 matris anahtar pedleri mevcuttur, ancak doğrusal ekrana uyması için tek bir satırda bireysel anahtarları kullanmayı seçtim. Bununla birlikte, anahtarları 4x4 matris olarak bağladım, böylece sadece sekiz Arduino pinine ihtiyaç duyuldu. Doğru bağlantılar için anahtar bağlantı şemasına ve şemaya bakın.

LCD ekran, 4 bitlik bir arayüz için kablolanmıştır. Ayrıca hangi oyuncunun atış yapması gerektiğini belirtmek için D13 pinine harici bir LED ekledim. İlk olarak, oyuncular ilk atışı kimin yapacağına karar verir ve ardından yazılım oyunun ileri geri hareketini otomatik olarak kontrol eder.

Atış, patlamalar, oyuna hazır ve kazanan/kaybeden için basit ses efektleri eklemek istedim. Basit bir piezo buzzer kullanmayı denedim ama bunun yerine küçük bir hoparlör buldum. Hoparlörün ihtiyaç duyduğu akım, Arduino'nun kaldırabileceğini aşıyor, bu nedenle basit bir transistör amplifikatörü eklendi. Ses hala harika değil ama sesli uyarıdan daha iyi. Hoparlörüm 4 ohm, ancak 8 ohm'luk bir hoparlörünüz varsa, şematikteki direnci 39 ohm'dan 33 ohm'a değiştirin. Piezo buzzer kullanıyorsanız, zilin diğer tarafı toprağa bağlıyken onu doğrudan Arduino pininden çalıştırabilmelisiniz.

Harici bir sıfırlama anahtarı da dahildir ve doğrudan toprak ile Arduino'daki "sıfırlama" pimi arasına bağlanır. Bu, oyunu yeniden başlatmak için araçlar sağlar.

2. Adım: Yazılım

Yazılım, LCD arayüzüm için içerme dosyasına sahiptir ve ayrıca 4x4 anahtar matris taraması için bir içerme dosyası oluşturdum. Başlatma, oyuncudan gemileri için konumları seçmesini ister ve ardından "Hazır" durumuna geçer. Her iki oyuncu da hazır olduğunda biri bir düğmeye basarak oyunu başlatır.

Atış konumu, UART aracılığıyla diğer oyuncuya iletilir ve uygun sonuç, atış yapan oyuncuya geri iletilir. Daha önce de belirtildiği gibi, ilk çekim yapıldıktan sonra yazılım, bir sonraki çekimi kimin yapacağını kontrol eder. Bir çekim iletilmeden önce, önceki çekimlerin konumlarına göre kontrol edilir. Bu konum zaten kullanılmışsa, çekim iletilmez. “My_Shot” LED'i sıranın kimde olduğunu belirler. Ayrıca geçerli bir seçim için üretilen bir atış sesi ve bir gemi vurulursa bir patlama sesi de vardır. Ses efektleri, oyuna uygun değişikliklerle çevrimiçi olarak bulunan örneklerden türetilmiştir.

Rakibin tüm gemileri vurulduğunda, her LCD'de biri kazanan, diğeri kaybeden olarak bir mesaj görüntülenir. Mesaj ayrıca, sıfırlama düğmesine basılarak oyunun yeniden başlatılabileceğini belirtir. Kazanan ve kaybeden için ayrı ses efektleri de vardır.

3. Adım: Ekran Görüntüleri

Ekran görüntüleri
Ekran görüntüleri
Ekran görüntüleri
Ekran görüntüleri
Ekran görüntüleri
Ekran görüntüleri
Ekran görüntüleri
Ekran görüntüleri

İşte oyundan bazı ekran görüntüleri. Bu yazı için bu kadar. Diğer Talimatlarıma ve ayrıca web siteme göz atın: www.boomerrules.wordpress.com

Önerilen: