Jadikan pengalaman gameplay Anda lebih imersif dengan menerapkan sistem dialog.

Menerapkan sistem dialog di Pygame dapat sangat meningkatkan pengalaman interaktif game. Sistem dialog memungkinkan game menyajikan percakapan, pesan, dan pilihan kepada pemain, menciptakan gameplay yang lebih imersif dan menarik.

Pustaka Pygame menyediakan alat yang diperlukan untuk membuat antarmuka pengguna grafis (GUI) dan menangani input pengguna, menjadikannya pilihan ideal untuk mengimplementasikan sistem dialog.

Buat Game Sederhana

Sebelum memulai, pastikan Anda sudah pip diinstal pada sistem Anda. Gunakan perintah ini untuk menginstal pygame perpustakaan:

pip instal pygame

Setelah itu mulailah dengan membuat game 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.

Cuplikan kode di bawah menyiapkan jendela game, menginisialisasi properti pemain dan musuh, dan menjalankan loop game.

instagram viewer
# Impor perpustakaan yang diperlukan
impor pygame
dari pygame.locals impor *

pygame.init()

# Siapkan jendela permainan
lebar_layar, tinggi_layar = 800, 600
layar = pygame.display.set_mode((lebar_layar, tinggi_layar))
pygame.display.set_caption("Permainanku")

# Tentukan warna
HITAM = (0, 0, 0)
PUTIH = (255, 255, 255)
ABU-ABU = (128, 128, 128)

# Properti pemain
pemain_x = 400
pemain_y = 500
kecepatan_pemain = 5

# Properti musuh
musuh_x = 400
musuh_y = 100
kecepatan_musuh = 3

berlari = BENAR
jam = pygame.waktu. Jam()

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

kunci = pygame.key.get_pressed()

# Gerakan pemain
jika kunci[K_LEFT] Dan pemain_x > 0:
player_x -= kecepatan_pemain
jika tombol[K_RIGHT] Dan player_x < lebar_layar - kecepatan_pemain:
player_x += kecepatan_pemain

# Perbarui posisi musuh
musuh_y += kecepatan_musuh
jika enemy_y > screen_height:
musuh_y = -50

# Periksa tabrakan
jika pygame. Kotak (player_x, player_y, 50, 50).colliderect (pygame. Rect (musuh_x, musuh_y, 50, 50)):
# Terapkan kotak dialog di sini
lulus

screen.fill (HITAM)
pygame.draw.rect (layar, PUTIH, (player_x, player_y, 50, 50))
pygame.draw.rect (layar, PUTIH, (enemy_x, enemy_y, 50, 50))
pygame.display.flip()
jam.tik(60)

pygame.berhenti()

Di bawah ini adalah outputnya:

Buat Kotak Dialog

Untuk mengimplementasikan kotak dialog, Anda perlu menampilkannya setiap kali pemain menyentuh musuh. Tambahkan kotak_dialog variabel, yang mengontrol apakah kotak dialog harus ditampilkan atau tidak.

Di dalam lingkaran permainan, periksa tabrakan antara pemain dan musuh, dan jika ada tabrakan, atur kotak_dialog ke BENAR. Dalam kondisi di mana kotak_dialog adalah BENAR, gambar persegi panjang abu-abu di layar menggunakan pygame.draw.rect() untuk mewakili kotak dialog.

Buat file baru bernama dialog.py dan tambahkan kode dengan pembaruan di bawah ini:

# Properti kotak dialog
kotak_dialog_lebar = 400
dialog_box_height = 200
dialog_box_x = (lebar_layar - lebar_kotak_dialog) // 2
dialog_box_y = (tinggi_layar - tinggi_kotak_dialog) // 2
kotak_dialog = PALSU
# ...
ketika berlari:
untuk peristiwa di dalam pygame.event.get():
jika event.type == KELUAR:
berlari = PALSU
kunci = pygame.key.get_pressed()
# Gerakan pemain
jika kunci[K_LEFT] Dan pemain_x > 0:
player_x -= kecepatan_pemain
jika tombol[K_RIGHT] Dan player_x < lebar_layar - kecepatan_pemain:
player_x += kecepatan_pemain
# Perbarui posisi musuh
musuh_y += kecepatan_musuh
jika enemy_y > screen_height:
musuh_y = -50
# Periksa tabrakan
jika pygame. Kotak (player_x, player_y, 50, 50).colliderect (pygame. Rect (musuh_x, musuh_y, 50, 50)):
kotak_dialog = BENAR
screen.fill (HITAM)
jika kotak_dialog:
pygame.draw.rect (layar, GREY, (dialogue_box_x,
kotak_dialog_y,
dialog_box_width,
dialog_box_height))

