Excitebike adalah gim side-scroller di mana Anda mengarahkan sepeda motor melewati lompatan, bermanuver di sekitar rintangan, dan melaju menuju garis finis.

Nintendo pertama kali meluncurkan game balap BMX ini untuk NES. Dari sana, perusahaan memodernisasi Excitebike dan merilisnya di N64 dan, akhirnya, Wii.

Tidak banyak lagi konsol NES, yang membuat bermain Excitebike kembali sulit didapat. Terima kasih kepada beberapa penggemar retro di Wireframe Magazine, cuplikan kode Python dapat membuat ulang NES klasik ini untuk bersenang-senang selama berjam-jam di Raspberry Pi atau PC rumahan Anda.

Mendapatkan Kode dan Menyiapkan

Meskipun Anda dapat menggunakan nano atau vim untuk mengedit kode python Anda, Anda pasti ingin memanfaatkan fitur lengkap editor teks atau IDE.

Anda harus menginstal Pygame Zero untuk mendukung fitur-fitur yang dibangun dalam penghormatan untuk Excitebike ini. Pygame Zero berisi modul Python untuk pembuat game agar fokus tanpa harus mengulang fondasi sederhana.

Jika Anda tidak menginstal python3 di PC Anda, Anda bisa

unduh versi terbaru dari Python secara langsung. Anda juga akan ingin pastikan Anda telah menginstal PIP juga.

Dengan versi terbaru Python dan PIP terinstal, buka terminal PowerShell atau Linux Anda dan ketik:

pip3 Install pgzero

Terakhir, Anda perlu mengambil salinan kode Python dari repositori GitHub majalah Wireframe. Ketik perintah berikut ke terminal:

git klon https://github.com/Wireframe-Magazine/Wireframe-66.git

Alternatifnya, Anda bisa unduh kode zip langsung dari halaman Wireframe GitHub.

Memecah Kode

Untuk memahami apa yang dilakukan kode, jalankan game Excitebike terlebih dahulu. Lakukan dengan membuka kode sumber lalu menjalankannya menggunakan Pygame Zero:

CD Gambar rangka-66/sumber-kode-excitebike/
pgzrunexitebike.py

Anda kemudian dapat membuka file exitebike.py dengan editor teks untuk melihat kodenya.

Itu menggambar fungsi menggambar latar belakang saat gambar sepeda bergerak. A "blit" mengacu pada blok yang digambar di layar. Kata, "latar belakang," mengacu pada gambar latar belakang (menautkan gambar ke blok latar belakang berkat modul Pygame Zero yang diimpor).

defmenggambar():
layar.blit("latar belakang", (0, 0))
drawTrack()
sepeda.menggambar()
layar.gambar.teks("WAKTU LAP: "+str (int (time.time() - startTime)), (20, 555),color=(255,255,255), fontsize=50)
layar.gambar.teks("PUTARAN TERAKHIR: "+str (lastLap), kanan atas = (780, 555),warna=(255.255.255), ukuran font=50)

Anda juga akan melihat penghitungan waktu putaran dan putaran terakhir (ini ditunjukkan dengan penghitung waktu di bagian bawah layar). Waktu putaran secara konstan menghitung perbedaan antara penekanan tombol panah kanan awal (waktu mulai) dan waktu saat ini.

Lap terakhir adalah perhitungan serupa. Bukan waktu mulai, waktu dihitung dari saat sepeda motor melewati posisi lintasan yang telah ditentukan (disebutkan sebagai trackPos < -4800 dalam kode). Item di bawah ini dalam tanda kutip mewakili gambar.

Kode ini menggambar blok gambar di layar pada interval tertentu dan posisi tertentu di layar. Gambar kerumunan yang disediakan hanya selebar 100px. Namun, kode di bawah ini memberitahu komputer kapan harus menggambar sehingga seolah-olah ada simulasi kerumunan di belakang sepeda motor saat bergerak.

Gambar batu ditampilkan di layar dalam dua bagian. Baris kode kedua dan ketiga, di bawah, bekerja sama untuk mensimulasikan pemandangan dengan cara yang rapi.

