Merhaba pythona yeni başladım giriş seviyesinde bilgiye sahibim.
yapay zekaya karşı oynadığımız bir X-O-X oyunu yaptım.
oyunda önce siz oynuyorsunuz sonra yapay zeka devreye giriyor ve sırasıyla şu adımları uyguluyor.
- kazanabileceği bir durum olup olmadığına bakıyor
- eğer varsa buna göre oynayıp oyunu kazanıyor
- eğer yoksa kaybedebileceği bir durum varsa buna göre oynuyor
- eğer o da yoksa rastgele oynuyor
ancak bir sorun var: program 3. hamleden sonra genelde duruyor(çökmüyor ama çalışmıyorda)
birkaç kez oynarsanız görürsünüz zaten
kodun okunmasının zor olduğunun farkındayım ama yardımcı olursanız sevinirim.
#İmport işleri
import random
from os import system
aaa = 0
#def işleri
xoxmap = [ "", "_", "_", "_", "_", "_", "_", "_", "_", "_" ]
oyuncuhamle = "5"
#O kazandımı
def xoxOwinconds():
xoxsatıratlama = -3
xoxsütunatlama = -1
for asdr in range(1, 4):
xoxsatıratlama += 3
xoxsütunatlama += 1
if xoxmap[1+xoxsatıratlama] == "O" and xoxmap[2+xoxsatıratlama] == "O" and xoxmap[3+xoxsatıratlama] == "O":
system("cls")
xoxprintmap()
print("O kazandı")
input()
raise
if xoxmap[1+xoxsütunatlama] == "O" and xoxmap[4+xoxsütunatlama] == "O" and xoxmap[7+xoxsütunatlama] == "O":
system("cls")
xoxprintmap()
print("O kazandı")
input()
raise
if xoxmap[1] == "O" and xoxmap[5] == "O" and xoxmap[9] == "O" or xoxmap[3] == "O" and xoxmap[5] == "O" and xoxmap[7] == "O" :
system("cls")
xoxprintmap()
print("O kazandı")
input()
raise
#X kazandımı
def xoxXwinconds():
xoxsatıratlama = -3
xoxsütunatlama = -1
for asdr in range(1, 4):
xoxsatıratlama += 3
xoxsütunatlama += 1
if xoxmap[1+xoxsatıratlama] == "X" and xoxmap[2+xoxsatıratlama] == "X" and xoxmap[3+xoxsatıratlama] == "X":
system("cls")
xoxprintmap()
print("X kazandı")
input()
raise
if xoxmap[1+xoxsütunatlama] == "X" and xoxmap[4+xoxsütunatlama] == "X" and xoxmap[7+xoxsütunatlama] == "X":
system("cls")
xoxprintmap()
print("X kazandı")
input()
raise
if xoxmap[1] == "X" and xoxmap[5] == "X" and xoxmap[9] == "X" or xoxmap[3] == "X" and xoxmap[5] == "X" and xoxmap[7] == "X" :
system("cls")
xoxprintmap()
print("X kazandı")
input()
raise
#Harita çizme
def xoxprintmap():
print(14*"-")
print("|", xoxmap[1], "|", xoxmap[2], "|", xoxmap[3], "|")
print(14*"-")
print("|", xoxmap[4], "|", xoxmap[5], "|", xoxmap[6], "|")
print(14*"-")
print("|", xoxmap[7], "|", xoxmap[8], "|", xoxmap[9], "|")
print(14*"-")
#Nasıl oynanır haritası çizme
def xoxprinthtp():
print(14*"-")
print("|", 1, "|", 2, "|", 3, "|")
print(14*"-")
print("|", 4, "|", 5, "|", 6, "|")
print(14*"-")
print("|", 7, "|", 8, "|", 9, "|")
print(14*"-")
while True:
#kullanıcı hamlesi
xoxOwinconds()
while True:
system("cls")
xoxprinthtp()
xoxprintmap()
oyuncuhamle=input("\n\nSıra sizde:")
if oyuncuhamle == "1":
if xoxmap[1] == "_":
xoxmap[1] = "X"
break
else:
print("Lütfen geçerli bir hamle girin")
if oyuncuhamle == "2":
if xoxmap[2] == "_":
xoxmap[2] = "X"
break
else:
print("Lütfen geçerli bir hamle girin")
if oyuncuhamle == "3":
if xoxmap[3] == "_":
xoxmap[3] = "X"
break
else:
print("Lütfen geçerli bir hamle girin")
if oyuncuhamle == "4":
if xoxmap[4] == "_":
xoxmap[4] = "X"
break
else:
print("Lütfen geçerli bir hamle girin")
if oyuncuhamle == "5":
if xoxmap[5] == "_":
xoxmap[5] = "X"
break
else:
print("Lütfen geçerli bir hamle girin")
if oyuncuhamle == "6":
if xoxmap[6] == "_":
xoxmap[6] = "X"
break
else:
print("Lütfen geçerli bir hamle girin")
if oyuncuhamle == "7":
if xoxmap[7] == "_":
xoxmap[7] = "X"
break
else:
print("Lütfen geçerli bir hamle girin")
if oyuncuhamle == "8":
if xoxmap[8] == "_":
xoxmap[8] = "X"
break
else:
print("Lütfen geçerli bir hamle girin")
if oyuncuhamle == "9":
if xoxmap[9] == "_":
xoxmap[9] = "X"
break
else:
print("Lütfen geçerli bir hamle girin")
else:
print("Lütfen geçerli bir hamle girin")
#yapay zeka hamlesi
xoxXwinconds()
while True:
#O kazanabilirmi
adblm = 0
#yanyana
if xoxmap[1] == "O" and xoxmap[2] == "O" :
oyuncuhamle = 3
adblm = 1
elif xoxmap[2] == "O" and xoxmap[3] == "O" :
oyuncuhamle = 1
adblm = 1
elif xoxmap[1] == "O" and xoxmap[3] == "O" :
oyuncuhamle = 2
adblm = 1
#üstüste
elif xoxmap[1] == "O" and xoxmap[4] == "O" :
oyuncuhamle = 7
adblm = 1
elif xoxmap[4] == "O" and xoxmap[7] == "O" :
oyuncuhamle = 1
adblm = 1
elif xoxmap[1] == "O" and xoxmap[7] == "O" :
oyuncuhamle = 4
adblm = 1
#yanyana
if xoxmap[4] == "O" and xoxmap[5] == "O" :
oyuncuhamle = 6
adblm = 1
elif xoxmap[5] == "O" and xoxmap[6] == "O" :
oyuncuhamle = 4
adblm = 1
elif xoxmap[4] == "O" and xoxmap[6] == "O" :
oyuncuhamle = 5
adblm = 1
#üstüste
elif xoxmap[2] == "O" and xoxmap[5] == "O" :
oyuncuhamle = 8
adblm = 1
elif xoxmap[5] == "O" and xoxmap[8] == "O" :
oyuncuhamle = 2
adblm = 1
elif xoxmap[2] == "O" and xoxmap[8] == "O" :
oyuncuhamle = 5
adblm = 1
#yanyana
if xoxmap[7] == "O" and xoxmap[8] == "O" :
oyuncuhamle = 9
adblm = 1
elif xoxmap[8] == "O" and xoxmap[9] == "O" :
oyuncuhamle = 7
adblm = 1
elif xoxmap[7] == "O" and xoxmap[9] == "O" :
oyuncuhamle = 8
adblm = 1
#üstüste
elif xoxmap[3] == "O" and xoxmap[6] == "O" :
oyuncuhamle = 9
adblm = 1
elif xoxmap[6] == "O" and xoxmap[9] == "O" :
oyuncuhamle = 3
adblm = 1
elif xoxmap[3] == "O" and xoxmap[9] == "O" :
oyuncuhamle = 6
adblm = 1
#çapraz
elif xoxmap[1] == "O" and xoxmap[5] == "O" :
oyuncuhamle = 9
adblm = 1
elif xoxmap[3] == "O" and xoxmap[5] == "O" :
oyuncuhamle = 7
adblm = 1
elif xoxmap[7] == "O" and xoxmap[5] == "O" :
oyuncuhamle = 3
adblm = 1
elif xoxmap[9] == "O" and xoxmap[5] == "O" :
oyuncuhamle = 1
adblm = 1
if adblm == 0:
#X kazanabilirmi
#yanyana
if xoxmap[1] == "X" and xoxmap[2] == "X" :
oyuncuhamle = 3
elif xoxmap[2] == "X" and xoxmap[3] == "X" :
oyuncuhamle = 1
elif xoxmap[1] == "X" and xoxmap[3] == "X" :
oyuncuhamle = 2
#üstüste
elif xoxmap[1] == "X" and xoxmap[4] == "X" :
oyuncuhamle = 7
elif xoxmap[4] == "X" and xoxmap[7] == "X" :
oyuncuhamle = 1
elif xoxmap[1] == "X" and xoxmap[7] == "X" :
oyuncuhamle = 4
#yanyana
elif xoxmap[4] == "X" and xoxmap[5] == "X" :
oyuncuhamle = 6
elif xoxmap[5] == "X" and xoxmap[6] == "X" :
oyuncuhamle = 4
elif xoxmap[4] == "X" and xoxmap[6] == "X" :
oyuncuhamle = 5
#üstüste
elif xoxmap[2] == "X" and xoxmap[5] == "X" :
oyuncuhamle = 8
elif xoxmap[5] == "X" and xoxmap[8] == "X" :
oyuncuhamle = 2
elif xoxmap[2] == "X" and xoxmap[8] == "X" :
oyuncuhamle = 5
#yanyana
elif xoxmap[7] == "X" and xoxmap[8] == "X" :
oyuncuhamle = 9
elif xoxmap[8] == "X" and xoxmap[9] == "X" :
oyuncuhamle = 7
elif xoxmap[7] == "X" and xoxmap[9] == "X" :
oyuncuhamle = 8
#üstüste
elif xoxmap[3] == "X" and xoxmap[6] == "X" :
oyuncuhamle = 9
elif xoxmap[6] == "X" and xoxmap[9] == "X" :
oyuncuhamle = 3
elif xoxmap[3] == "X" and xoxmap[9] == "X" :
oyuncuhamle = 6
#çapraz
elif xoxmap[1] == "X" and xoxmap[5] == "X" :
oyuncuhamle = 9
elif xoxmap[3] == "X" and xoxmap[5] == "X" :
oyuncuhamle = 7
elif xoxmap[7] == "X" and xoxmap[5] == "X" :
oyuncuhamle = 3
elif xoxmap[9] == "X" and xoxmap[5] == "X" :
oyuncuhamle = 1
else:
oyuncuhamle = random.randrange(1, 10)
oyuncuhamle = str(oyuncuhamle)
#Yapay zeka hangi hamlyi yaptı
if oyuncuhamle == "1":
if xoxmap[1] == "_":
xoxmap[1] = "O"
break
else:
pass
if oyuncuhamle == "2":
if xoxmap[2] == "_":
xoxmap[2] = "O"
break
else:
pass
if oyuncuhamle == "3":
if xoxmap[3] == "_":
xoxmap[3] = "O"
break
else:
pass
if oyuncuhamle == "4":
if xoxmap[4] == "_":
xoxmap[4] = "O"
break
else:
pass
if oyuncuhamle == "5":
if xoxmap[5] == "_":
xoxmap[5] = "O"
break
else:
pass
if oyuncuhamle == "6":
if xoxmap[6] == "_":
xoxmap[6] = "O"
break
else:
pass
if oyuncuhamle == "7":
if xoxmap[7] == "_":
xoxmap[7] = "O"
break
else:
pass
if oyuncuhamle == "8":
if xoxmap[8] == "_":
xoxmap[8] = "O"
break
else:
pass
if oyuncuhamle == "9":
if xoxmap[9] == "_":
xoxmap[9] = "O"
break
else:
pass
else:
pass