Daftar Isi:
- Perlengkapan
- Langkah 1: Loop Utama
- Langkah 2: Joystick
- Langkah 3: Tampilan Buffer
- Langkah 4: Penyerbu, Peluru dan Pemain
- Langkah 5: Jadikan Milik Anda Sendiri
Video: Space Invaders di Micropython di Micro: bit: 5 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
Dalam artikel kami sebelumnya, kami telah menjelajahi pembuatan game di GameGo, konsol game retro portabel yang dikembangkan oleh pendidikan TinkerGen. Game yang kami buat mengingatkan pada game Nintendo lama. Dalam artikel hari ini, kita akan mundur selangkah, ke zaman keemasan game arcade. Kami akan membuat ulang game Space Invaders di Micropython pada mikrokontroler Micro:bit - dan sebagai tambahan, kami juga akan menggunakan ekstensi BitPlayer Micro:bit, yang memungkinkan kami bermain game dengan lebih nyaman.
Karena tutorial ini adalah tentang pengkodean game di Micropython, alih-alih urutan tahap demi tahap tradisional yang kami gunakan sebelumnya untuk tutorial pemrograman grafis, kami akan membahas kode blok demi blok - membahas fungsi penting, kelas dan utama lingkaran. Anda dapat mengunduh kode lengkapnya di repositori GitHub proyek ini. Gesper dan mari kita mulai!
Perlengkapan
TinkerGen BitPlayer
BBC Mikro: bit
Langkah 1: Loop Utama
Dalam tutorial ini saya akan cukup sering menggunakan kata "metode". Metode dalam python agak mirip dengan fungsi, kecuali dikaitkan dengan objek/kelas. Jadi, untuk penyederhanaan, Anda dapat membacanya sebagai "fungsi di dalam kelas". Anda dapat membaca lebih lanjut tentang metode di sini.
Kami memasuki loop utama dengan
sementara tidak game_over:
kondisi. Di dalam kita mendapatkan jumlah penyerbu, peluang kemunculannya dan jumlah yang dibutuhkan untuk naik ke level berikutnya dari kamus level. Selanjutnya kita periksa pergerakan kiri-kanan dengan metode instance Listen_Dir dari instance kelas JoyStick. Jika salah satu kondisi dievaluasi sebagai Benar, kami menambah/mengurangi nilai x dari karakter yang dapat kami mainkan. Kami membatasinya ke [-2, 2] dengan dua kondisi if. Kemudian kami menginisialisasi instance kelas DisplayBuffer dan memeriksa penekanan tombol "perisai" atau "peluru api". Kami menggunakan metode DisplayBuffer.set() untuk mengatur objek untuk rendering nanti. Untuk merender perisai, kami menggunakan DisplayBuffer.set() secara langsung, tetapi untuk peluru dan penyerbu kami menambahkannya ke daftar masing-masing dan mengatur() mereka satu per satu dalam loop for dengan kode berikut untuk rendering nanti dengan DispBuffer.render():
untuk b dalam peluru: b.render(dispBuf) untuk v dalam vaders: v.render(dispBuf)
Semua penyerbu, peluru, dan perisai ditampilkan di layar setelah setiap iterasi loop utama dengan
dispBuf.render()
Sebelum akhir loop utama, kami memeriksa apakah ada peluru penyerbu yang telah mencapai akhir layar, dan jika ya, kami menghapusnya dari daftar masing-masing.
Langkah 2: Joystick
BitPlayer mudah dipegang dan digunakan, dengan joystick 2-sumbu seperti pengontrol Gameboy atau PSP, ia juga menyertakan 6 tombol lain yang dapat diprogram berlabel L, R, A, B, C, dan D. Untuk pengalaman yang imersif dan interaktif, BitPlayer sendiri memiliki fitur buzzer, motor getar, dan port Grove I2C untuk menghubungkan periferal tambahan seperti layar OLED.
Kami hanya menggunakan joystick kiri-kanan untuk game ini, untuk contoh lengkap tentang penggunaan semua tombol BitPlayer, Anda dapat melihat joystick_example.py di repositori GitHub proyek ini. Saat membuat instance kelas JoyStick, kami memeriksa pembacaan default sumbu X dan menyimpan nilai itu di self. Read_X. Kemudian pada fungsi Listen_Dir, kami memeriksa apakah penyimpangan dari nilai default itu lebih tinggi dari variabel sensitivitas (coba ubah sendiri, jika Anda merasa JoyStick terlalu sensitif) dan kembalikan True of False sesuai dengan arah yang terdeteksi.
Mari kita lihat contoh konkret cara kerjanya:
Katakanlah pembacaan sumbu X default kita adalah 0. Kemudian, jika kita menggerakkan Joystick ke kanan:
New_X = JoyStick_X.read_analog() #New_X=200
Kanan = New_X - self. Read_X #Kanan = 200 Kiri = self. Read_X - New_X #Left = -200
Kemudian ketika kami memeriksa arah:
Precision = 150if Right > Precision: #200 > 150 True Get_Rocker = DIR['R'] elif Left > Precision: #-200 > 150 False Get_Rocker = DIR['L'] else: Get_Rocker = DIR['NONE'] if Dir == Get_Rocker: kembalikan Benar yang lain: kembalikan Salah
Langkah 3: Tampilan Buffer
Kelas DisplayBuf bertanggung jawab untuk mengontrol layar LED. Hal ini dilakukan dengan menggunakan dua metode, set() dan render(). set() metode mengubah nilai yang sesuai dengan piksel layar LED. Anda mungkin ingat, bahwa piksel pada layar LED Micro:bit dapat dinyatakan sebagai string atau daftar - "0000:000000:00000:00000:00000" adalah layar kosong. "00000:000000:00000:00000:00100" adalah layar dengan piksel remang-remang di tengah baris bawah.
00000:
00000
:00000
:00000:
00100"
Notasi ini mungkin lebih mudah untuk diproses:)
Jadi, apa yang kita lakukan selama loop utama adalah memanggil metode set() dari DisplayBuf untuk mengatur semua objek kita yang perlu ditampilkan di layar. Kemudian kami menggunakan metode render() untuk benar-benar menampilkan semuanya di layar secara bersamaan.
Langkah 4: Penyerbu, Peluru dan Pemain
Peluru dan Invaders milik kelas Mover. Instans kelas penggerak memiliki lokasi dan kecepatan x, y, serta kecerahan. Kelas penggerak memiliki dua metode instance, set() dan move(). set() metode cukup memanggil metode DisplayBuf set() dengan koordinat yang diperbarui untuk disimpan untuk rendering nanti pada matriks LED. metode move() memperbarui koordinat instance sesuai dengan kecepatan instance - yang berguna nanti, ketika kita perlu mengubah kecepatan penyerbu seiring kemajuan level.
Class Bullet dan class Invader adalah subclass dari class Mover. Di sini kita menggunakan sesuatu yang disebut warisan. Fungsionalitas super() memungkinkan kita untuk memanggil metode superclass di subclass, tanpa perlu mengulang kode.
Langkah 5: Jadikan Milik Anda Sendiri
Selamat! Anda baru saja membuat ulang game Space Invaders klasik di Micro:bit dengan beberapa perangkat keras game yang keren. Tentu saja, Anda dapat meningkatkan kode permainan dari sini - misalnya, untuk saat ini, permainan hanya memiliki satu level - Anda dapat menambahkan yang lebih menantang. Juga, seperti yang mungkin Anda ingat, gim aslinya memiliki batu yang mengambang di depan pemain, yang dapat Anda tambahkan juga.
Jika Anda membuat versi game yang lebih baik, bagikan di komentar di bawah! Untuk informasi lebih lanjut tentang BitPlayer dan perangkat keras lainnya untuk pembuat dan pendidik STEM, kunjungi situs web kami, https://tinkergen.com/ dan berlangganan buletin kami.
TinkerGen baru-baru ini membuat kampanye Kickstarter untuk MARK (Make A Robot Kit), kit robot untuk mengajar coding, robotika, AI!
Kode Micropython asli dari hexkcd/micro-vaders, diubah agar berfungsi dengan TinkerGen BitPlayer.
Direkomendasikan:
Konsol Game Portabel Lego Dengan Space Invaders: 4 Langkah
Konsol Game Portabel Lego Dengan Space Invaders: Pernahkah Anda berpikir untuk menjadi pengembang game dan membangun konsol game Anda sendiri yang dapat Anda mainkan saat bepergian? Yang Anda butuhkan hanyalah sedikit waktu, perangkat kerasLego bricksa Mini-Calliope (dapat dipesan di situs web ini https://calliope.cc/en) dan beberapa keterampilan
LCD Invaders: Space Invaders Seperti Game di Layar Karakter LCD 16x2: 7 Langkah
LCD Invaders: Game Seperti Space Invaders di Layar Karakter LCD 16x2: Tidak perlu memperkenalkan game "Space Invaders" yang legendaris. Fitur yang paling menarik dari proyek ini adalah menggunakan tampilan teks untuk output grafis. Ini dicapai dengan menerapkan 8 karakter khusus. Anda dapat mengunduh Arduino lengkap
Cara Membuat Space Invaders di Micro Bit.: 4 Langkah
Cara Membuat Space Invaders di Micro Bit.: Jadi langkah pertama adalah membuat kapal kita. Anda pergi ke "Dasar" dan tambahkan "Saat memulai" memblokir. Kemudian Anda pergi ke "Variabel" dan Anda membuat variabel bernama "SHIP" dan pilih blok dari "Variabel" tab t
Jam Space Invaders (dengan Anggaran terbatas!): 6 Langkah (dengan Gambar)
Jam Space Invaders (dengan Anggaran!): Baru-baru ini saya melihat build keren dari GeckoDiode dan saya langsung ingin membuatnya sendiri. Yang Dapat Diinstruksikan adalah Jam Desktop Space Invaders dan saya sarankan Anda melihatnya setelah membaca ini. Proyek ini hampir semata-mata dibangun dari bagian-bagian yang bersumber
Lampu Gantung Space Invaders Dengan Glow in the Dark Action: 16 Langkah (dengan Gambar)
Space Invaders Chandelier With Glow in the Dark Action: Gunakan pemodelan/pencetakan 3D, akrilik potong laser, pengecoran resin, pigmen reaktif UV, LED, dan beberapa kabel sederhana untuk membuat lampu gantung atau lampu penyerbu ruang bergaya retro dan keren. Saya telah menyertakan trik yang bagus untuk membuat sudut melengkung dari laser cu