# Tambahkan teks dan tombol dialog di sini
kalau tidak:
pygame.draw.rect (layar, PUTIH, (player_x, player_y, 50, 50))
pygame.draw.rect (layar, PUTIH, (enemy_x, enemy_y, 50, 50))
pygame.display.flip()
jam.tik(60)
pygame.berhenti()

Di bawah ini adalah outputnya:

Sekarang, untuk membuat kotak dialog lebih fungsional dan interaktif, Anda dapat menambahkan tombol dan teks.

Tambahkan Tombol Menggunakan Python GUI

Untuk menambahkan tombol ke kotak dialog, Anda dapat menggunakan pustaka Python GUI seperti Pygame GUI atau PySimpleGUI.

Instal dan impor file pygame_gui modul, lalu buat manajer Pygame GUI menggunakan pygame_gui. Manajer UI. Setelah itu, buat tombol menggunakan UIButton kelas yang disediakan oleh perpustakaan Python GUI.

Di dalam loop game, tambahkan manager.update (pygame.time.get_ticks() / 1000.0) untuk memperbarui manajer GUI, dan manager.draw_ui (layar) untuk menggambar elemen GUI di layar.

Buat file baru bernama tombol.py dan tambahkan kode dengan pembaruan di bawah ini:


impor pygame_gui

# Manajer GUI Pygame
manajer = pygame_gui. UIManager((lebar_layar, tinggi_layar))

# Buat tombol
tombol_lebar = 100
tombol_tinggi = 30
tombol_x = kotak_dialog_x + (lebar_kotak_dialog - lebar_tombol) // 2
tombol_y = kotak_dialog_y + (tinggi_kotak_dialog - tinggi_tombol) // 2
tombol = pygame_gui.elements. UIButton (relative_rect=pygame. Rect (button_x, button_y, button_width, button_height),
teks='Klik Saya',
manajer=manajer)

berlari = BENAR
jam = pygame.waktu. Jam()

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

manager.process_events (acara)

kunci = pygame.key.get_pressed()

# Periksa tabrakan
jika pygame. Kotak (player_x, player_y, 50, 50).colliderect (pygame. Rect (musuh_x, musuh_y, 50, 50)):
kotak_dialog = BENAR

screen.fill (HITAM)

jika kotak_dialog:
pygame.draw.rect (layar, GREY, (dialogue_box_x,
kotak_dialog_y,
dialog_box_width,
dialog_box_height))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (layar)
kalau tidak:
pygame.draw.rect (layar, PUTIH, (player_x, player_y, 50, 50))
pygame.draw.rect (layar, PUTIH, (enemy_x, enemy_y, 50, 50))

pygame.display.flip()
jam.tik(60)

pygame.berhenti()

Di bawah ini adalah outputnya:

Dengan perubahan ini, tombol sekarang akan terlihat di dalam kotak dialog saat muncul.

Tambahkan Teks Menggunakan Python GUI

Untuk menampilkan teks khusus di kotak dialog, Anda dapat menggunakan fungsionalitas teks yang disediakan oleh pustaka Python GUI.

Tentukan properti font menggunakan pygame.font. Font(). Membuat teks variabel dengan konten yang diinginkan, lalu merendernya menggunakan font dan warna yang ditentukan.

Buat file baru bernama text.py dan tambahkan kode dengan pembaruan di bawah ini:


# Inisialisasi manajer GUI Pygame
manajer = pygame_gui. UIManager((lebar_layar, tinggi_layar))

# Tentukan properti font
font = pygame.font. Fon(Tidak ada, 24)
text_color = HITAM

# ...

ketika berlari:
# ...

jika kotak_dialog:
pygame.draw.rect (layar, GREY, (dialogue_box_x,
kotak_dialog_y,
dialog_box_width,
dialog_box_height))

