Apakah tabrakan memberikan power-up atau mengarah ke game over, Anda harus bisa mendeteksinya. Inilah cara melakukannya dengan perpustakaan arcade Python.
Tabrakan adalah aspek mendasar dari gameplay di banyak genre video game. Mereka menambahkan lapisan tantangan dan kegembiraan ke dalam game, mengharuskan pemain untuk melewati rintangan, menghindari musuh, dan mengumpulkan hadiah.
Menerapkan deteksi dan penanganan tabrakan dalam game Anda sangat penting untuk menciptakan mekanisme gameplay yang realistis dan dinamis yang membuat pemain tetap terlibat dan terhibur. Anda dapat dengan mudah mendeteksi tabrakan dengan perpustakaan arcade, menggunakan fungsi bawaannya.
Membuat Game Sederhana
Sebelum memulai, pastikan Anda sudah pip diinstal pada perangkat Anda. Gunakan perintah ini untuk menginstal perpustakaan arcade:
pip menginstal arcade
Setelah itu, buat game dimana pemain bisa bergerak ke kiri dan ke kanan untuk menghindari tabrakan dengan persegi panjang musuh. Anda dapat menggunakan fungsi gambar bawaan untuk sprite.
Anda dapat menemukan yang lengkap kode dalam repo GitHub ini.
Berikut adalah kode untuk permainan:
impor arcade
SCREEN_WIDTH = 640
LAYAR_TINGGI = 480
MOVEMENT_SPEED = 5kelasMyGame(arcade. Jendela):
def__init__(diri, lebar, tinggi):
super().__init__(lebar, tinggi, "Permainanku")
arcade.set_background_color (arcade.color. PUTIH)
self.player = arcade. SpriteWarna Padat(50, 50, arcade.color. BIRU)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
diri.musuh = arcade. SpriteWarna Padat(50, 50, arcade.color. MERAH)
self.enemy.center_x = SCREEN_WIDTH // 2
self.enemy.center_y = 50defon_draw(diri sendiri):
arcade.start_render()
self.player.draw()
self.enemy.draw()defon_key_press(mandiri, kunci, pengubah):
jika kunci == arcade.kunci. KIRI:
self.player.center_x -= MOVEMENT_SPEED
elif kunci == arcade.kunci. BENAR:
self.player.center_x += MOVEMENT_SPEEDdefmemperbarui(mandiri, waktu_delta):
jika arcade.check_for_collision (self.player, self.enemy):
mencetak("Permainan telah berakhir")defutama():
game = Permainan Saya (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.lari()
jika __nama__ == "__utama__":
utama()
Fitur Deteksi Tabrakan Arcade
Pustaka Arcade menyediakan cara sederhana untuk mendeteksi tabrakan antar sprite. Itu check_for_collision fungsi mengambil dua sprite sebagai argumen dan mengembalikan nilai Boolean yang menunjukkan apakah sprite telah bertabrakan. Anda dapat menggunakan fungsi ini untuk mendeteksi tabrakan antara pemain dan sprite musuh di game Anda.
Anda dapat mengubah memperbarui metode untuk memeriksa tabrakan antara pemain dan sprite musuh. Jika perpustakaan mendeteksi tabrakan, Anda dapat mencetak Permainan telah berakhir ke konsol.
Ini kode yang diperbarui:
defmemperbarui(mandiri, waktu_delta):
jika arcade.check_for_collision (self.player, self.enemy):
mencetak("Permainan telah berakhir")
kalau tidak:
self.player.update()
Dengan perubahan ini, game Anda akan mendeteksi benturan dan mencetak Permainan telah berakhir teks jika pemain bertabrakan dengan musuh.
Menambahkan Lebih Banyak Fitur
Untuk membuat game Anda lebih menarik, Anda dapat menambahkan fitur tambahan seperti skor, power-up, dan banyak musuh.
Misalnya, Anda dapat membuat daftar musuh dan memperbarui game untuk menelurkan musuh baru di posisi acak setelah setiap tabrakan. Kamu bisa memindahkan pemain kiri dan kanan untuk menghindari musuh dan mencetak poin. Berikut adalah contoh bagaimana Anda dapat mengimplementasikan fitur-fitur ini:
impor acak
kelasMyGame(arcade. Jendela):
def__init__(diri, lebar, tinggi):
super().__init__(lebar, tinggi, "Permainanku")
arcade.set_background_color (arcade.color. PUTIH)
self.player = arcade. SpriteWarna Padat(50, 50, arcade.color. BIRU)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
diri.musuh = arcade. Daftar Sprite()
self.score = 0
untuk Saya di dalam jangkauan(3):
musuh = arcade. SpriteWarna Padat(50, 50, arcade.color. MERAH)
musuh.center_x = acak.randint(0, SCREEN_WIDTH)
musuh.pusat_y = acak.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
diri.musuh.tambahkan (musuh)defon_draw(diri sendiri):
arcade.start_render()
self.player.draw()
self.enemies.draw()
arcade.menggambar_teks(f"Skor: {self.score}", 10, SCREEN_HEIGHT - 30, arcade.color. HITAM, 16)
defmemperbarui(mandiri, waktu_delta):
jika arcade.check_for_collision_with_list (self.player, self.enemies):
mencetak("Permainan telah berakhir")
arcade.close_window()
kalau tidak:
self.player.update()
untuk musuh di dalam diri.musuh:
musuh.center_y -= MOVEMENT_SPEED / 2
jika musuh.center_y < 0:
musuh.center_x = acak.randint(0, SCREEN_WIDTH)
musuh.pusat_y = acak.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.score += 1
Dengan perubahan ini, game Anda sekarang memiliki banyak musuh yang muncul di posisi acak dan bergerak ke bawah. Pemain mendapatkan poin untuk setiap musuh yang berhasil dihindari, dan permainan berakhir jika pemain bertabrakan dengan musuh mana pun.
Tingkatkan Keterlibatan Pengguna Dengan Tabrakan
Dengan menambahkan fitur deteksi tabrakan dan penanganan ke game, Anda dapat menciptakan pengalaman gameplay yang lebih imersif dan menantang bagi pemain. Dari game hindari-dan-kumpulkan yang sederhana hingga platformer dan penembak yang lebih kompleks, tabrakan memainkan peran penting dalam menciptakan mekanisme permainan yang menarik dan memuaskan.
Jadi, jika Anda ingin membuat game yang lebih menarik dan imersif yang membuat pemain kembali lagi, pertimbangkan untuk memasukkan fitur deteksi tabrakan ke dalam mekanisme permainan Anda.