Isi kandungan:
- Bekalan
- Langkah 1: Gelung Utama
- Langkah 2: Joystick
- Langkah 3: Penampan Paparan
- Langkah 4: Penjajah, Peluru dan Pemain
- Langkah 5: Jadikannya Milik Anda
Video: Space Invaders in Micropython on Micro: bit: 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Dalam artikel sebelumnya kami telah meneroka pembuatan permainan di GameGo, konsol permainan retro mudah alih yang dikembangkan oleh TinkerGen education. Permainan yang kami buat mengingatkan pada permainan Nintendo lama. Dalam artikel hari ini, kita akan mengambil langkah mundur, ke zaman kegemilangan permainan arcade. Kami akan membuat semula permainan Space Invaders di Micropython on Micro: bit microcontroller - dan sebagai kelainan, kami juga akan menggunakan BitPlayer Micro: bit extension, yang membolehkan kami bermain permainan dengan lebih mudah.
Oleh kerana tutorial ini adalah mengenai pengekodan permainan di Micropython, bukannya urutan tahap demi tahap tradisional yang kami gunakan sebelumnya untuk tutorial pengaturcaraan grafik, kami akan membahas blok kod secara blok - membahas fungsi penting, kelas dan yang utama gelung. Anda boleh memuat turun kod penuh di repositori GitHub projek ini. Bersabar dan mari kita mulakan!
Bekalan
TinkerGen BitPlayer
Mikro BBC: sedikit
Langkah 1: Gelung Utama
Dalam tutorial ini saya akan sering menggunakan perkataan "method". Kaedah dalam python agak serupa dengan fungsi, kecuali ia dikaitkan dengan objek / kelas. Jadi, untuk memudahkan, anda boleh membacanya sebagai "fungsi dalam kelas". Anda boleh membaca lebih lanjut mengenai kaedah di sini.
Kami memasuki gelung utama dengan
sementara tidak permainan_over:
keadaan. Di dalamnya kita mendapatkan jumlah penyerang, kemungkinan mereka muncul dan jumlah yang diperlukan untuk sampai ke tingkat berikutnya dari kamus tingkat. Seterusnya kita periksa pergerakan kiri-kanan dengan kaedah instance Listen_Dir dari instance kelas JoyStick. Sekiranya salah satu syarat dinilai sebagai Benar, kita menambah / mengurangkan nilai x bagi watak yang boleh dimainkan. Kami menghadkannya kepada [-2, 2] dengan dua jika syarat. Kemudian kami memulakan contoh kelas DisplayBuffer dan memeriksa penekanan butang "perisai" atau "peluru api". Kami menggunakan kaedah DisplayBuffer.set () untuk menetapkan objek untuk rendering kemudian. Untuk memberikan perisai, kami menggunakan DisplayBuffer.set () secara langsung, tetapi untuk peluru dan penyerang kami menambahkannya ke senarai masing-masing dan menetapkannya (satu per satu untuk gelung dengan kod berikut untuk rendering kemudian dengan DispBuffer.render ():
untuk b dalam peluru: b.render (dispBuf) untuk v dalam vader: v.render (dispBuf)
Semua penceroboh, peluru dan perisai ditampilkan pada setiap lelaran gelung utama dengan
dispBuf.render ()
Sebelum akhir gelung utama, kami memeriksa sama ada peluru penyerang telah sampai ke hujung skrin, dan jika ada, kami menghapusnya dari senarai masing-masing.
Langkah 2: Joystick
BitPlayer mudah dipegang dan digunakan, dengan kayu bedik 2 paksi seperti pengawal Gameboy atau PSP, ia juga menyertakan 6 butang lain yang dapat diprogramkan berlabel L, R, A, B, C dan D. Untuk pengalaman yang mendalam dan interaktif, BitPlayer ia sendiri dilengkapi buzzer, motor getaran dan port Grove I2C untuk menghubungkan periferal tambahan seperti paparan OLED.
Kami hanya menggunakan rocker kiri-kanan kayu bedik untuk permainan ini, sebagai contoh penuh pada penggunaan semua butang BitPlayer anda boleh melihat joystick_example.py di repositori GitHub projek ini. Semasa membuat contoh kelas JoyStick, kami memeriksa bacaan lalai paksi-X dan menyimpan nilai itu dalam diri. Read_X. Kemudian dalam fungsi Listen_Dir, kami memeriksa apakah penyimpangan dari nilai lalai itu lebih tinggi daripada pembolehubah kepekaan (cuba ubah sendiri, jika anda merasakan JoyStick terlalu sensitif) dan kembali True of False mengikut arah yang dikesan.
Mari kita lihat contoh konkrit bagaimana ini berfungsi:
Katakan bacaan paksi X lalai kami adalah 0. Kemudian, jika kita menggerakkan Joystick ke kanan:
Baru_X = JoyStick_X.read_analog () # Baru_X = 200
Kanan = Baru_X - diri. Read_X #Kanan = 200 Kiri = diri. Read_X - Baru_X #Left = -200
Kemudian apabila kita memeriksa arah:
Precision = 150if Right> Precision: # 200> 150 True Get_Rocker = DIR ['R'] elif Left> Precision: # -200> 150 Palsu Get_Rocker = DIR ['L'] lain: Get_Rocker = DIR ['TIADA'] jika Dir == Get_Rocker: kembali Betul lain: kembali Palsu
Langkah 3: Penampan Paparan
Kelas DisplayBuf bertanggungjawab untuk mengawal skrin LED. Ia dilakukan dengan menggunakan dua kaedah, set () dan render (). kaedah set () mengubah nilai yang sesuai dengan piksel skrin LED. Anda mungkin ingat, bahawa piksel pada skrin LED Mikro: bit boleh dinyatakan sebagai rentetan atau senarai - "00000: 00000: 00000: 00000: 00000" adalah skrin kosong. "00000: 00000: 00000: 00000: 00100" adalah skrin dengan piksel cahaya malap di tengah baris bawah.
00000:
00000
:00000
:00000:
00100"
Notasi ini mungkin lebih mudah diproses:)
Jadi, apa yang kita lakukan semasa gelung utama adalah kaedah panggilan set () DisplayBuf untuk menetapkan semua objek kita yang perlu dipaparkan di skrin. Kemudian kami menggunakan kaedah render () untuk benar-benar menunjukkan semuanya di skrin secara serentak.
Langkah 4: Penjajah, Peluru dan Pemain
Peluru dan Penjajah tergolong dalam kelas Mover. Contoh kelas penggerak mempunyai lokasi dan kelajuan x, y, serta kecerahan. Mover class mempunyai dua kaedah contoh, tetapkan () dan pindahkan (). kaedah set () hanya memanggil kaedah DisplayBuf set () dengan koordinat yang dikemas kini untuk disimpan untuk rendering kemudian pada matriks LED. move () kaedah mengemas kini koordinat instance mengikut kelajuan instance - yang berguna kemudian, apabila kita perlu mengubah kelajuan penyerang seiring dengan kemajuan tahap.
Class Bullet dan class Invader adalah subkelas kelas Mover. Di sini kita menggunakan sesuatu yang disebut warisan. Fungsi super () membolehkan kita memanggil kaedah superclass dalam subkelas, tanpa perlu mengulang kod.
Langkah 5: Jadikannya Milik Anda
Tahniah! Anda baru sahaja mencipta permainan Space Invaders klasik di Micro: bit dengan beberapa perkakasan permainan yang hebat. Sudah tentu, anda boleh meningkatkan kod permainan dari sini - sebagai contoh, seperti sekarang, permainan hanya mempunyai satu tahap - anda boleh menambahkan yang lebih mencabar. Seperti yang anda ingat, permainan asalnya mempunyai batu yang melayang di depan pemain, yang boleh anda tambahkan juga.
Sekiranya anda membuat versi permainan yang lebih baik, bagikan dalam komen di bawah! Untuk maklumat lebih lanjut mengenai BitPlayer dan perkakasan lain untuk pembuat dan pendidik STEM, lawati laman web kami, https://tinkergen.com/ dan langgan buletin kami.
TinkerGen baru-baru ini membuat kempen Kickstarter untuk MARK (Make A Robot Kit), sebuah kit robot untuk mengajar pengkodan, robotik, AI!
Kod Micropython asal dari hexkcd / micro-vader, telah diubah untuk bekerja dengan TinkerGen BitPlayer.
Disyorkan:
Lego Portable Gaming Console Dengan Space Invaders: 4 Langkah
Lego Portable Gaming Console With Space Invaders: Pernahkah anda terfikir untuk menjadi pembangun permainan dan membina konsol permainan anda sendiri yang boleh anda mainkan dalam perjalanan? Yang anda perlukan hanyalah sedikit masa, hardwareLego bricksa Mini-Calliope (boleh dipesan di laman web ini https://calliope.cc/en)dan sedikit kemahiran
Tutorial Accelerometer Digital Arduino Nano - MMA8452Q 3-Axis 12-bit / 8-bit: 4 Langkah
Arduino Nano - MMA8452Q 3-Axis 12-bit / 8-bit Digital Accelerometer Tutorial: MMA8452Q adalah pemecut yang berkuasa rendah, tiga paksi, kapasitif, micromachined dengan resolusi 12 bit. Pilihan yang dapat diprogram pengguna fleksibel disediakan dengan bantuan fungsi tertanam dalam pecutan, dikonfigurasi untuk dua gangguan
LCD Invaders: Space Space Invaders Like Game pada Paparan Karakter LCD 16x2: 7 Langkah
LCD Invaders: Space Space Invaders Like Game pada 16x2 LCD Character Display: Tidak perlu memperkenalkan permainan "Space Invaders" yang legendaris. Ciri yang paling menarik dari projek ini ialah ia menggunakan paparan teks untuk output grafik. Ia dicapai dengan menerapkan 8 watak tersuai. Anda boleh memuat turun Arduino lengkap
Jam Space Invaders (dengan anggaran!): 6 Langkah (dengan Gambar)
Space Invaders Clock (dengan anggaran!): Baru-baru ini saya melihat binaan yang hebat oleh GeckoDiode dan saya segera mahu membinanya sendiri. Instructable is Space Invaders Desktop Clock dan saya cadangkan anda melihatnya setelah membaca ini. Projek ini hampir sepenuhnya dibina daripada bahagian yang bersumber
Chandelier Space Invaders With Glow in the Dark Tindakan: 16 Langkah (dengan Gambar)
Chandelier Space Invaders With Glow in the Dark Tindakan: Gunakan pemodelan / percetakan 3D, akrilik potong laser, pemutus resin, pigmen reaktif UV, LED dan beberapa pendawaian sederhana untuk membuat candelier atau lampu penyerang ruang sejuk dan gaya retro. Saya telah memasukkan trik bagus untuk membuat sudut melengkung daripada laser