Daftar Isi:

Permainan Batu Luar Angkasa Arduino: 3 Langkah
Permainan Batu Luar Angkasa Arduino: 3 Langkah

Video: Permainan Batu Luar Angkasa Arduino: 3 Langkah

Video: Permainan Batu Luar Angkasa Arduino: 3 Langkah
Video: Cara membuat game Android Space Shooter || construct 3 #gameandroid #coding 2024, November
Anonim
Permainan Batu Luar Angkasa Arduino
Permainan Batu Luar Angkasa Arduino

Baik dimainkan di komputer, di telepon, di konsol game, atau di kotak yang berdiri sendiri, banyak video game menyertakan elemen penghindaran rintangan. Tentu, mungkin ada poin yang diberikan untuk mengumpulkan token atau menemukan jalan Anda melalui labirin, tetapi yakinlah bahwa mungkin ada sesuatu dalam permainan yang tujuan utamanya adalah untuk mencegah Anda melakukan itu. Video game pertama adalah Pong, tetapi setelah itu game yang paling populer adalah hal-hal seperti "Asteroid" atau "Pac-Man". Variasi yang lebih baru adalah permainan "Flappy Birds" yang sederhana namun adiktif.

Baru-baru ini saya melihat seseorang telah membuat "Flappy Bird" versi dua tingkat sederhana yang dimainkan pada LCD 1602 biasa. Saya pikir itu akan menjadi sesuatu yang mungkin disukai cucu-cucu, jadi saya memutuskan untuk membuat variasi saya sendiri dari awal. Versi 1602 hanya memiliki dua level jadi saya memutuskan untuk menggunakan LCD 2004 (20x4) sebagai gantinya untuk sedikit meningkatkan kesulitan bermain. Saya juga memilih untuk membuatnya lebih seperti "Asteroid" dengan meminta pemain memandu "kapal" melalui labirin "batu luar angkasa". Bahkan jika Anda tidak tertarik untuk membuat game, mungkin ada beberapa elemen perangkat lunak yang dapat Anda gunakan di salah satu proyek Anda sendiri.

Langkah 1: Perangkat Keras

Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras

Perangkat keras dapat didasarkan pada hampir semua versi Arduino. Saya melakukan prototyping menggunakan Nano dan kemudian membakar kode ke dalam chip ATMega328. Itu adalah chip yang sama yang digunakan di Nano tetapi menggunakannya dengan sendirinya memungkinkan pembuatan yang lebih ringkas dan konsumsi daya yang lebih sedikit. Seperti yang Anda lihat, saya membangun sirkuit di atas papan tempat memotong roti kecil yang membonceng modul LCD. Aspek lain yang berbeda adalah bahwa Nano berjalan pada 16-MHz menggunakan kristal eksternal tetapi saya memilih untuk menggunakan osilator 8-MHz built-in untuk chip ATMega328. Itu menghemat suku cadang dan tenaga.

Antarmuka LCD 2004 ke Arduino dengan cara yang sama seperti LCD 1602. Perbedaan yang menarik adalah pada pengalamatan lokasi tampilan. Jelas ada perbedaan karena ada empat baris, bukan dua tetapi, pada tahun 2004, baris ketiga merupakan perpanjangan dari baris pertama dan baris keempat merupakan perpanjangan dari baris kedua. Dengan kata lain, jika Anda memiliki program uji yang baru saja mengirimkan serangkaian karakter ke LCD, karakter ke-21 akan muncul di awal baris ketiga dan karakter ke-41 kembali ke awal baris pertama. Saya menggunakan karakteristik itu dalam perangkat lunak untuk menggandakan panjang labirin secara efektif.

Saya memutuskan untuk membuat versi saya bertenaga baterai jadi saya menggunakan 18650 Li-ion umum, baterai 3,6 volt. Untuk itu saya menambahkan papan kecil untuk mengisi ulang USB dan papan kecil lainnya untuk meningkatkan tegangan baterai hingga 5 volt untuk LCD dan chip ATMega. Gambar menunjukkan modul yang saya gunakan tetapi ada juga modul all-in-one yang melakukan kedua fungsi tersebut.

Langkah 2: Perangkat Lunak

Perangkat lunaknya sama untuk chip Nano dan ATMega328. Satu-satunya perbedaan adalah dalam metode pemrograman. Saya menggunakan perangkat lunak LCD 1602 versi barebone saya sendiri dan perangkat lunak LCD dalam proyek ini didasarkan pada itu. Saya memang perlu menambahkan kemampuan untuk mengatasi garis ekstra dari tampilan 2004 dan juga menambahkan rutinitas untuk menggeser tampilan. Pergeseran tampilan memberikan efek gerakan "batu" melewati "kapal".