# Tambahkan teks ke kotak dialog
teks = "Halo, selamat datang di game!"
rendered_text = font.render (teks, BENAR, warna teks)
text_rect = rendered_text.get_rect (center=(dialogue_box_x + dialog_box_width // 2,
kotak_dialog_y + tinggi_kotak_dialog // 2))

screen.blit (rendered_text, text_rect)

Di bawah ini adalah outputnya:

Termasuk Fitur Tambahan

Selain tombol dan teks, ada beberapa fitur lain yang bisa Anda pertimbangkan untuk ditambahkan ke sistem dialog Anda di Pygame. Berikut beberapa contoh lainnya:

Emosi Karakter

Menampilkan emosi atau ekspresi wajah karakter selama dialog untuk menyampaikan suasana hati atau reaksi mereka. Ini dapat dicapai dengan menggunakan sprite animasi atau overlay gambar yang berubah berdasarkan konteks percakapan.

Dialog Bersyarat

Gunakan pernyataan bersyarat untuk memicu dialog tertentu berdasarkan kriteria tertentu, seperti progres pemain, pilihan sebelumnya, atau peristiwa dalam game. Ini menambah kedalaman dan interaksi yang dipersonalisasi berdasarkan tindakan pemain.

Sulih suara

Tingkatkan perendaman sistem dialog dengan memasukkan akting suara untuk dialog karakter. Putar klip audio di Pygame yang cocok dengan teks yang ditampilkan di kotak dialog untuk memberikan karakter suara yang berbeda.

Dengan menggabungkan fitur tambahan ini, Anda dapat membuat sistem dialog yang lebih dinamis dan menarik yang meningkatkan pencelupan pemain dan memberikan pengalaman permainan yang unik.

Praktik Terbaik untuk Menambahkan Sistem Dialog

Saat menerapkan sistem dialog di Pygame, penting untuk mengikuti praktik terbaik tertentu untuk memastikan efisiensi, pemeliharaan, dan pengalaman pemain yang mulus. Berikut adalah beberapa praktik terbaik tambahan untuk dipertimbangkan:

Gunakan Desain Berbasis Data

Simpan konten dialog, termasuk teks, informasi pembicara, dan opsi dialog, dalam file data eksternal (mis., JSON, XML). Ini memungkinkan modifikasi, pelokalan, dan pengelolaan konten dialog dengan mudah tanpa memerlukan perubahan kode.

Terapkan Manajer Dialog

Buat kelas atau modul pengelola dialog khusus yang menangani logika untuk mengelola interaksi dialog. Ini membantu menjaga kode tetap teratur dan memungkinkan pemeliharaan dan ekstensibilitas yang lebih mudah.

Playtesting dan Balancing

Mainkan secara teratur dan seimbangkan sistem dialog untuk memastikan bahwa dialog mengalir secara alami, pilihan memiliki konsekuensi yang berarti, dan kecepatannya selaras dengan keseluruhan pengalaman bermain game. Kumpulkan umpan balik dari pemain dan ulangi konten dan struktur dialog untuk meningkatkan keterlibatan pemain.

Dukungan Lokalisasi

Rancang sistem dialog dengan mempertimbangkan lokalisasi sejak awal. Pisahkan string teks dari kode dan gunakan file bahasa atau pustaka pelokalan untuk mendukung banyak bahasa. Ini memungkinkan terjemahan dan pelokalan konten dialog yang lebih mudah.

Dengan mengikuti praktik terbaik ini, Anda dapat memastikan bahwa sistem dialog Anda dirancang dengan baik, efisien, dan fleksibel, memungkinkan pemeliharaan dan pembaruan yang lebih mudah seiring perkembangan game Anda.

Jadikan Game Lebih Menarik Dengan Sistem Dialog

Menambahkan sistem dialog ke game Anda dapat membuatnya lebih menarik dengan memungkinkan pemain berinteraksi dengan karakter non-pemain (NPC), mengungkap alur cerita, membuat pilihan, dan mendapatkan informasi berharga.

Ingatlah untuk merancang struktur dialog dengan cermat, gunakan pendekatan modular, dan pertimbangkan untuk mengintegrasikan koleksi dan level untuk lebih memperkaya pengalaman pemain.