Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

PyGame, Python ile proje oluşturmak için popüler bir kitaplıktır ve oyun geliştirme için güçlü bir araç seti sağlar. Bu yazıda, PyGame kullanarak basit bir oyun için bir başlat menüsü ve oyun bitti ekranı oluşturmayı öğreneceksiniz.

Basit Bir Oyun Yaratmak

Başlat menüsü ve oyun bitti ekranını oluşturmadan önce basit bir oyun yapalım. Bu oyunda yön tuşları ile bir karakteri kontrol edecek ve engellerden kaçmaya çalışacaksınız. İşleri basitleştirmek için herhangi bir resim kullanmamaya çalışın.

Başlamak için gerekli modülleri içe aktarmanız gerekir. kullanıyor olacaksın pygame PyGame'in işlevlerine erişmek için modül. Modülü yüklemek için şunları yapabilirsiniz: pip paket yöneticisini kullanın:

bip düzenlemek pygame

Artık modülümüz kullanıma hazır olduğuna göre, ok tuşlarını kullanarak sola veya sağa hareket edebilen bir oyuncu ve bir engel ile basit bir oyun oluşturalım. Engelle çarpışırsanız oyun sona erecektir. İşte aynı kod:

instagram viewer

içe aktarmak pygame
pygame.içinde()

ekran genişliği = 750
ekran_yüksekliği = 450
ekran = pygame.display.set_mode((screen_width, screen_height))

engel_x = 400
engel_y = 400
engel_genişliği = 40
engel_yüksekliği = 40
oyuncu_x = 200
oyuncu_y = 400
oyuncu_genişliği = 20
oyuncu_yüksekliği = 20

sırasındaDoğru:

içinetkinlikiçindepygame.etkinlik.elde etmek():

if event.type == pygame. ÇIKIŞ YAPMAK:
pygame.çıkış yapmak()
çıkış yapmak()


tuşlar = pygame.key.get_pressed()
eğeranahtarlar[oyun oyunu. K_LEFT]:
oyuncu_x -= 5
eğeranahtarlar[oyun oyunu. K_RIGHT]:
oyuncu_x += 5


player_x + player_width > engel_x ve player_x ise < engel_x + engel_genişliğiVeoyuncu_y + oyuncu_yüksekliği > engel_y ve oyuncu_y < engel_y + engel_yüksekliği:
oyun_over = Doğru


ekran.doldurmak((0, 0, 0))
pygame.çizmek.rect(ekran, (255, 0, 0), (engel_x, engel_y, engel_genişliği, engel_yüksekliği))
pygame.çizmek.rect(ekran, (0, 255, 0), (oyuncu_x, oyuncu_y, oyuncu_genişliği, oyuncu_yüksekliği))
pygame.görüntülemek.güncelleme()

Yukarıdaki kodda oyun penceresini kurdunuz ve oyun değişkenlerini bildirdiniz. Ayrıca kullanıcı girişini de yaptınız ve öğeleri ekrana çizdiniz.

Başlat Menüsü Oluşturma

Artık temel bir oyununuz olduğuna göre, bir başlat menüsü oluşturalım. Bunu yapmak için oyun durumu için global bir değişken bildirmeniz gerekecek. Bu değişken, başlat menüsünün aktif olup olmadığı veya oyunun çalışıp çalışmadığı gibi oyunun mevcut durumunu takip edecektir. Bu değişkeni oyun kodunuzun başına eklemeniz gerekir:

oyun_durumu = "başlangıç ​​menüsü"

Ardından, başlat menüsünü ekrana çizmek için bir işlev ekleyeceksiniz. Ekrandaki metni, düğmeleri ve diğer öğeleri çizmek için PyGame işlevlerini kullanabilirsiniz.