Seperti disebutkan sebelumnya, jalur 1 dan 3 membentuk antrian melingkar dan jalur 2 dan 4 juga demikian. Itu berarti bahwa setelah 20 shift, baris 1 dan 3 ditukar dan baris 2 dan 4 ditukar. Setelah 40 shift, garis-garis itu kembali ke posisi semula. Karena perilaku ini, labirin 20 karakter asli menjadi sangat berbeda ketika garis bertukar. Itu membuat hidup menjadi menarik ketika saya mencoba membentuk labirin. Saya akhirnya baru saja membuka spreadsheet Excel sehingga saya dapat memetakan jalurnya tanpa harus terus-menerus mengubah perangkat lunak. Perangkat lunak yang disediakan di sini memiliki dua versi labirin (satu dikomentari) sehingga Anda dapat memilih mana yang Anda inginkan atau buat sendiri.

Awalnya saya ingin ini cukup sederhana sehingga cucu-cucu muda bisa memainkannya, tetapi saya juga ingin ini memiliki tantangan ekstra jika mereka (atau orang lain) terlalu mahir melakukannya. Permainan dimulai dengan tingkat pergeseran yang ditetapkan pada 1 detik. Tingkat tic internal adalah 50ms sehingga berarti ada 20 interval selama tombol atas/bawah dapat ditekan. Sebenarnya, tombol yang ditekan menghabiskan 2 tik karena interval 50ms digunakan untuk mendeteksi penekanan dan interval 50ms lainnya digunakan untuk menunggu rilis. Dengan labirin default, jumlah penekanan maksimum yang diperlukan sebelum shift berikutnya adalah tiga. Cara sederhana untuk meningkatkan kesulitan permainan adalah mempersingkat waktu antar shift sehingga beberapa baris kode melakukan hal itu saat skor meningkat. Kecepatan shift diatur untuk mempercepat 50 md setiap 20 shift, dengan kecepatan minimum dibatasi hingga 500 md. Sangat mudah untuk mengubah parameter ini.

Selain mengubah tingkat pergeseran, logika utama dalam perangkat lunak adalah untuk memindahkan "kapal" dan untuk menentukan apakah "kapal" telah bertabrakan dengan "batu". Fungsi-fungsi ini memanfaatkan larik “batu/ruang” yang ditentukan dan juga larik yang menentukan lokasi memori di layar. Hitungan pergeseran sesuai dengan panjang garis LCD (0-19) dan digunakan sebagai indeks ke dalam array ini. Logikanya agak rumit oleh fakta bahwa garis bertukar setiap 20 hitungan shift. Logika serupa digunakan untuk menentukan posisi "kapal" yang dapat berada di salah satu dari empat garis.

Skor untuk setiap permainan hanyalah hitungan jumlah shift yang terjadi dan skor tinggi disimpan di EEROM internal mikrokontroler. Pustaka EEPROM digunakan untuk membaca dan menulis ke memori ini. Rutinitas yang tersedia memungkinkan pembacaan/penulisan byte tunggal dan pembacaan/penulisan nilai floating point. Nilai 0xA5 disimpan di lokasi EEROM pertama untuk menunjukkan bahwa skor tinggi telah disimpan. Jika nilai itu ada saat dihidupkan, maka nilai floating point untuk skor tinggi dibaca dan ditampilkan. Jika nilai 0xA5 tidak ada, maka rutin dipanggil untuk menginisialisasi skor tinggi ke nilai 1. Rutinitas yang sama dipanggil jika reset skor tinggi diinginkan. Skor tinggi diatur kembali ke nilai 1 dengan menahan salah satu tombol atas/bawah dan kemudian menekan sebentar tombol reset.

Langkah 3: Memainkan Game

Memainkan Game
Memainkan Game
Memainkan Game
Memainkan Game

Saat daya diterapkan, skor tinggi saat ini ditampilkan. Setelah skor tinggi ditampilkan, labirin "batu" dan "kapal" ditampilkan kemudian permainan dimulai beberapa detik kemudian. Ketika "kapal" mengenai "batu" pesan "CRASH AND BURN" berkedip beberapa kali sebelum menampilkan skor untuk permainan. Jika skor tinggi baru dibuat, maka pesan itu juga ditampilkan. Sebuah permainan baru dimulai dengan menekan tombol reset.

Direkomendasikan: