Mündəricat:

Arduino döyüş gəmisi oyunu: 3 addım
Arduino döyüş gəmisi oyunu: 3 addım

Video: Arduino döyüş gəmisi oyunu: 3 addım

Video: Arduino döyüş gəmisi oyunu: 3 addım
Video: Russian Naval Base With Nuclear Submarines Destroyed by Ukraine M142 Himars Missiles - ARMA 3 2024, Noyabr
Anonim
Arduino döyüş gəmisi oyunu
Arduino döyüş gəmisi oyunu

Uşaqlıqda Battleship Oyununun kağız və qələm versiyasını oynadığımı xatırlayıram. Əslində, bu, 1 -ci Dünya Müharibəsindən bəri mövcuddur. 1960 -cı illərin əvvəllərində işıqlar, səslər və gizli minalar olan "Sonar Sub Hunt" adlı "elektron" bir variantım da var idi. Bugünkü video oyun standartlarına görə Döyüş gəmisi olduqca darıxdırıcıdır, amma nəvələrin nə düşündüyünü görmək üçün onsuz da bir şey edəcəyimi düşündüm. Axı, bəzən retro sərin ola bilər.

Döyüş gəmisi oyunu ilə maraqlanmasanız belə, bu layihənin başqa yerlərində faydalı olacaq parçaları var. Xüsusi bir xarakter yerini təyin etmək üçün bir rutin daxil olan sadə 4 bitli 1602 LCD interfeysi var. 4x4 keçid matrisini deşifr etmək üçün bir interfeys də var. Bu iki interfeys ayrı -ayrı fayllar şəklində mövcuddur, buna görə də asanlıqla nəql edilə bilər. Oyunda müxtəlif səs effektləri və sadə bir tranzistorlu səs gücləndirici dövrəsi də var.

Addım 1: Avadanlıq

Avadanlıq
Avadanlıq
Avadanlıq
Avadanlıq

Burada təqdim olunan sxem bir oyunçu üçün nəzərdə tutulmuşdur, buna görə iki qurğu hazırlamaq lazımdır. Cihazlar, UART TX və RX xətləri və torpaq telini ehtiva edən 3 telli bir interfeys istifadə edərək ünsiyyət qurur. Standart 1/8 düymlük stereo qulaqlıq yuvası və hər iki ucunda kişi fişləri olan standart bir kabel istifadə etməyi seçdim. Bir qutudan gələn RX digər qutunun TX-ə gedir və əksinə. Bunu, qutunun içərisindəki qulaqlıq yuvasına lehimlənmiş telləri dəyişdirərək və ya qurarkən elektron lövhədə dəyişdirərək edə bilərsiniz.

Klassik oyun bir matris olaraq quruldu, ancaq ekran üçün 1602 LCD istifadə edərək sadə bir tətbiq etməyi qərara aldım. Birinci sətirdə oyunçunun gəmi yeri və rəqibin zərbələri göstərilir. İkinci sətirdə oyunçunun atışları və rəqibin gəmilərinə vurduğu zərbələr göstərilir. Bu, gəmilər üçün 16 mümkün yer təmin edir. Gəmilərin sayı proqramda təyin olunur və özbaşına olaraq 5 -i seçdim.

16 gəmi yeri 4x4 matrisə imkan verdiyinə görə keçid tələblərinə uyğun gəlir. Mövcud 4x4 matrisli keçid yastıqları var, ancaq xətti ekrana uyğun olaraq tək açarda fərdi açarları istifadə etməyi seçdim. Ancaq açarları 4x4 matris olaraq bağladım ki, yalnız səkkiz Arduino sancağına ehtiyac var. Düzgün əlaqələr üçün keçid telinin sxeminə və sxeminə baxın.

LCD ekran 4 bitlik bir interfeys üçün bağlanmışdır. Hansı oyunçunun vurmalı olduğunu göstərmək üçün D13 pininə xarici bir LED əlavə etdim. Başlanğıcda, oyunçular ilk vuruşu kimin atacağına qərar verir və sonra proqram avtomatik olaraq oyunun irəli və irəli nəzarət edir.

Çəkiliş, partlayışlar, hazır oyun və qalib/məğlub üçün sadə səs effektləri əlavə etmək istədim. Sadə bir piezo səs siqnalı istifadə etməyə çalışdım, amma əvəzində kiçik bir dinamiklə bitdi. Dinamikin tələb etdiyi cərəyan, Arduinonun idarə edə biləcəyini aşır, buna görə sadə bir tranzistor gücləndiricisi əlavə edildi. Səs hələ də əla deyil, ancaq səs -küydən daha yaxşıdır. Dinamikim 4 ohmdur, amma 8 ohm gücünüz varsa, sxemdəki müqaviməti 39 ohm-dan 33 ohm-a dəyişdirin. Bir piezo səs siqnalı istifadə edirsinizsə, buzzerin digər tərəfi yerə bağlı olaraq Arduino pinindən birbaşa idarə edə bilməlisiniz.

Xarici sıfırlama açarı da daxil edilir və Arduino üzərindəki yer və "sıfırlama" pimi arasında birbaşa bağlanır. Bu, oyunu yenidən başlatmaq üçün vasitələr təqdim edir.

Addım 2: Proqram təminatı

Proqram, LCD interfeysim üçün daxiletmə faylına malikdir və mən də 4x4 keçid matris taraması üçün bir əlavə faylı yaratdım. Başlanğıc, oyunçudan gəmiləri üçün yerləri seçməsini tələb edir və sonra "Hazır" vəziyyətinə keçir. Hər iki oyunçu hazır olduqda onlardan biri açara basaraq oyuna başlayır.

Çəkiliş yeri UART vasitəsi ilə digər oyunçuya ötürülür və müvafiq nəticə vuruş edən oyunçuya geri ötürülür. Daha əvvəl də qeyd edildiyi kimi, ilk çəkiliş edildikdən sonra, proqram növbəti vuruşu kimin edəcəyini idarə edir. Bir atış ötürülməzdən əvvəl, əvvəlki çəkilişlərin yerləri ilə yoxlanılır. Əgər həmin yer artıq istifadə olunubsa, o zaman çəkiliş ötürülməyəcək. "My_Shot" LED -i kimin növbəsinin olduğunu müəyyənləşdirir. Etibarlı bir seçim üçün bir atış səsi və bir gəmi vurulduqda partlayış səsi də var. Səs effektləri, oyuna uyğun dəyişikliklərlə onlayn olaraq tapılan nümunələrdən əldə edilir.

Rəqibin bütün gəmiləri vurulduqdan sonra hər bir LCD -də bir mesaj görünür - biri qalib, biri də məğlub. Mesaj, oyunun sıfırlama düyməsinə basaraq yenidən başlaya biləcəyini də göstərir. Qalib və uduzan üçün ayrıca səs effektləri də var.

Addım 3: Ekran görüntüləri

Ekran görüntüləri
Ekran görüntüləri
Ekran görüntüləri
Ekran görüntüləri
Ekran görüntüləri
Ekran görüntüləri
Ekran görüntüləri
Ekran görüntüləri

Oyundan bəzi ekran görüntüləri. Bu yazı üçün budur. Digər Təlimatlarımı və həmçinin www.boomerrules.wordpress.com saytındakı veb saytımı yoxlayın

Tövsiyə: