-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmastermind.py
More file actions
executable file
·134 lines (127 loc) · 5.76 KB
/
mastermind.py
File metadata and controls
executable file
·134 lines (127 loc) · 5.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# mastermind.py
# Python 6 days challenge day #2
import os
import datetime
import random
sayiKumesi = "12345678"
kacKarakter = len(sayiKumesi)
bulmacaHarfSayisi = 4
def temizle():
# For Windows
if (os.name == 'nt'):
os.system('cls')
# For macOS and Linux
else:
os.system('clear')
def dorkBasamakli(numara):
if len(numara) != bulmacaHarfSayisi:
return False
return True
def farkliHarfler(numara):
for x in numara:
if (numara.count(x)>1):
return False
return True
def sifirBesArasi(numara):
for x in numara:
if (x not in sayiKumesi):
return False
return True
def bulmaca():
#sayiKumesi="012345"
gizli = ""
while (len(gizli) < bulmacaHarfSayisi):
siradaki=random.randrange(kacKarakter)
if (sayiKumesi[siradaki] not in gizli):
gizli = sayiKumesi[siradaki] + gizli
return gizli
def kaciVarYeriYanlis(numara):
buVar = 0
for x in numara:
if (x in bulBeni):
buVar += 1
return buVar
def kaciVarYeriDogru(numara):
buVar = 0
y=0
for x in numara:
if (x == bulBeni[y]):
buVar += 1
y += 1
return buVar
def ekraniYazdir():
for (x,y) in zip(tahminler, sonuclar):
print(x,y)
print("--------------------------------------------------------------------------------")
print("--------------------------------------------------------------------------------")
print (datetime.datetime.now().strftime("%d of %B"))
oyuncu = input("\nİsminiz: ")
mesaj= " Oyunumuza hoşgeldiniz, "+oyuncu+" "
uzunluk=int((80-len(mesaj))/2)
ondeki="-"*uzunluk
arkadaki="-"*(uzunluk + len(mesaj) % 2)
tahminler = list(())
sonuclar = list(())
degil4Basamak = 0
degilRakamlarFarkli = 0
degilSifirBes = 0
bulBeni=bulmaca()
tahminSayisi = 0
temizle()
print("--------------------------------------------------------------------------------")
print("--------------------------------------------------------------------------------")
print("--------------------------------------------------------------------------------")
print("------------------------------- MasterMind Game --------------------------------")
print("--------------------------------------------------------------------------------")
print("--------------------------------------------------------------------------------")
print(ondeki+ mesaj +arkadaki)
print("--------------------------------------------------------------------------------")
print("--------------------------------------------------------------------------------")
print("Senin için {} basamaklı bir şifre tuttuk, tahmin edebilir misin?".format(bulmacaHarfSayisi))
print("Acemi Python programcısının eksikleri yüzünden bu {} basamak renklerden değil rakamlardan oluşuyor.".format(bulmacaHarfSayisi))
print("Master Mind oyunun gereği olarak sadece {} çeşit renk yani bu örnekte rakam kullandık".format(len(sayiKumesi)))
print("Yani "+sayiKumesi+" rakamlarıdan oluşan, birbirinin aynı rakamları içermeyen, {} basamaklı bir sifre olacak".format(bulmacaHarfSayisi))
while(True):
tahmin = input("\nTahmininizi giriniz:")
if dorkBasamakli(tahmin):
if farkliHarfler(tahmin):
if sifirBesArasi(tahmin):
tahminSayisi += 1
yeriDogrular=kaciVarYeriDogru(tahmin)
olanlar=kaciVarYeriYanlis(tahmin) - yeriDogrular
sonuclar.append("-"+format(olanlar)+" +"+format(yeriDogrular))
tahminler.append(tahmin)
ekraniYazdir()
if yeriDogrular == bulmacaHarfSayisi:
print("--------------------------------------------------------------------------------")
print("--------------------------------------------------------------------------------")
print("Tebrikler sevgili "+oyuncu+", bulmacayı {}. tahminde buldunuz".format(tahminSayisi))
print("--------------------------------------------------------------------------------")
print("--------------------------------------------------------------------------------")
print("Ama bir dakika?!")
toplamHataliGiris = degil4Basamak+degilRakamlarFarkli+degilSifirBes
if (toplamHataliGiris == 0):
print("Sen hiç hatalı giriş yapmamışsın? Bravo kuralcı kişi.")
else:
if(toplamHataliGiris < 5):
print("Az miktarda hatalı girişi her hoca olumlulukla kabul eder.")
else:
print("Biraz abartılı hatalı giriş olmuş.")
if (toplamHataliGiris > 10):
print("Bacım sen rastgele basmışsın tuşlara, oynamayacaksan oynamıyorum de, ktrl-C basıp kaçsaydın. Hadi kardeşim CPU'yu oyalama!")
else:
print("Gereksiz taramalardan kaçınalım!")
print("--------------------------------------------------------------------------------")
print("----------------------------------------------------------------------------end-")
break
else:
degilSifirBes += 1
print("Lütfen "+sayiKumesi+" rakamları den olusan {} basamakli bir sayi giriniz.".format(bulmacaHarfSayisi))
else:
degilRakamlarFarkli += 1
print("Amaaaa lütfen rakamlar birbirinden farklı olsun.")
else:
degil4Basamak += 1
print("Lütfen {} basamakli bir sayi giriniz".format(bulmacaHarfSayisi))
if degil4Basamak>5:
print("Bu iş can sıkmaya başladı, {} basamak nedir bilir misin?".format(bulmacaHarfSayisi))