Takip et

Bir Günde Pac-Man Nasıl Yapılır?

Bir Günde Pac-Man Nasıl Yapılır?

Bir gününüzü eğlenceli bir proje ile geçirmek ve klasik bir oyun olan Pac-Man’i kendi başınıza oluşturmayı öğrenmek ister misiniz? Bu makalede, Pac-Man’i sıfırdan nasıl oluşturabileceğiniz konusunda adım adım bir rehber sunacağım. Bu rehber, temel programlama bilgisi olan herkes için uygundur ve size oyun geliştirme dünyasına giriş yapmanız için ilham verici bir yolculuk sağlayacaktır.

Hazırlık Aşaması

İlk olarak, Pac-Man’i oluşturmak için gereken araçları hazırlamalıyız. Bu proje için Python programlama dilini ve Pygame kütüphanesini kullanacağız. Pygame, Python ile oyun geliştirmeyi kolaylaştıran bir kütüphane olup, grafikler, sesler ve oyun mantığı gibi temel oyun unsurlarını sağlamaktadır.

Pygame’i bilgisayarınıza kurmak için, komut satırına aşağıdaki komutu yazmanız yeterlidir:

“`bash
pip install pygame
“`

Pygame kurulduktan sonra, kod yazmaya başlayabiliriz. Öncelikle, yeni bir Python dosyası oluşturun ve aşağıdaki kod parçacığını içine ekleyin. Bu kod, penceremizi oluşturup başlık çubuğunu ayarlamamızı sağlar.

“`python
import pygame

# Oyun penceresinin genişliği ve yüksekliği
genislik = 800
yukseklik = 600

# Pygame’i başlat
pygame.init()

# Oyun penceresini oluştur
ekran = pygame.display.set_mode((genislik, yukseklik))

# Pencere başlığını ayarla
pygame.display.set_caption(“Pac-Man”)

# Oyun döngüsü
oyun_devam_ediyor = True
while oyun_devam_ediyor:
# Etkinlikleri işle
for olay in pygame.event.get():
if olay.type == pygame.QUIT:
oyun_devam_ediyor = False

# Ekranı siyah renge boya
ekran.fill((0, 0, 0))

# Ekranı güncelle
pygame.display.flip()

# Pygame’i kapat
pygame.quit()
“`

Bu kod parçacığı, temel oyun döngüsünü oluşturur. Oyun döngüsü, oyunun çalıştığı sürece sürekli olarak tekrar eden bir yapıdır. Her döngüde, olayları işler, ekranı günceller ve diğer oyun mantığını yürütür. Oyunun çalışmasını durdurmak için pencerenin sağ üst köşesindeki kapatma düğmesine tıklamanız yeterlidir.

Pac-Man’i Çizmek

Şimdi, Pac-Man’i çizmek için Pygame’in sunduğu grafik işlevlerini kullanacağız. Pac-Man’i bir daire olarak çizeceğiz ve ağzını açıp kapatarak hareket etmesini sağlayacağız.

“`python
import pygame

# Oyun penceresinin genişliği ve yüksekliği
genislik = 800
yukseklik = 600

# Pygame’i başlat
pygame.init()

# Oyun penceresini oluştur
ekran = pygame.display.set_mode((genislik, yukseklik))

# Pencere başlığını ayarla
pygame.display.set_caption(“Pac-Man”)

# Pac-Man’in başlangıç konumu
pac_man_x = genislik // 2
pac_man_y = yukseklik // 2

# Pac-Man’in yarıçapı
pac_man_yaricap = 30

# Pac-Man’in ağzının açısı
agiz_acisi = 0

# Oyun döngüsü
oyun_devam_ediyor = True
while oyun_devam_ediyor:
# Etkinlikleri işle
for olay in pygame.event.get():
if olay.type == pygame.QUIT:
oyun_devam_ediyor = False

# Pac-Man’in ağzını aç ve kapat
agiz_acisi += 1
if agiz_acisi >= 180:
agiz_acisi = 0

# Ekranı siyah renge boya
ekran.fill((0, 0, 0))

# Pac-Man’i çiz
pygame.draw.circle(ekran, (255, 255, 0), (pac_man_x, pac_man_y), pac_man_yaricap)
pygame.draw.arc(ekran, (0, 0, 0), (pac_man_x – pac_man_yaricap, pac_man_y – pac_man_yaricap, 2 * pac_man_yaricap, 2 * pac_man_yaricap), 0, agiz_acisi / 180 * 3.14, 3)

# Ekranı güncelle
pygame.display.flip()

# Pygame’i kapat
pygame.quit()
“`