Setelah Anda membuat salinan cadangan kode python, coba ubah angka di bawah ini untuk melihat apa yang terjadi pada batu di layar!

layar.blit("kerumunan1", ((t*100)+trackOffset-100, 0))
layar.blit("rock1", ((t*100)+trackOffset-100, 270))
layar.blit("rock1", ((t*100)+trackOffset-50, 270))

Apakah Anda ingin mengganti motor Anda dengan truk Monster, kendaraan roda empat, atau kendaraan lain? Mungkin Anda ingin membalap unicorn hingga garis finis?

Yang perlu Anda lakukan hanyalah menggambar gambar 50x50px (dengan latar belakang transparan). Kemudian, tempatkan file ini (gambar.png) ke dalam 'gambar-gambar' folder (dalam source-code-excitebike map). Anda ingin membuat dua gambar (satu dengan sedikit lebih tinggi) untuk menambahkan beberapa realisme. Yang perlu Anda lakukan adalah mengubah referensi ke 'sepeda0' Di Sini:

sepeda = Aktor('sepeda0', tengah=(150, 350), jangkar=('tengah', 'dasar'))

Pastikan juga untuk melakukan tindakan temukan dan ganti dengan nama gambar (tanpa ekstensi gambar).

checkBikeRamp() adalah fungsi yang berfungsi untuk menghitung sumbu Y sehingga sepeda motor (atau truk) Anda menaiki tanjakan (dan menghirup udara yang serius jika Anda beruntung). Itu keyboard.kanan Dan keyboard.kiri parameter didefinisikan dalam memperbarui() fungsi.

Bit kode ini memberi tahu komputer untuk memperlambat atau mempercepat sepeda motor (tergantung pada tombol apa yang ditekan pengguna pada keyboard). Terjemahan: Semakin cepat sepeda motor Anda bergerak, semakin tinggi jumlah sumbu Y (atau lompatan yang sangat besar).

Secara melintang, the on_key_down (kunci) fungsi akan mengirim sepeda motor Anda menukik.

jika kunci.nama == "TURUN":
arah sepeda = 1
bike.laneY = membatasi(sepeda.laneY + 50, 375, 525)
sepeda.y += sepeda.arah

Itu muckLane parameter akan memperlambat sepeda motor Anda menggunakan perhitungan berikut:

muckLane = int((sepeda.jalur-375)/50)+1

Baris 66 kode menentukan kapan menampilkan gambar 'kotoran' di layar. Sekarang komputer mengetahui kapan sepeda motor Anda akan melewati kotoran, itu akan memperlambat kecepatan sepeda motor Anda menjadi setengahnya saat Anda melewati kotoran di lintasan. Ubah nilai muckLane dari /50 ke /25 atau /75 untuk melihat apa yang terjadi selanjutnya.

Pembalap (ahem, Pemrogram Python)! Nyalakan Mesin Anda!

Bahkan jika Anda tidak nyaman memprogram penghormatan untuk Excitebike ini dari awal, kode ini masih merupakan primer yang bagus. Dengan mengutak-atiknya, dan menyadari dampak visual dari perubahan tersebut, Anda dapat belajar banyak. Apakah Anda akan mencoba menambahkan lebih banyak fitur atau pembalap AI di game Anda? Pergi untuk itu!

Dengan sedikit latihan Python di bawah ikat pinggang Anda, ide lain untuk Anda coba adalah menambahkan level yang berbeda setelah Anda melewati garis finis setelah 4 atau 5 kali. Selain itu, Anda mungkin ingin menambahkan hadiah untuk tempat pertama, kedua, dan ketiga. Jika Anda berada di posisi pertama, tambahkan juga file audio yang menyemangati banyak orang! Ada begitu banyak kemungkinan.

Saat Anda senang dengan peningkatan Excitebike Anda, mengapa tidak mencoba membuat game petualangan teks? Ada banyak bagian berbeda yang akan memastikan Anda mempelajari sesuatu yang menarik selama berjam-jam, berhari-hari, atau bahkan berminggu-minggu!