bu yazıda da Python ile adam asmaca oyununun konsol versiyonunu nasıl geliştirebileceğimize bakalım ve ilkel bir adam asmaca oyunu geliştirelim. Programda çözmemiz gereken problemler şunlar:
- Bir kelimeler listesine ihtiyacımız var ve program her çalıştırıldığında bu listeden rastgele olarak birisini seçerek değiştirmeli. Örnek olarak listeye 10 adet film yazalım ve kullanıcıya bu filmin adını bulmasını söyleyelim
- Başlangıçta kullanıcıya haç harften oluşan bir film olduğunu göstermek için alt çizgilerden oluşan bir alan gösterelimç. Örneğin matrix filmi 6 harfli bir film olduğu için ______ şeklinde 6 adet alt çizgi karakteri gösterelim ki tahmin edeceği film hakkında bir fikri olsun.
- Adam asmaca oyununun eğlenceli kısmı, her yanlış cevapta asılan adam figürüdür. kullanıcıya 10 hak verelim ve her yanlış cevabında (kelimede olmayan bir kelime yazmış olması) kalan hakkını azaltalım ve yazdıktan sonra adam asmaca figürünü konsolda ilkel bir şekilde çizgilerle benzetelim
- Kullanıcı her tahmin hakkında tek bir harf yazabilir. Önce yazdığı harfin doğru bir harf olup olmadığını kontrol edelim (geçerli harfler listesi olacak), sonra da fim adında bu harfin olup olmadığını kontrol edelim. var ise alt çizgide ilgili yere o harfi yazalım. örneğin matrix için a harfini yazdı ise _a____ şeklinde gösterdiğimiz kelimeyi güncelleyelim ve her yeni kelime bulduğunda da güncelleyelim
- Kullanıcı soruyu doğru bildiğinde (harf tahminleri ile hakkı dolmadan filmin adını tamamen yazdığında) de tebrik edelim
Python Kodları:
import random
def adamas():
kelimeler = random.choice(["terminator" , "avengers" , "matrix" , "tenet" , "jumanji" , "shazam" , "lucy" , "deadpool" , "kingsman" , "transformers" ])
gecerliHarfler = 'abcdefghijklmnopqrstuvwxyz'
toplamHak = 10
yapilanTahmin = ''
while len(kelimeler) > 0:
asilKelime = ""
hataliTahminSayisi = 0
for harf in kelimeler:
if harf in yapilanTahmin:
asilKelime = asilKelime + harf
else:
asilKelime = asilKelime + "_" + " "
if asilKelime == kelimeler:
print(asilKelime)
print("Tebrikler kazandınız")
break
print("Filmin adını tahmin edin:" , asilKelime)
tahmin = input()
if tahmin in gecerliHarfler:
yapilanTahmin = yapilanTahmin + tahmin
else:
print("girdiğiniz harfi kontrol edin")
tahmin = input()
if tahmin not in kelimeler:
toplamHak = toplamHak - 1
if toplamHak == 9:
print("9 hakkınız kaldı")
print(" -------- ")
if toplamHak == 8:
print("8 hakkınız kaldı")
print(" -------- ")
print(" O ")
if toplamHak == 7:
print("7 hakkınız kaldı")
print(" -------- ")
print(" O ")
print(" | ")
if toplamHak == 6:
print("6 hakkınız kaldı")
print(" -------- ")
print(" O ")
print(" | ")
print(" / ")
if toplamHak == 5:
print("5 hakkınız kaldı")
print(" -------- ")
print(" O ")
print(" | ")
print(" / \ ")
if toplamHak == 4:
print("4 hakkınız kaldı")
print(" -------- ")
print(" \ O ")
print(" | ")
print(" / \ ")
if toplamHak == 3:
print("3 hakkınız kaldı")
print(" -------- ")
print(" \ O / ")
print(" | ")
print(" / \ ")
if toplamHak == 2:
print("2 hakkınız kaldı")
print(" -------- ")
print(" \ O /| ")
print(" | ")
print(" / \ ")
if toplamHak == 1:
print("1 hakkınız kaldı")
print("Dikkatli kullanın")
print(" -------- ")
print(" \ O_|/ ")
print(" | ")
print(" / \ ")
if toplamHak == 0:
print("Oyun bitti")
print("bilemediniz ve kaybettiniz")
print(" -------- ")
print(" O_| ")
print(" /|\ ")
print(" / \ ")
break
print("Filmin adını bulabilmek için 10 hakkınız var")
adamas()
print()
Oynanış 1:
Filmin adını bulabilmek için 10 hakkınız var
Filmin adını tahmin edin: _ _ _ _ _ _ _ _ _ _ _ _
a
Filmin adını tahmin edin: _ _ a_ _ _ _ _ _ _ _ _
e
Filmin adını tahmin edin: _ _ a_ _ _ _ _ _ e_ _
i
9 hakkınız kaldı
--------
Filmin adını tahmin edin: _ _ a_ _ _ _ _ _ e_ _
o
Filmin adını tahmin edin: _ _ a_ _ _ o_ _ e_ _
c
8 hakkınız kaldı
--------
O
Filmin adını tahmin edin: _ _ a_ _ _ o_ _ e_ _
g
7 hakkınız kaldı
--------
O
|
Filmin adını tahmin edin: _ _ a_ _ _ o_ _ e_ _
t
Filmin adını tahmin edin: t_ a_ _ _ o_ _ e_ _
m
Filmin adını tahmin edin: t_ a_ _ _ o_ me_ _
h
6 hakkınız kaldı
--------
O
|
/
Filmin adını tahmin edin: t_ a_ _ _ o_ me_ _
f
Filmin adını tahmin edin: t_ a_ _ fo_ me_ _
d
5 hakkınız kaldı
--------
O
|
/ \
Filmin adını tahmin edin: t_ a_ _ fo_ me_ _
s
Filmin adını tahmin edin: t_ a_ sfo_ me_ s
b
4 hakkınız kaldı
--------
\ O
|
/ \
Filmin adını tahmin edin: t_ a_ sfo_ me_ s
z
3 hakkınız kaldı
--------
\ O /
|
/ \
Filmin adını tahmin edin: t_ a_ sfo_ me_ s
x
2 hakkınız kaldı
--------
\ O /|
|
/ \
Filmin adını tahmin edin: t_ a_ sfo_ me_ s
v
1 hakkınız kaldı
Dikkatli kullanın
--------
\ O_|/
|
/ \
Filmin adını tahmin edin: t_ a_ sfo_ me_ s
p
Oyun bitti
bilemediniz ve kaybettiniz
--------
O_|
/|\
/ \
Oynanış 2:
Filmin adını bulabilmek için 10 hakkınız var
Filmin adını tahmin edin: _ _ _ _ _ _ _
a
Filmin adını tahmin edin: _ _ _ a_ _ _
e
9 hakkınız kaldı
--------
Filmin adını tahmin edin: _ _ _ a_ _ _
i
Filmin adını tahmin edin: _ _ _ a_ _ i
j
Filmin adını tahmin edin: j_ _ a_ ji
u
Filmin adını tahmin edin: ju_ a_ ji
m
Filmin adını tahmin edin: juma_ ji
n
jumanji
Tebrikler kazandınız
Editör editi: sitedeki bazı diğer benzer yazılar için;
bkz: Python ile rastgele kelime seçmek ve cümle oluşturmak
bkz: Python ile rastgele harf seçmek
bkz: Python ile listeden rastgele seçim yapmak
bkz: Python ile rastgele zar atma örnekleri
bkz: Python ile Rastgele Sayı Üretmek
bkz: Python ile İki Sayı Arasında Rastgele Sayı Üretmek