kesinDraw_start_menu():
ekran.doldurmak((0, 0, 0))
yazı tipi = pygame.font. SysFont("arial", 40)
başlık = font.render('Benim oyunum', Doğru, (255, 255, 255))
start_button = font.render('Başlangıç', Doğru, (255, 255, 255))
screen.blit (başlık, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.görüntülemek.güncelleme()

daha sonra ekleyebilirsiniz draw_start_menu() ana oyun döngüsüne işlev.

sırasındaDoğru: 

içinetkinlikiçindepygame.etkinlik.elde etmek():
if event.type == pygame. ÇIKIŞ YAPMAK:
pygame.çıkış yapmak()
çıkış yapmak()

eğer oyun_durumu == "başlangıç ​​menüsü":
draw_start_menu()

eğer oyun_durumu == "oyun":
tuşlar = pygame.key.get_pressed()
# kodun geri kalanı

Şimdi, başlat menüsü ekrana çizilecektir. Son adım, kullanıcı girişinin işlenmesidir. Yapabilirsiniz bir if ifadesi ekleyin kullanıcının başlat düğmesine basıp basmadığını kontrol etmek için ana oyun döngüsüne gidin.

eğer oyun_durumu == "başlangıç ​​menüsü":
tuşlar = pygame.key.get_pressed()
eğeranahtarlar[oyun oyunu. K_SPACE]:
oyuncu_x = 200
oyuncu_y = 400
oyun_durumu = "oyun"
oyun_over = YANLIŞ

Bu kod ile kullanıcı start butonuna bastığı anda oyun başlayacaktır.

Game Over Ekranını Uygulama

Artık başlat menüsüne sahip olduğunuza göre, oyun ekranını oluşturalım. Bu işlev, nihai skoru ve bir oyun bitti mesajını göstermelidir.

kesinDraw_game_over_screen():
ekran.doldurmak((0, 0, 0))
yazı tipi = pygame.font. SysFont("arial", 40)
başlık = font.render('Oyun bitti', Doğru, (255, 255, 255))
restart_button = font.render("R - Yeniden Başlat", Doğru, (255, 255, 255))
çıkın_düğmesi = yazı tipi.render("S - Çık", Doğru, (255, 255, 255))
screen.blit (başlık, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/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.görüntülemek.güncelleme()

Daha sonra bu işlevi ana oyun döngüsüne ekleyebilirsiniz.

eğer oyun_durumu == "başlangıç ​​menüsü":
draw_start_menu()
eğer oyun_durumu == "oyun bitti":
Draw_game_over_screen()

eğer oyun_durumu == "oyun":
tuşlar = pygame.key.get_pressed()
eğeranahtarlar[oyun oyunu. K_LEFT]:
oyuncu_x -= 5
eğeranahtarlar[oyun oyunu. K_RIGHT]:
oyuncu_x += 5

player_x + player_width > engel_x ve player_x ise < engel_x + engel_genişliğiVeoyuncu_y + oyuncu_yüksekliği > engel_y ve oyuncu_y < engel_y + engel_yüksekliği:
oyun_over = Doğru
oyun_durumu = "oyun bitti"

Son olarak, kullanıcının seçimini yapmak için kullanıcı girdisini işlemeniz gerekir. Kullanıcının yeniden başlat veya çık düğmesine basıp basmadığını kontrol etmek için ana oyun döngüsüne bir if ifadesi ekleyebilirsiniz.

eğer oyun_durumu == "başlangıç ​​menüsü":
tuşlar = pygame.key.get_pressed()
eğeranahtarlar[oyun oyunu. K_SPACE]:
oyun_durumu = "oyun"
oyuncu_x = 200
oyuncu_y = 400
oyun_durumu = "oyun"
oyun_over = YANLIŞ

eğer oyun_durumu == "oyun bitti":
tuşlar = pygame.key.get_pressed()
eğeranahtarlar[oyun oyunu. k_r]:
oyun_durumu = "başlangıç ​​menüsü"
eğeranahtarlar[oyun oyunu. K_q]:
pygame.çıkış yapmak()
çıkış yapmak()

Bu kod ile kullanıcı 'R' tuşuna bastığında oyun yeniden başlayacak ve kullanıcı klavyede 'Q' tuşuna bastığında oyundan çıkacaktır.

Tam kod aşağıdadır:

içe aktarmak pygame

pygame.içinde()
ekran genişliği = 750
ekran_yüksekliği = 450
ekran = pygame.display.set_mode((screen_width, screen_height))
engel_x = 400
engel_y = 400
engel_genişliği = 40
engel_yüksekliği = 40
oyuncu_x = 200
oyuncu_y = 400
oyuncu_genişliği = 20
oyuncu_yüksekliği = 20
oyun_durumu = "başlangıç ​​menüsü"

kesinDraw_start_menu():
ekran.doldurmak((0, 0, 0))
yazı tipi = pygame.font. SysFont("arial", 40)
başlık = font.render('Benim oyunum', Doğru, (255, 255, 255))
start_button = font.render('Başlangıç', Doğru, (255, 255, 255))
screen.blit (başlık, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.görüntülemek.güncelleme()

kesinDraw_game_over_screen():
ekran.doldurmak((0, 0, 0))
yazı tipi = pygame.font. SysFont("arial", 40)
başlık = font.render('Oyun bitti', Doğru, (255, 255, 255))
restart_button = font.render("R - Yeniden Başlat", Doğru, (255, 255, 255))
çıkın_düğmesi = yazı tipi.render("S - Çık", Doğru, (255, 255, 255))
screen.blit (başlık, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/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.görüntülemek.güncelleme()

sırasındaDoğru:
içinetkinlikiçindepygame.etkinlik.elde etmek():
if event.type == pygame. ÇIKIŞ YAPMAK:
pygame.çıkış yapmak()
çıkış yapmak()
eğer oyun_durumu == "başlangıç ​​menüsü":
draw_start_menu()
tuşlar = pygame.key.get_pressed()
eğeranahtarlar[oyun oyunu. K_SPACE]:
oyuncu_x = 200
oyuncu_y = 400
oyun_durumu = "oyun"
oyun_over = YANLIŞ
elif oyun_durumu == "oyun bitti":
Draw_game_over_screen()
tuşlar = pygame.key.get_pressed()
eğeranahtarlar[oyun oyunu. k_r]:
oyun_durumu = "başlangıç ​​menüsü"
eğeranahtarlar[oyun oyunu. K_q]:
pygame.çıkış yapmak()
çıkış yapmak()

elif oyun_durumu == "oyun":
tuşlar = pygame.key.get_pressed()
eğeranahtarlar[oyun oyunu. K_LEFT]:
oyuncu_x -= 5
eğeranahtarlar[oyun oyunu. K_RIGHT]:
oyuncu_x += 5

player_x + player_width > engel_x ve player_x ise < engel_x + engel_genişliğiVeoyuncu_y + oyuncu_yüksekliği > engel_y ve oyuncu_y < engel_y + engel_yüksekliği:
oyun_over = Doğru
oyun_durumu = "oyun bitti"

ekran.doldurmak((0, 0, 0))
pygame.çizmek.rect(ekran, (255, 0, 0), (engel_x, engel_y, engel_genişliği, engel_yüksekliği))
pygame.çizmek.rect(ekran, (0, 255, 0), (oyuncu_x, oyuncu_y, oyuncu_genişliği, oyuncu_yüksekliği))
pygame.görüntülemek.güncelleme()

elif oyun bitti:
oyun_durumu = "oyun bitti"
oyun_over = YANLIŞ

Kod, içe aktarılarak başlar pygame modül ve başlatma. Daha sonra bir oyun penceresi oluşturur ve oyuncu ve engelin konumu, boyutu ve oyun durumu dahil olmak üzere gerekli oyun değişkenlerini bildirir.

Kod iki işlevi tanımlar, draw_start_menu() Ve Draw_game_over_screen(), başlat menüsünü ve oyun ekranını çizmek için. Bu işlevler, ekrana metin ve düğmeler çizmek için PyGame işlevlerini kullanır.

Ana oyun döngüsü, olayları ele alarak ve oyun durumunu kontrol ederek başlar. Oyun durumu ise başlangıç ​​menüsü, başlat menüsü ekrana çizilir. Oyun durumu ise oyun bitti, oyun bitti ekranı ekrana çizilir. Oyun durumu başka bir şeyse oyun güncellenir ve oyuncuyu ve engeli ekrana çeker.

Oyun, tuşlara basarak ve oyuncu ile engel arasında bir çarpışma olup olmadığını kontrol ederek güncellenir. Bir çarpışma olursa, oyun oyun bitti işaretle Doğru ve oyun durumunu şu şekilde ayarlar: oyun bitti.

Oyun güncellendikten sonra ekrana oyuncu ve engel çizilir. Son olarak, kod, oyun bitti bayrak ayarlanır ve öyleyse, bayrağı sıfırlar ve oyun durumunu şu şekilde ayarlar: oyun bitti.

Bu işlem oyun penceresi kapanana kadar sürekli olarak tekrarlanır.

Görsel Olarak Çekici Kullanıcı Arayüzüyle Kullanıcı Etkileşimini Artırın

İyi tasarlanmış bir kullanıcı arabirimi (UI) kullanmak, bir PyGame oyununda kullanıcı katılımını büyük ölçüde artırabilir. Net ve okunması kolay bir yazı tipi, görsel olarak çekici grafikler, kolay gezinme ve kullanıcı geri bildirimi, kullanıcı arayüzünü tasarlarken dikkate alınması gereken önemli unsurlardır. Bu öğeleri uygulayarak, oyuncunun oyuna ilgi duymasını ve kendini oyuna kaptırmasını sağlamaya yardımcı olan bir kullanıcı arayüzü oluşturabilirsiniz.

Etkileşimi artırmada etkili olduğundan emin olmak için kullanıcı arayüzünüzü test etmeyi ve oyunculardan geri bildirim almayı unutmayın. Genel olarak, güçlü bir kullanıcı arayüzü oluşturmak için zaman ayırmak, oyuncunun oyun deneyimini ve oyundan aldığı keyfi büyük ölçüde artırabilir.