Jadikan proyek Pygame Anda lebih menarik dengan mengintegrasikan power-up dan koleksi.
Power-up dan barang koleksi memainkan peran penting dalam meningkatkan gameplay dan membuat game lebih menarik. Dengan menambahkan elemen ini ke proyek Pygame Anda, Anda dapat membuat tantangan unik, meningkatkan motivasi pemain, dan memberikan peluang untuk pengambilan keputusan strategis.
Untungnya, Pygame menyediakan cara yang fleksibel untuk mengimplementasikan power-up dan koleksi dengan relatif mudah.
Buat Game Sederhana
Sebelum memulai, pastikan Anda sudah pip diinstal pada sistem Anda. Gunakan perintah ini untuk menginstal pygame perpustakaan:
pip instal pygame
Mulailah dengan menyiapkan permainan sederhana dimana pemain bisa bergerak ke kiri dan ke kanan sambil menghindari musuh.
Kode yang digunakan dalam artikel ini tersedia di sini repositori GitHub dan gratis untuk Anda gunakan di bawah lisensi MIT.
Ini akan berfungsi sebagai dasar untuk menambahkan power-up dan koleksi. Berikut ini cuplikan kode contoh:
impor pygame
impor acak# Inisialisasi Pygame
pygame.init()# Siapkan jendela permainan
lebar_jendela = 800
jendela_tinggi = 600
jendela = pygame.display.set_mode((lebar_jendela, tinggi_jendela))
pygame.display.set_caption("Permainanku")# Siapkan pemain
lebar_pemain = 50
tinggi_pemain = 50
player_x = (lebar_jendela - lebar_pemain) // 2
pemain_y = tinggi_jendela - tinggi_pemain - 10
kecepatan_pemain = 5# Siapkan musuh
lebar_musuh = 50
musuh_tinggi = 50
musuh_x = acak.randint(0, lebar_jendela - lebar_musuh)
musuh_y = 50
kecepatan_musuh = 3# Putaran permainan
berlari = BENAR
ketika berlari:
untuk peristiwa di dalam pygame.event.get():
jika event.type == pygame. BERHENTI:
berlari = PALSU# Gerakan pemain
kunci = pygame.key.get_pressed()
jika kunci[pygame. K_LEFT] Dan pemain_x > 0:
player_x -= kecepatan_pemain
jika kunci[pygame. K_KANAN] Dan player_x < lebar_jendela - lebar_pemain:
player_x += kecepatan_pemain# Gerakan musuh
musuh_y += kecepatan_musuh
jika enemy_y > window_height:
musuh_x = acak.randint(0, lebar_jendela - lebar_musuh)
musuh_y = 0# Deteksi tabrakan
jika (player_x < musuh_x + lebar musuh) Dan \
(player_x + lebar_pemain > musuh_x) Dan \
(player_y < musuh_y + ketinggian musuh) Dan \
(player_y + player_height > enemy_y):
berlari = PALSU# Bersihkan layar
jendela.isi((0, 0, 0))player_pos = (player_x, player_y,
lebar_pemain, tinggi_pemain)
musuh_pos = (musuh_x, musuh_y,
musuh_lebar, musuh_tinggi)# Gambar pemain
pygame.draw.rect (jendela, (255, 255, 255), pemain_pos)# Gambar musuh
pygame.draw.rect (jendela, (255, 0, 0), musuh_pos)# Perbarui tampilan
pygame.display.update()
# Keluar dari permainan
pygame.berhenti()
Di bawah ini adalah outputnya:
Buat Koleksi
Untuk membuat barang koleksi, tambahkan objek yang, setelah bertabrakan dengan pemain, menghilang dan menambahkan 10 poin ke skor. Untuk ini, Anda harus periksa tabrakan antara pemain dan koleksi. Berikut adalah versi terbaru dari kode yang menyertakan barang koleksi. Buat file baru bernama koleksi.py dan tambahkan kode dengan pembaruan di bawah ini:
# Siapkan koleksi
koleksi_lebar = 30
koleksi_tinggi = 30
collectible_x = acak.randint(0, lebar_jendela - lebar_koleksi)
tertagih_y = 50# Siapkan skor
skor = 0
font = pygame.font. Fon(Tidak ada, 36)# ...
# Deteksi tabrakan dengan koleksi
jika (player_x < collectible_x + collectible_width) Dan \
(player_x + player_width > collectible_x) Dan \
(player_y < collectible_y + collectible_height) Dan \
(player_y + player_height > collectible_y):
collectible_x = acak.randint(0, lebar_jendela - lebar_koleksi)
tertagih_y = 50
skor += 10
# ...collectible_pos = (collectible_x, collectible_y)
# Menggambar koleksi
pygame.draw.circle (jendela, (0, 255, 0), pos_koleksi, lebar_koleksi)
# Skor seri
skor_teks = font.render("Skor:" + str (skor), BENAR, (255, 255, 255))
window.blit (teks_skor, (10, 10))
Di bawah ini adalah outputnya:
Buat Power-Up
Sekarang, Anda dapat memperkenalkan power-up ke game Anda dengan logika berikut. Saat pemain bertabrakan dengan objek power-up, power-up akan hilang. Jika pemain bertabrakan dengan musuh saat power-up aktif, musuh akan tersingkir. Buat file baru bernama powerups.py dan tambahkan kode dengan pembaruan di bawah ini:
# Siapkan power-up
powerup_width = 40
powerup_height = 40
powerup_x = acak.randint(0, lebar_jendela - lebar_daya)
powerup_y = 50
perisai_aktif = PALSU
perisai_timer = 0# ...
# Deteksi tabrakan dengan power-up
collision_powerup = (player_x < powerup_x + powerup_width) Dan \
(player_x + lebar_pemain > powerup_x) Dan \
(player_y < powerup_y + powerup_height) Dan \
(player_y + player_height > powerup_y)jika collision_powerup:
powerup_x = acak.randint(0, lebar_jendela - lebar_daya)
powerup_y = 50
perisai_aktif = BENAR
perisai_timer = pygame.time.get_ticks()# ...
# Periksa pengatur waktu perisai
jika perisai_aktif:
saat_waktu = pygame.waktu.get_ticks()
jika saat_waktu - perisai_timer > 5000:
perisai_aktif = PALSU# ...
# Tentukan simpul segitiga
x1 = powerup_x + powerup_width / 2
y1 = daya_y
x2 = daya_x
y2 = powerup_y + powerup_height
x3 = powerup_x + powerup_width
y3 = powerup_y + powerup_height# Gambar segitiga
pygame.draw.polygon (jendela, (255, 255, 0), [(x1, y1), (x2, y2), (x3, y3)])# ...
# Deteksi tabrakan dengan perisai aktif
collision_shield = perisai_aktif Dan \
(player_x < musuh_x + lebar musuh) Dan \
(player_x + lebar_pemain > musuh_x) Dan \
(player_y < musuh_y + ketinggian musuh) Dan \
(player_y + player_height > enemy_y)
jika tabrakan_perisai:
musuh_x = acak.randint(0, lebar_jendela - lebar_musuh)
musuh_y = 0
Di bawah ini adalah outputnya:
Mengatur Timer untuk Penyalaan
Untuk membuat power-up menghilang setelah waktu tertentu dan respawn di lokasi acak, Anda dapat memperkenalkan pengatur waktu. Buat file baru bernama timer.py dan tambahkan kode dengan pembaruan di bawah ini:
# Atur timer untuk power-up respawn
powerup_respawn_timer = 0# Periksa pengatur waktu penyalaan
jikabukan perisai_aktif:
saat_waktu = pygame.waktu.get_ticks()
jika saat_waktu - powerup_respawn_timer > 3000:
powerup_x = acak.randint(0, lebar_jendela - lebar_daya)
powerup_y = 50
powerup_respawn_timer = pygame.time.get_ticks()
Memvisualisasikan Pengatur Waktu Penyalaan
Untuk memberikan representasi visual dari pengatur waktu penyalaan, Anda dapat menggambar objek berbentuk persegi panjang yang secara bertahap habis seiring waktu. Buat file baru bernama bar.py dan tambahkan kode dengan pembaruan di bawah ini:
# Siapkan bilah pengaktifan
lebar_batang = 100
bar_height = 10
bar_x = lebar_jendela - lebar_bar - 10
bar_y = 10# ...
# Hitung progres penghitung waktu power-up
jika perisai_aktif:
saat_waktu = pygame.waktu.get_ticks()
waktu_berlalu = waktu_saat ini - pewaktu_perisai
timer_kemajuan = (5000 - waktu berlalu) / 5000
# Gambar bilah power-up
bar_rect = pygame. Rect (bar_x, bar_y, bar_width * timer_progress, bar_height)
pygame.draw.rect (jendela, (0, 255, 255), bar_rect)
Di bawah ini adalah outputnya:
Praktik Terbaik untuk Menambahkan Power-Up dan Barang Koleksi
Dalam hal menggabungkan power-up dan barang koleksi ke dalam proyek Pygame Anda, mengikuti praktik terbaik dapat sangat meningkatkan pengalaman bermain game secara keseluruhan. Pertimbangkan panduan berikut untuk memastikan implementasi yang seimbang dan menarik:
Perbedaan Visual
Sangat penting untuk membuat perbedaan visual yang jelas antara power-up, barang koleksi, dan elemen game lainnya. Gunakan warna, bentuk, atau simbol yang berbeda agar mudah dikenali oleh pemain. Kejernihan visual ini membantu pemain mengidentifikasi dan memprioritaskan target mereka, menjadikan gameplay lebih intuitif dan menyenangkan.
Keseimbangan dan Tantangan
Berusaha keras untuk mempertahankan pengalaman gameplay yang seimbang dan menantang. Sesuaikan frekuensi power-up dan spawn yang dapat dikoleksi untuk menghindari pemain yang kewalahan atau membuat game terlalu mudah. Menemukan keseimbangan yang tepat membutuhkan pengujian dan iterasi yang cermat.
Pertimbangkan umpan balik pemain dan sesuaikan tingkat pemijahan untuk menciptakan pengalaman yang menarik dan memuaskan.
Umpan Balik dan Hadiah
Memberikan umpan balik dan hadiah langsung saat pemain mengumpulkan power-up atau barang koleksi meningkatkan rasa pencapaian dan motivasi. Pertimbangkan untuk menambahkan efek visual, isyarat suara, atau animasi untuk menunjukkan akuisisi yang berhasil.
Menghadiahi pemain dengan poin, nyawa ekstra, atau membuka kemampuan khusus menambah kegembiraan lebih lanjut dan mendorong pemain untuk secara aktif mencari elemen-elemen ini.
Timer dan Durasi
Terapkan penghitung waktu dan durasi untuk power-up untuk menjaga keadilan dan pengambilan keputusan strategis. Power-up harus memiliki durasi terbatas untuk mencegah pemain menjadi terlalu kuat untuk waktu yang lama.
Menyeimbangkan durasi sangat penting, karena durasi yang terlalu singkat mungkin terasa kurang memuaskan, sementara durasi yang terlalu lama dapat membuat permainan tidak seimbang. Uji durasi yang berbeda untuk menemukan sweet spot untuk setiap power-up.
Uji dan Ulangi
Playtesting adalah langkah penting dalam proses pengembangan. Uji game Anda secara menyeluruh dengan berbagai konfigurasi dan tingkat kesulitan untuk memastikan power-up dan koleksi seimbang dan terintegrasi dengan tepat ke dalam gameplay.
Perhatikan umpan balik pemain dan ulangi berdasarkan pengalaman mereka. Pendekatan berulang ini memungkinkan Anda menyempurnakan sistem, menciptakan pengalaman bermain yang menyenangkan dan menawan.
Jadikan Game Lebih Menarik Dengan Koleksi
Menambahkan power-up dan barang koleksi ke proyek Pygame Anda dapat secara signifikan meningkatkan pengalaman bermain game secara keseluruhan. Elemen-elemen ini memperkenalkan pilihan strategis, memberi penghargaan kepada pemain, dan meningkatkan motivasi. Koleksi dapat digunakan untuk membuka fitur, level, atau kemampuan baru, sementara power-up memberikan keuntungan sementara dan mekanisme permainan yang unik.
Dengan merancang dan menerapkan fitur-fitur ini dengan hati-hati, Anda dapat membuat game yang lebih imersif, menantang, dan menyenangkan bagi para pemain.