Bu kod parçacığı, Pac-Man’in daire şeklinde çizimini ve ağzının açılıp kapanmasını sağlar. `pygame.draw.circle` fonksiyonu, Pac-Man’i çizmek için kullanılır ve `pygame.draw.arc` fonksiyonu ise ağzını çizmek için kullanılır.

Hareket Eklemek

Şimdi, Pac-Man’i hareket ettirebilmemiz için klavyeden girdi alıp buna göre konumunu güncelleyeceğiz. Klavyeden gelen ok tuşlarına göre Pac-Man’i sola, sağa, yukarı veya aşağı yönünde hareket ettirebiliriz.

“`python
import pygame

# Oyun penceresinin genişliği ve yüksekliği
genislik = 800
yukseklik = 600

# Pygame’i başlat
pygame.init()

# Oyun penceresini oluştur
ekran = pygame.display.set_mode((genislik, yukseklik))

# Pencere başlığını ayarla
pygame.display.set_caption(“Pac-Man”)

# Pac-Man’in başlangıç konumu
pac_man_x = genislik // 2
pac_man_y = yukseklik // 2

# Pac-Man’in yarıçapı
pac_man_yaricap = 30

# Pac-Man’in ağzının açısı
agiz_acisi = 0

# Hareket hızı
hareket_hizi = 5

# Oyun döngüsü
oyun_devam_ediyor = True
while oyun_devam_ediyor:
# Etkinlikleri işle
for olay in pygame.event.get():
if olay.type == pygame.QUIT:
oyun_devam_ediyor = False
elif olay.type == pygame.KEYDOWN:
if olay.key == pygame.K_LEFT:
pac_man_x -= hareket_hizi
elif olay.key == pygame.K_RIGHT:
pac_man_x += hareket_hizi
elif olay.key == pygame.K_UP:
pac_man_y -= hareket_hizi
elif olay.key == pygame.K_DOWN:
pac_man_y += hareket_hizi

# Pac-Man’in ağzını aç ve kapat
agiz_acisi += 1
if agiz_acisi >= 180:
agiz_acisi = 0

# Ekranı siyah renge boya
ekran.fill((0, 0, 0))

# Pac-Man’i çiz
pygame.draw.circle(ekran, (255, 255, 0), (pac_man_x, pac_man_y), pac_man_yaricap)
pygame.draw.arc(ekran, (0, 0, 0), (pac_man_x – pac_man_yaricap, pac_man_y – pac_man_yaricap, 2 * pac_man_yaricap, 2 * pac_man_yaricap), 0, agiz_acisi / 180 * 3.14, 3)

# Ekranı güncelle
pygame.display.flip()

# Pygame’i kapat
pygame.quit()
“`

Bu kod parçacığı, klavyeden gelen tuş basımlarını işleyerek Pac-Man’in konumunu günceller. `pygame.KEYDOWN` olayını kullanarak, hangi tuşa basıldığını kontrol ediyoruz ve buna göre Pac-Man’in koordinatlarını değiştiriyoruz.

Labirent Eklemek

Pac-Man’in hareket edeceği bir labirent ekleyerek oyunumuzu daha ilgi çekici hale getirebiliriz. Labirenti, dikdörtgen şekiller kullanarak çizeceğiz.

