Merhabalar, class kullanarak xox oyunu yazıyorum. Yalnız oyunKontrol fonksiyonunun döndürdüğü false değerinden sonra kazanan ekranı yazdırması ve kapanması gerekiyor ama oyun devam ediyor. Yardımcı olur musunuz?
class Oyun:
def __init__(self):
self.tahta = [["()", "()", "()", ], ["()", "()", "()"], ["()", "()", "()"]]
self.durum = True
self.hamle = 0
def oyna(self):
if self.hamle % 2 == 0:
self.p1secim()
else:
self.p2secim()
self.durum = self.oyunKontrol()
if not self.durum:
self.tahtaGoster()
if self.hamle % 2 == 0:
kazanan = "X"
else:
kazanan = "O"
print("Oyun sonlandı! Kazanan = {} ".format(kazanan))
self.hamle += 1
def p1secim(self):
self.tahtaGoster()
print("1.Oyuncu")
satir = int(input("Satırı giriniz: "))
while satir < 1 or satir > 3:
satir = int(input("Girilecek satır değeri 1-3 arasında olmalıdır, tekrar giriniz: "))
sutun = int(input("Sütunu giriniz: "))
while sutun < 1 or sutun > 3:
sutun = int(input("Girilecek sutun değeri 1-3 arasında olmalıdır, tekrar giriniz: "))
if self.doluMu(satir, sutun):
print("Belirtilen alan dolu, tekrar deneyiniz: ")
self.p1secim()
else:
self.tahta[satir-1][sutun-1] = "X"
def p2secim(self):
self.tahtaGoster()
print("2.Oyuncu")
satir = int(input("Satırı giriniz: "))
while satir < 1 or satir > 3:
satir = int(input("Girilecek satır değeri 1-3 arasında olmalıdır, tekrar giriniz: "))
sutun = int(input("Sütunu giriniz: "))
while sutun < 1 or sutun > 3:
sutun = int(input("Girilecek sutun değeri 1-3 arasında olmalıdır, tekrar giriniz: "))
if self.doluMu(satir, sutun):
print("Belirtilen alan dolu, tekrar deneyiniz: ")
self.p2secim()
else:
self.tahta[satir-1][sutun-1] = "O"
def doluMu(self, satir, sutun):
if self.tahta[satir-1][sutun-1] != "()":
return True
else:
return False
def tahtaGoster(self):
for i in self.tahta:
for j in i:
print(j, end=" ")
print("\n")
def oyunKontrol(self):
# Yatay Kontrol
if [self.tahta[0][0], self.tahta[0][1], self.tahta[0][2]] == ["X", "x", "x"] or [self.tahta[0][0], self.tahta[0][1], self.tahta[0][2]] == ["O", "O", "O"]:
return False
if [self.tahta[1][0], self.tahta[1][1], self.tahta[1][2]] == ["X", "x", "x"] or [self.tahta[1][0], self.tahta[1][1], self.tahta[1][2]] == ["O", "O", "O"]:
return False
if [self.tahta[2][0], self.tahta[2][1], self.tahta[2][2]] == ["X", "x", "x"] or [self.tahta[2][0], self.tahta[2][1], self.tahta[2][2]] == ["O", "O", "O"]:
return False
# Dikey Kontrol
if [self.tahta[0][0], self.tahta[1][0], self.tahta[2][0]] == ["X", "x", "x"] or [self.tahta[0][0], self.tahta[1][0], self.tahta[2][0]] == ["O", "O", "O"]:
return False
if [self.tahta[0][1], self.tahta[1][1], self.tahta[2][1]] == ["X", "x", "x"] or [self.tahta[0][1], self.tahta[1][1], self.tahta[2][1]] == ["O", "O", "O"]:
return False
if [self.tahta[0][2], self.tahta[1][2], self.tahta[2][2]] == ["X", "x", "x"] or [self.tahta[0][2], self.tahta[1][2], self.tahta[2][2]] == ["O", "O", "O"]:
return False
# Çapraz Kontrol
if [self.tahta[0][0], self.tahta[1][1], self.tahta[2][2]] == ["X", "x", "x"] or [self.tahta[0][0], self.tahta[1][1], self.tahta[2][2]] == ["O", "O", "O"]:
return False
if [self.tahta[0][2], self.tahta[1][1], self.tahta[2][0]] == ["X", "x", "x"] or [self.tahta[0][2], self.tahta[1][1], self.tahta[2][0]] == ["O", "O", "O"]:
return False
return True
oyun = Oyun()
while oyun.durum:
oyun.oyna()