Python öğrenirken karşılaştığımız ilk önemli konulardan biri mantıksal (Boolean) değerlerdir. Exercism platformundaki “Ghost Gobble Arcade Game” alıştırması da bu konuyu eğlenceli bir Pac-Man senaryosu üzerinden öğretmektedir.
Bu alıştırmada amaç, Pac-Man’in oyun içerisindeki bazı durumlarını Boolean ifadeler kullanarak belirlemektir.
Kaynak: https://exercism.org/tracks/python/exercises/ghost-gobble-arcade-game
Boolean Nedir?
Python’da Boolean veri tipi yalnızca iki değer alabilir:
TrueFalse
Bu değerler genellikle bir koşulun doğru veya yanlış olduğunu ifade etmek için kullanılır.
Örneğin:
is_raining = Trueis_sunny = False
Boolean ifadelerde üç temel operatör kullanılır:
| Operatör | Anlamı |
|---|---|
| and | VE |
| or | VEYA |
| not | DEĞİL |
Örnek:
True and True # TrueTrue and False # FalseTrue or False # TrueFalse or False # Falsenot True # Falsenot False # True
Oyun Senaryosu
Pac-Man oyununda aşağıdaki kurallar bulunmaktadır:
- Güç hapı (Power Pellet) alan Pac-Man hayaletleri yiyebilir.
- Nokta (Dot) veya güç hapı topladığında puan kazanır.
- Hayalete dokunursa kaybedebilir.
- Tüm noktaları toplarsa oyunu kazanabilir.
Bu kuralları Python fonksiyonları ile modelleyeceğiz.
1. Pac-Man Hayalet Yiyebilir mi?
Pac-Man’in hayalet yiyebilmesi için iki şartın aynı anda sağlanması gerekir:
- Güç hapı aktif olmalı.
- Hayalete temas ediyor olmalı.
def eat_ghost(power_pellet_active, touching_ghost): return power_pellet_active and touching_ghost
Örnek:
eat_ghost(True, True)
Sonuç:
True
Çünkü iki koşul da sağlanmaktadır.
2. Pac-Man Puan Kazandı mı?
Pac-Man aşağıdaki durumların herhangi birinde puan kazanır:
- Bir nokta (dot) toplarsa
- Bir güç hapı (power pellet) toplarsa
Burada “VEYA” mantığı kullanılmalıdır.
def score(touching_power_pellet, touching_dot): return touching_power_pellet or touching_dot
Örnek:
score(False, True)
Sonuç:
True
Çünkü bir nokta toplamıştır.
3. Pac-Man Kaybetti mi?
Pac-Man aşağıdaki durumda oyunu kaybeder:
- Hayalete dokunmuştur.
- Güç hapı etkisi aktif değildir.
def lose(power_pellet_active, touching_ghost): return touching_ghost and not power_pellet_active
Örnek:
lose(False, True)
Sonuç:
True
Çünkü Pac-Man korunmasız durumdayken hayalete temas etmiştir.
4. Pac-Man Oyunu Kazandı mı?
Oyunu kazanmak için:
- Tüm noktalar yenmiş olmalı.
- Pac-Man kaybetmiş olmamalı.
Önce kaybetme durumunu tekrar düşünelim:
touching_ghost and not power_pellet_active
Eğer bu durum oluşmuyorsa ve tüm noktalar yenmişse oyun kazanılmıştır.
def win(has_eaten_all_dots, power_pellet_active, touching_ghost): return ( has_eaten_all_dots and not (touching_ghost and not power_pellet_active) )
Örnek:
win(True, True, True)
Sonuç:
True
Çünkü tüm noktalar yenmiştir ve Pac-Man güç hapı sayesinde hayaletten etkilenmemektedir.
Mantıksal Tablolarla Düşünmek
Örneğin eat_ghost() fonksiyonu için:
| Güç Hapı | Hayalete Temas | Sonuç |
|---|---|---|
| False | False | False |
| False | True | False |
| True | False | False |
| True | True | True |
Burada yalnızca iki koşul aynı anda gerçekleştiğinde sonuç True olmaktadır.
Bu Alıştırmanın Öğrettiği Konular
Bu küçük alıştırma aslında Python’un temel mantık yapılarının çoğunu öğretmektedir:
- Boolean veri tipi
- Mantıksal operatörler (
and,or,not) - Koşul değerlendirme
- Fonksiyon yazımı
- Gerçek hayat kurallarını kod ile modelleme
Programlama dünyasında birçok karar mekanizması bu mantık yapıları üzerine kuruludur. Kullanıcı giriş kontrolleri, güvenlik sistemleri, oyun mekanikleri ve iş kuralları genellikle Boolean ifadelerle ifade edilir. Bu nedenle Ghost Gobble Arcade Game alıştırması, Python öğrenenler için oldukça değerli bir başlangıç çalışmasıdır.