Pembaca seperti Anda membantu mendukung MUO. Saat Anda melakukan pembelian menggunakan tautan di situs kami, kami dapat memperoleh komisi afiliasi. Baca selengkapnya.

PyGame adalah perpustakaan populer untuk membuat proyek dengan Python, dan menyediakan seperangkat alat yang ampuh untuk pengembangan game. Pada artikel ini, Anda akan mempelajari cara membuat menu mulai dan layar game over untuk game sederhana menggunakan PyGame.

Membuat Game Sederhana

Sebelum membuat start menu dan game over screen, mari kita buat dulu game sederhananya. Dalam game ini, Anda akan mengontrol karakter dengan tombol panah dan mencoba menghindari rintangan. Agar tetap sederhana, cobalah untuk tidak menggunakan gambar apa pun.

Untuk memulai, Anda perlu mengimpor modul yang diperlukan. Anda akan menggunakan pygame modul untuk mengakses fungsi PyGame. Untuk menginstal modul, Anda bisa gunakan manajer paket pip:

pip Install pygame

Sekarang modul kita siap digunakan, mari buat game sederhana dengan pemain yang bisa bergerak ke kiri atau ke kanan menggunakan tombol panah dan rintangan. Jika Anda bertabrakan dengan rintangan tersebut, permainan akan berakhir. Berikut kode untuk hal yang sama:

instagram viewer

impor pygame
pygame.init()

lebar_layar = 750
layar_tinggi = 450
layar = pygame.display.set_mode((lebar_layar, tinggi_layar))

hambatan_x = 400
hambatan_y = 400
hambatan_lebar = 40
rintangan_tinggi = 40
pemain_x = 200
pemain_y = 400
lebar_pemain = 20
tinggi_pemain = 20

ketikaBENAR:

untukperistiwadi dalampygame.peristiwa.mendapatkan():

jika event.type == pygame. BERHENTI:
pygame.berhenti()
berhenti()


kunci = pygame.key.get_pressed()
jikakunci[pygame. K_LEFT]:
pemain_x -= 5
jikakunci[pygame. K_KANAN]:
pemain_x += 5


jika player_x + player_width > obstacle_x dan player_x < hambatan_x + hambatan_lebarDanplayer_y + tinggi_pemain > obstacle_y dan player_y < hambatan_y + rintangan_tinggi:
game_over = BENAR


layar.mengisi((0, 0, 0))
pygame.menggambar.tepat(layar, (255, 0, 0), (hambatan_x, hambatan_y, hambatan_lebar, rintangan_tinggi))
pygame.menggambar.tepat(layar, (0, 255, 0), (pemain_x, player_y, lebar_pemain, tinggi_pemain))
pygame.menampilkan.memperbarui()

Pada kode di atas, Anda menyiapkan jendela game dan mendeklarasikan variabel game. Anda juga menangani input pengguna dan menggambar elemen ke layar.

Membuat Menu Mulai

Sekarang Anda memiliki permainan dasar, mari buat menu mulai. Untuk melakukannya, Anda perlu mendeklarasikan variabel global untuk status game. Variabel ini akan melacak status game saat ini, seperti apakah menu mulai aktif atau game sedang berjalan. Anda perlu menambahkan variabel ini di awal kode permainan Anda:

status_permainan = "mulai_menu"

Selanjutnya, Anda akan menambahkan fungsi untuk menggambar menu mulai ke layar. Anda dapat menggunakan fungsi PyGame untuk menggambar teks, tombol, dan elemen lain di layar.

