Bahkan musuh yang paling dasar sekalipun perlu bergerak, jadi dapatkan inspirasi tentang cara menangani pengkodean di balik pola serangan.

Salah satu elemen kunci dari video game yang hebat adalah kehadiran musuh. Baik itu zombie, alien, atau pemain lain, musuh dapat membuat game menjadi lebih menantang dan mengasyikkan.

Di PyGame, Anda dapat dengan mudah memprogram berbagai perilaku pergerakan musuh, seperti mengikuti pemain, bergerak secara acak, atau mengambil jalur tertentu.

Membuat Game Sederhana

Mulailah dengan membuat game sederhana dimana pemain akan bergerak secara horizontal dan vertikal. Jika pemain menyentuh musuh, pemain akan mati.

Anda dapat menemukan kode lengkapnya di sini repo GitHub.

Mulailah dengan mengimpor modul PyGame yang diperlukan dan menginisialisasinya.

impor pygame

pygame.init()

Selanjutnya, atur layar dan buat objek pemain dan musuh menggunakan pygame. Persegi() fungsi.

# Siapkan layar
layar = pygame.display.set_mode((800, 600))

# Atur warnanya
hitam = (0, 0, 0)
putih = (255, 255, 255)

instagram viewer

# Siapkan persegi panjang pemain dan objek musuh
pemain = pygame. Persegi panjang(350, 500, 50, 50)
musuh = pygame. Persegi panjang(350, 0, 50, 50)

Setelah itu, buat game loop yang berjalan hingga pemain bertabrakan dengan musuh atau keluar dari game. Juga, periksa tabrakan antara pemain dan musuh, dan gambar objek game di layar.

# Siapkan loop game
berlari = BENAR

ketika berlari:
untuk peristiwa di dalam pygame.event.get():
jika event.type == pygame. BERHENTI:
berlari = PALSU

# Isi layar dengan warna putih
screen.fill (putih)

# Pindahkan persegi panjang pemain
kunci = pygame.key.get_pressed()

jika kunci[pygame. K_LEFT]:
pemain.x -= 5

jika kunci[pygame. K_KANAN]:
pemain.x += 5

jika kunci[pygame. K_UP]:
pemain.y -= 5

jika kunci[pygame. K_DOWN]:
pemain.y += 5

# Periksa tabrakan antara pemain dan musuh
jika player.colliderect (musuh):
berlari = PALSU

# Gambar persegi panjang pemain dan objek musuh di layar
pygame.draw.rect (layar, hitam, pemutar)
pygame.draw.rect (layar, hitam, musuh)

# Perbarui layar
pygame.display.update()

# Keluar dari permainan
pygame.berhenti()

Musuh Langsung Menuju Pemain

Untuk menggerakkan musuh ke arah pemain, Anda perlu menghitung jarak antara keduanya, yang dapat Anda lakukan dengan menggunakan teorema Pythagoras. Anda kemudian dapat menggunakan jarak ini untuk menentukan kecepatan dan arah gerakan musuh ke arah pemain.

Untuk mengimplementasikannya, buat variabel kecepatan dan gunakan untuk memperbarui posisi musuh ke arah pemain.

# Hitung jarak antara musuh dan pemain
jarak_x = pemain.x - musuh.x
distance_y = pemain.y - musuh.y
jarak = (jarak_x ** 2 + jarak_y ** 2) ** 0.5

# Pindahkan musuh ke arah pemain
kecepatan = 2

jika jarak != 0:
musuh.x += kecepatan * jarak_x / jarak
musuh.y += kecepatan * jarak_y / jarak

Acak Gerakan Musuh di Layar

Anda juga bisa membuat musuh bergerak secara acak di layar untuk membuat permainan lebih menantang.

Untuk melakukan ini, hasilkan arah acak bagi musuh untuk bergerak menggunakan modul acak di Python. Menggunakan pilihan() berfungsi untuk memilih arah secara acak dari daftar arah yang dapat dilalui musuh. Kemudian perbarui posisi musuh berdasarkan arah yang dipilih.

impor acak

# Pindahkan musuh secara acak di layar
arah = acak.pilihan(['kiri', 'Kanan', 'ke atas', 'turun'])

jika arah == 'kiri':
musuh.x -= 5
elif arah == 'Kanan':
musuh.x += 5
elif arah == 'ke atas':
musuh.y -= 5
elif arah == 'turun':
musuh.y += 5

Gerakan Musuh Berbasis Kedekatan

Dalam beberapa game, musuh hanya bergerak saat pemain berada di dekat mereka. Anda dapat mencapainya dengan menghitung jarak antara musuh dan pemain.

Jika jaraknya kurang dari nilai tertentu, buat musuh bergerak ke arah pemain. Ini membuat permainan lebih strategis dan memaksa pemain untuk lebih berhati-hati dalam bergerak.

# Pindahkan musuh ke arah pemain jika pemain sudah dekat
kecepatan = 2