“`python
import pygame

# Oyun penceresinin genişliği ve yüksekliği
genislik = 800
yukseklik = 600

# Pygame’i başlat
pygame.init()

# Oyun penceresini oluştur
ekran = pygame.display.set_mode((genislik, yukseklik))

# Pencere başlığını ayarla
pygame.display.set_caption(“Pac-Man”)

# Pac-Man’in başlangıç konumu
pac_man_x = genislik // 2
pac_man_y = yukseklik // 2

# Pac-Man’in yarıçapı
pac_man_yaricap = 30

# Pac-Man’in ağzının açısı
agiz_acisi = 0

# Hareket hızı
hareket_hizi = 5

# Labirent duvarları
duvarlar = [
# Üst ve alt duvarlar
pygame.Rect(0, 0, genislik, 10),
pygame.Rect(0, yukseklik – 10, genislik, 10),
# Sol ve sağ duvarlar
pygame.Rect(0, 0, 10, yukseklik),
pygame.Rect(genislik – 10, 0, 10, yukseklik),
# Orta duvarlar
pygame.Rect(genislik // 2 – 50, yukseklik // 2 – 100, 100, 20),
pygame.Rect(genislik // 2 – 50, yukseklik // 2 + 100, 100, 20),
]

# Oyun döngüsü
oyun_devam_ediyor = True
while oyun_devam_ediyor:
# Etkinlikleri işle
for olay in pygame.event.get():
if olay.type == pygame.QUIT:
oyun_devam_ediyor = False
elif olay.type == pygame.KEYDOWN:
if olay.key == pygame.K_LEFT:
pac_man_x -= hareket_hizi
elif olay.key == pygame.K_RIGHT:
pac_man_x += hareket_hizi
elif olay.key == pygame.K_UP:
pac_man_y -= hareket_hizi
elif olay.key == pygame.K_DOWN:
pac_man_y += hareket_hizi

# Pac-Man’in ağzını aç ve kapat
agiz_acisi += 1
if agiz_acisi >= 180:
agiz_acisi = 0

# Ekranı siyah renge boya
ekran.fill((0, 0, 0))

# Duvarları çiz
for duvar in duvarlar:
pygame.draw.rect(ekran, (255, 255, 255), duvar)

# Pac-Man’i çiz
pygame.draw.circle(ekran, (255, 255, 0), (pac_man_x, pac_man_y), pac_man_yaricap)
pygame.draw.arc(ekran, (0, 0, 0), (pac_man_x – pac_man_yaricap, pac_man_y – pac_man_yaricap, 2 * pac_man_yaricap, 2 * pac_man_yaricap), 0, agiz_acisi / 180 * 3.14, 3)

# Ekranı güncelle
pygame.display.flip()

# Pygame’i kapat
pygame.quit()
“`

Bu kod parçacığı, labirenti oluşturan duvarları çizmek için `pygame.draw.rect` fonksiyonunu kullanır. `duvarlar` listesi, labirenti oluşturan duvarları temsil eden dikdörtgenlerin koordinatlarını içerir. Pac-Man’in duvarlara çarpmasını önlemek için, çarpışma tespiti işlemini de eklememiz gerekecektir.

Çarpışma Tespiti

Pac-Man’in labirent duvarlarına çarpmasını engellemek için, çarpışma tespiti yapmamız gerekir. Pygame’in `pygame.Rect.colliderect` fonksiyonu, iki dikdörtgenin çarpışıp çarpmadığını kontrol etmek için kullanılabilir. Pac-Man’in çarpışma alanını temsil eden bir dikdörtgen tanımlayarak, bu fonksiyonu kullanabiliriz.

“`python
import pygame

# Oyun penceresinin genişliği ve yüksekliği
genislik = 800
yukseklik = 600

# Pygame’i başlat
pygame.init()

# Oyun penceresini oluştur
ekran = pygame.display.set_mode((genislik, yukseklik))

# Pencere başlığını ayarla
pygame.display.set_caption(“Pac-Man”)

# Pac-Man’in başlangıç konumu
pac_man_x = genislik // 2
pac_man_y = yukseklik // 2

# Pac-Man’in yarıçapı
pac_man_yaricap = 30

# Pac-Man’in ağzının açısı
agiz_acisi = 0

# Hareket hızı
hareket_hizi = 5

# Labirent duvarları
duvarlar = [
# Üst ve alt duvarlar
pygame.Rect(0, 0, genislik, 10),
pygame.Rect(0, yukseklik – 10, genislik, 10),
# Sol ve sağ duvarlar
pygame.Rect(0, 0, 10, yukseklik),
pygame.Rect(genislik – 10, 0, 10, yukseklik),
# Orta duvarlar
pygame.Rect(genislik // 2 – 50, yukseklik // 2 – 100, 100, 20),
pygame.Rect(genislik // 2 – 50, yukseklik // 2 + 100, 100, 20),
]

# Oyun döngüsü
oyun_devam_ediyor = True
while oyun_devam_ediyor:
# Etkinlikleri işle
for olay in pygame.event.get():
if olay.type == pygame.QUIT:
oyun_devam_ediyor = False
elif olay.type == pygame.KEYDOWN:
if olay.key == pygame.K_LEFT:
pac_man_x -= hareket_hizi
elif olay.key == pygame.K_RIGHT:
pac_man_x += hareket_hizi
elif olay.key == pygame.K_UP:
pac_man_y -= hareket_hizi
elif olay.key == pygame.K_DOWN:
pac_man_y += hareket_hizi

# Pac-Man’in çarpışma alanını oluştur
pac_man_dikdortgen = pygame.Rect(pac_man_x – pac_man_yaricap, pac_man_y – pac_man_yaricap, 2 * pac_man_yaricap, 2 * pac_man_yaricap)

# Pac-Man’in duvarlara çarpıp çarpmadığını kontrol et
for duvar in duvarlar:
if pac_man_dikdortgen.colliderect(duvar):
# Pac-Man’in konumunu geri al
if olay.key == pygame.K_LEFT:
pac_man_x += hareket_hizi
elif olay.key == pygame.K_RIGHT:
pac_man_x -= hareket_hizi
elif olay.key == pygame.K_UP:
pac_man_y += hareket_hizi
elif olay.key == pygame.K_DOWN:
pac_man_y -= hareket_hizi

# Pac-Man’in ağzını aç ve kapat
agiz_acisi += 1
if agiz_acisi >= 180:
agiz_acisi = 0

# Ekranı siyah renge boya
ekran.fill((0, 0, 0))

# Duvarları çiz
for duvar in duvarlar:
pygame.draw.rect(ekran, (255, 255, 255), duvar)

# Pac-Man’i çiz
pygame.draw.circle(ekran, (255, 255, 0), (pac_man_x, pac_man_y), pac_man_yaricap)
pygame.draw.arc(ekran, (0, 0, 0), (pac_man_x – pac_man_yaricap, pac_man_y – pac_man_yaricap, 2 * pac_man_yaricap, 2 * pac_man_yaricap), 0, agiz_acisi / 180 * 3.14, 3)

# Ekranı güncelle
pygame.display.flip()

# Pygame’i kapat
pygame.quit()
“`