defdraw_start_menu():
layar.mengisi((0, 0, 0))
font = pygame.font. SysFont('Arial', 40)
judul = font.render('Permainan Saya', BENAR, (255, 255, 255))
tombol_mulai = font.render('Awal', BENAR, (255, 255, 255))
screen.blit (judul, (lebar_layar/2 - judul.get_lebar()/2, tinggi_layar/2 - judul.get_tinggi()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.menampilkan.memperbarui()

Anda kemudian dapat menambahkan draw_start_menu() fungsi ke loop permainan utama.

ketikaBENAR: 

untukperistiwadi dalampygame.peristiwa.mendapatkan():
jika event.type == pygame. BERHENTI:
pygame.berhenti()
berhenti()

jika status_permainan == "mulai_menu":
draw_start_menu()

jika status_permainan == "permainan":
kunci = pygame.key.get_pressed()
# sisa kode

Sekarang, menu mulai akan ditarik ke layar. Langkah terakhir adalah menangani input pengguna. Kamu bisa menambahkan pernyataan if ke loop permainan utama untuk memeriksa apakah pengguna telah menekan tombol mulai.

jika status_permainan == "mulai_menu":
kunci = pygame.key.get_pressed()
jikakunci[pygame. K_SPACE]:
pemain_x = 200
pemain_y = 400
status_permainan = "permainan"
game_over = PALSU

Dengan kode ini, game akan dimulai saat pengguna menekan tombol start.

Menerapkan Layar Game Over

Sekarang setelah Anda memiliki menu mulai, mari buat game over screen. Fungsi ini harus menampilkan skor akhir dan pesan game-over.

defdraw_game_over_screen():
layar.mengisi((0, 0, 0))
font = pygame.font. SysFont('Arial', 40)
judul = font.render('Permainan telah berakhir', BENAR, (255, 255, 255))
restart_button = font.render('R - Mulai Ulang', BENAR, (255, 255, 255))
tombol_keluar = font.render('Q - Berhenti', BENAR, (255, 255, 255))
screen.blit (judul, (lebar_layar/2 - judul.get_lebar()/2, tinggi_layar/2 - judul.get_tinggi()/3))
screen.blit (restart_button, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
pygame.menampilkan.memperbarui()

Anda kemudian dapat menambahkan fungsi ini ke loop permainan utama.

jika status_permainan == "mulai_menu":
draw_start_menu()
jika status_permainan == "permainan telah berakhir":
draw_game_over_screen()

jika status_permainan == "permainan":
kunci = pygame.key.get_pressed()
jikakunci[pygame. K_LEFT]:
pemain_x -= 5
jikakunci[pygame. K_KANAN]:
pemain_x += 5

jika player_x + player_width > obstacle_x dan player_x < hambatan_x + hambatan_lebarDanplayer_y + tinggi_pemain > obstacle_y dan player_y < hambatan_y + rintangan_tinggi:
game_over = BENAR
status_permainan = "permainan telah berakhir"

Terakhir, Anda perlu menangani masukan pengguna untuk menangani pilihan pengguna. Anda dapat menambahkan pernyataan if ke loop permainan utama untuk memeriksa apakah pengguna telah menekan tombol mulai ulang atau keluar.

jika status_permainan == "mulai_menu":
kunci = pygame.key.get_pressed()
jikakunci[pygame. K_SPACE]:
status_permainan = "permainan"
pemain_x = 200
pemain_y = 400
status_permainan = "permainan"
game_over = PALSU

jika status_permainan == "permainan telah berakhir":
kunci = pygame.key.get_pressed()
jikakunci[pygame. K_r]:
status_permainan = "mulai_menu"
jikakunci[pygame. K_q]:
pygame.berhenti()
berhenti()

Dengan kode ini, game akan restart saat pengguna menekan tombol 'R' dan berhenti saat pengguna menekan tombol 'Q' di keyboard.

Di bawah ini adalah kode lengkapnya:

impor pygame

pygame.init()
lebar_layar = 750
layar_tinggi = 450
layar = pygame.display.set_mode((lebar_layar, tinggi_layar))
hambatan_x = 400
hambatan_y = 400
hambatan_lebar = 40
rintangan_tinggi = 40
pemain_x = 200
pemain_y = 400
lebar_pemain = 20
tinggi_pemain = 20
status_permainan = "mulai_menu"

defdraw_start_menu():
layar.mengisi((0, 0, 0))
font = pygame.font. SysFont('Arial', 40)
judul = font.render('Permainan Saya', BENAR, (255, 255, 255))
tombol_mulai = font.render('Awal', BENAR, (255, 255, 255))
screen.blit (judul, (lebar_layar/2 - judul.get_lebar()/2, tinggi_layar/2 - judul.get_tinggi()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.menampilkan.memperbarui()

defdraw_game_over_screen():
layar.mengisi((0, 0, 0))
font = pygame.font. SysFont('Arial', 40)
judul = font.render('Permainan telah berakhir', BENAR, (255, 255, 255))
restart_button = font.render('R - Mulai Ulang', BENAR, (255, 255, 255))
tombol_keluar = font.render('Q - Berhenti', BENAR, (255, 255, 255))
screen.blit (judul, (lebar_layar/2 - judul.get_lebar()/2, tinggi_layar/2 - judul.get_tinggi()/3))
screen.blit (restart_button, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
pygame.menampilkan.memperbarui()

ketikaBENAR:
untukperistiwadi dalampygame.peristiwa.mendapatkan():
jika event.type == pygame. BERHENTI:
pygame.berhenti()
berhenti()
jika status_permainan == "mulai_menu":
draw_start_menu()
kunci = pygame.key.get_pressed()
jikakunci[pygame. K_SPACE]:
pemain_x = 200
pemain_y = 400
status_permainan = "permainan"
game_over = PALSU
elif status_permainan == "permainan telah berakhir":
draw_game_over_screen()
kunci = pygame.key.get_pressed()
jikakunci[pygame. K_r]:
status_permainan = "mulai_menu"
jikakunci[pygame. K_q]:
pygame.berhenti()
berhenti()

elif status_permainan == "permainan":
kunci = pygame.key.get_pressed()
jikakunci[pygame. K_LEFT]:
pemain_x -= 5
jikakunci[pygame. K_KANAN]:
pemain_x += 5

jika player_x + player_width > obstacle_x dan player_x < hambatan_x + hambatan_lebarDanplayer_y + tinggi_pemain > obstacle_y dan player_y < hambatan_y + rintangan_tinggi:
game_over = BENAR
status_permainan = "permainan telah berakhir"

layar.mengisi((0, 0, 0))
pygame.menggambar.tepat(layar, (255, 0, 0), (hambatan_x, hambatan_y, hambatan_lebar, rintangan_tinggi))
pygame.menggambar.tepat(layar, (0, 255, 0), (pemain_x, player_y, lebar_pemain, tinggi_pemain))
pygame.menampilkan.memperbarui()

elif permainan telah berakhir:
status_permainan = "permainan telah berakhir"
game_over = PALSU

Kode dimulai dengan mengimpor pygame modul dan menginisialisasinya. Itu kemudian membuat jendela permainan dan mendeklarasikan variabel permainan yang diperlukan, termasuk posisi pemain dan rintangan, dimensi, dan status permainan.

Kode mendefinisikan dua fungsi, draw_start_menu() Dan draw_game_over_screen(), untuk menggambar menu mulai dan layar game over. Fungsi ini menggunakan fungsi PyGame untuk menggambar teks dan tombol ke layar.

Putaran permainan utama dimulai dengan menangani peristiwa dan memeriksa status permainan. Jika status permainannya adalah start_menu, menu mulai ditarik ke layar. Jika status permainannya adalah permainan telah berakhir, layar game-over ditarik ke layar. Jika status game adalah hal lain, game memperbarui dan menarik pemain dan rintangan ke layar.

Gim diperbarui dengan menangani penekanan tombol dan memeriksa tabrakan antara pemain dan rintangan. Jika ada tabrakan, permainan mengatur permainan telah berakhir bendera ke BENAR dan setel status game ke permainan telah berakhir.

Setelah game diperbarui, pemain dan rintangan ditarik ke layar. Akhirnya, kode memeriksa apakah permainan telah berakhir bendera disetel, dan jika ya, bendera disetel ulang dan status permainan disetel ke permainan telah berakhir.

Proses ini diulangi terus menerus hingga jendela permainan ditutup.

Tingkatkan Keterlibatan Pengguna Dengan UI yang Menarik Secara Visual

Menggunakan antarmuka pengguna (UI) yang dirancang dengan baik dapat sangat meningkatkan keterlibatan pengguna dalam game PyGame. Font yang jelas dan mudah dibaca, grafik yang menarik secara visual, navigasi yang mudah, dan umpan balik pengguna adalah semua elemen penting untuk dipertimbangkan saat mendesain UI. Dengan mengimplementasikan elemen-elemen ini, Anda dapat membuat UI yang membantu pemain tetap tertarik dan tenggelam dalam game.

Ingatlah untuk menguji UI Anda dan kumpulkan umpan balik dari pemain untuk memastikannya efektif dalam meningkatkan keterlibatan. Secara keseluruhan, meluangkan waktu untuk membuat UI yang kuat dapat sangat meningkatkan pengalaman pemain dan kenikmatan game Anda.