jika jarak < 300:
jika jarak != 0:
musuh.x += kecepatan * jarak_x / jarak
musuh.y += kecepatan * jarak_y / jarak

Musuh Menghindari Serangan Pemain

Kamu juga bisa membuat musuh mengelak dari pergerakan pemain. Musuh akan berusaha menghindari pemain dengan bergerak tegak lurus dengan posisi pemain.

Untuk mencapainya, hitung vektor satuan ke arah pemain menggunakan distance_x dan distance_y yang dihitung sebelumnya. Kemudian, hitung vektor tegak lurus untuk menggerakkan musuh tegak lurus terhadap vektor satuan. Terakhir, hitung perkalian titik vektor tegak lurus dan vektor satuan untuk menentukan arah pergerakan musuh.

Untuk mengimplementasikannya, tambahkan potongan kode di bawah ini setelah penghitungan jarak.

kecepatan = 2

jika jarak < 400:
jika jarak != 0:
# Hitung vektor satuan ke arah pemain
unit_vector_x = jarak_x / jarak
unit_vector_y = jarak_y / jarak

# Hitung vektor tegak lurus
tegak lurus_vector_x = -unit_vector_y
tegak lurus_vektor_y = satuan_vektor_x

# Hitung produk titik dari vektor tegak lurus dan
# vektor satuan
dot_product = tegak lurus_vector_x * unit_vector_x
+ tegak lurus_vector_y * unit_vector_y

# Pindahkan musuh tegak lurus ke vektor satuan
jika dot_produk > 0:
musuh.x += kecepatan * tegak lurus_vektor_x
musuh.y += kecepatan * tegak lurus_vektor_y
kalau tidak:
musuh.x -= kecepatan * tegak lurus_vektor_x
musuh.y -= kecepatan * tegak lurus_vektor_y

Dengan modifikasi tersebut, musuh akan berusaha untuk tidak terlalu dekat dengan pemain. Ini membuat permainan lebih menantang dan menyenangkan untuk dimainkan.

Menambahkan Fitur Ekstra

Anda juga dapat menambahkan lebih banyak fitur dalam game Anda untuk membuatnya lebih menantang. Misalnya, Anda dapat menambahkan banyak musuh yang bergerak secara acak di layar, rintangan yang harus dihindari pemain saat bergerak, power-up yang meningkatkan kemampuan pemain, dan sebagainya.

Kamu bisa gunakan modul Jam untuk mengatur frekuensi gambar permainan Anda dan membuatnya berjalan lebih lancar. Di bawah ini implementasinya:

# Tambahkan banyak musuh yang bergerak secara acak di layar
musuh = []

untuk Saya di dalam jangkauan(5):
musuh = pygame. Rect (random.randint(0, 750), acak.randint(0, 550), 50,
50)

musuh.tambahkan (musuh)

# Tambahkan rintangan yang harus dihindari pemain
rintangan = pygame. Persegi panjang(200, 250, 50, 50)

# Siapkan loop game
jam = pygame.waktu. Jam()
berlari = BENAR

ketika berlari:
untuk peristiwa di dalam pygame.event.get():
jika event.type == pygame. BERHENTI:
berlari = PALSU

# Isi layar dengan warna putih
screen.fill (putih)

# Pindahkan persegi panjang pemain
kunci = pygame.key.get_pressed()

jika kunci[pygame. K_LEFT]:
pemain.x -= 5
jika kunci[pygame. K_KANAN]:
pemain.x += 5
jika kunci[pygame. K_UP]:
pemain.y -= 5
jika kunci[pygame. K_DOWN]:
pemain.y += 5

# Pindahkan musuh secara acak di layar
untuk musuh di dalam musuh:
arah = acak.pilihan(['kiri', 'Kanan', 'ke atas', 'turun'])

jika arah == 'kiri':
musuh.x -= 5
elif arah == 'Kanan':
musuh.x += 5
elif arah == 'ke atas':
musuh.y -= 5
elif arah == 'turun':
musuh.y += 5

# Periksa tabrakan antara pemain dan musuh
jika player.colliderect (musuh):
berlari = PALSU

# Gambar persegi panjang pemain, objek musuh, dan penghalang
# layar
pygame.draw.rect (layar, hitam, pemutar)

untuk musuh di dalam musuh:
pygame.draw.rect (layar, hitam, musuh)

pygame.draw.rect (layar, hitam, rintangan)

# Perbarui layar
pygame.display.update()

# Tetapkan kecepatan bingkai game
jam.tik(60)

# Keluar dari permainan
pygame.berhenti()

Tingkatkan Pengalaman Gaming Anda Dengan Musuh

Dengan menambahkan musuh dengan gerakan, perilaku, dan kemampuan unik, Anda dapat membuat game Anda lebih menarik dan menantang bagi pemain. Pemain perlu menyusun strategi dan menyesuaikan permainan mereka untuk mengatasi berbagai jenis musuh. Ini dapat meningkatkan keterlibatan, meningkatkan nilai replay, dan membuat pemain kembali lagi.