Bu kod parçacığı, Pac-Man’in çarpışma alanını temsil eden bir dikdörtgen tanımlar ve bu dikdörtgenin duvarlarla çarpıp çarpmadığını kontrol eder. Çarpışma tespit edilirse, Pac-Man’in konumu geri alınır.

Oyunu Daha İlgi Çekici Hale Getirmek

Oyunu daha ilgi çekici hale getirmek için, aşağıdaki eklemeleri yapabilirsiniz:

  • **Puanlama Sistemi:** Pac-Man’in yediği noktaları ekleyin ve puanını ekranda gösterin.
  • **Hayaletler:** Oyun alanına hareket eden hayaletler ekleyin. Pac-Man hayaletlere değdiğinde can kaybetsin.
  • **Ses Efektleri:** Oyun için uygun ses efektleri ekleyin, örneğin Pac-Man’in noktaları yediği zaman, hayaletlere değdiği zaman veya oyun sona erdiğinde.
  • **Seviye Sistemi:** Oyunun zorluğunu artırarak seviyeleri ekleyin. Daha yüksek seviyelerde, hayaletler daha hızlı hareket edebilir veya daha fazla hayalet olabilir.
  • **Grafikler:** Oyunun görsellerini geliştirmek için daha ayrıntılı grafikler kullanın.

Bu eklemeler, oyunun daha ilgi çekici hale gelmesini sağlayacaktır.

Sonuç

Bu makalede, Pac-Man oyununu sıfırdan nasıl oluşturabileceğinizi adım adım gösterdim. Python ve Pygame kullanarak, temel bir Pac-Man oyunu oluşturmayı öğrendiniz. Bu projeyi daha da geliştirmek için, oyunun görsellerini ve oynanışını iyileştirebilirsiniz. Kendi Pac-Man oyununuzu oluşturarak, oyun geliştirme dünyasına adım atın ve yaratıcılığınızı ortaya koyun.

Eğer oyun geliştirmeye ilgi duyuyorsanız, daha fazla bilgi edinmek için [Fatih Soysal’ın Web Sitesi](https://fatihsoysal.com) adresini ziyaret edebilirsiniz. Bu sitede, oyun geliştirmeyle ilgili çeşitli kaynaklar ve makaleler bulabilirsiniz.

Unutmayın, programlama dünyası keşfedecek çok şey sunuyor! Yeni projeler oluşturun, öğrenmeye devam edin ve eğlenin!

#Etiketler
Pac-Man, oyun geliştirme, Pygame, Python, programlama, tutorial, nasıl yapılır, adım adım, rehber, kod, grafik, çarpışma tespiti, labirent, oyun mantığı, görseller, ses efektleri, seviye sistemi, Fatih Soysal

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.