You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
5.3 KiB
Python

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Zdar, tady Lukáš
# Taky je v tvém kódu přímo vidět nějaký ten vliv toho C# nebo tak něčeho,
# protože pojmenováváš věci s velkým písmenem na začátku. Dále jsi také s pojmenováváním trošku nekonzistentní.
# V Pythonu jsou zvyky trochu jiné, ale chyba to samozřejmě není.
# Dobrý, akorát k tomu mám jednu připomínku
# tady ukládáš data rovnou v jejich výsledném formátu, ale smysluplnější je ukládat
# data v nějakém jednodušším formátu, který je pak před vypsáním do výsledného formátu převeden,
# protože takto musíš porovnávat políčka s jejich výslednými formáty
board = ["[ ]", "[ ]", "[ ]",
"[ ]", "[ ]", "[ ]",
"[ ]", "[ ]", "[ ]"]
player_2 = False
Hra = True
kolo = 1
winner_2 = None
# Lukáš - Docela fajn, vypadá to čitelně
#spuští funkce ve správném pořadí
def tah():
Tah = Input_pos()
while Input_chack(Tah) == False:
Tah = Input_pos()
Move(Tah)
Show()
#zobarí hrací desku
def Show(): # Lukáš - bylo by lepší, kdyby Show bralo board jako argument
print(board[0], board[1], board[2], sep="")
print(board[3], board[4], board[5], sep="")
print(board[6], board[7], board[8], sep="")
print("_________")
#vrátí array s xy informací o tahu
def Input_pos():
player = int(player_2) + 1
print("hráč", player, "hraje")
vert = int(input("zadej sloupec (max 3)"))
while vert > 3:
print("vstup nesmí být větší než 3")
vert = int(input("zadej sloupec (max 3)"))
hor = int(input("zadej řádek (max 3)"))
while hor > 3:
hor = int(input("zadej řádek (max 3)"))
print("vstup nesmí být větší než 3")
tah = [vert, hor]
return To_Index(tah)
#změní políčko
# Lukáš - tady bereš tah jako argument, ale proč ne board? je to pak takový podivně globální
def Move(tah):
if Input_chack(tah):
if player_2:
x = "O"
else:
x = "X"
board[tah] = "[" + x + "]"
else:
pass
# Lukáš - a v tvém komentáři je děsivá pravopisná chyba :^)
# Lukáš - i programátor musí umět pravopis, i když všichni už víme, že programovací jazyky dávají mnohem větší smysl
# Lukáš - (jedna kamarádka mi pořád opravuje chyby, takže už mi to teď taky dost vadí)
#skontroluje platnost vstupu
def Input_chack(index):
if not board[index] == "[ ]":
print("pole je již obsazené")
return Falsetsko
else:
return True
#převede array s xy pozicí do indexu
def To_Index(tah):
index = tah[0] + ((tah[1] - 1) * 3) - 1
return index
# Lukáš - tohle by se dalo udělat za pomocí cyklů mnohem snadněji, příště to zkus nějak chytřeji
# Lukáš - jakmile začneš psát kód, který se nějak podivně opakuje, tak zkus popřemýšlet, jak by to šlo lépe
# Lukáš - taky by bylo lepší, kdyby Chack bralo board jako argument, je to flexibilnější a znovu použitelné
#skontroluje zde hráč nevyhrál
# Lukáš - další děsivá pravopisná chyba
def Chack():
if board[0] == board[1] and board[0] == board[2] and not board[0] == "[ ]": #123
if board[0] == "[X]":
return True
else:
return False
elif board[3] == board[4] and board[3] == board[5] and not board[3] == "[ ]": #456
if board[3] == "[X]":
return True
else:
return False
elif board[6] == board[7] and board[6] == board[8] and not board[6] == "[ ]": #789
if board[6] == "[X]":
return True
else:
return False
elif board[0] == board[3] and board[0] == board[6] and not board[0] == "[ ]": #147
if board[0] == "[X]":
return True
else:
return False
elif board[1] == board[4] and board[1] == board[7] and not board[1] == "[ ]": #258
if board[1] == "[X]":
return True
else:
return False
elif board[2] == board[5] and board[2] == board[8] and not board[2] == "[ ]": #369
if board[2] == "[X]":
return True
else:
return False
elif board[0] == board[4] and board[0] == board[8] and not board[0] == "[ ]": #159
if board[0] == "[X]":
return True
else:
return False
elif board[2] == board[4] and board[2] == board[6] and not board[2] == "[ ]": #357
if board[2] == "[X]":
return True
else:
return False
else:
return None
Show()
while Hra:
tah()
if not Chack() == None:
# Lukáš - tohle je neskutečně matoucí, nechápu proč ti Chack vrací None nebo bool a ne True/False, to by bylo mnohem srozumitelnější
# Lukáš - ty dokonce ten možný True/False výsledek z Chack ani nevyužiješ
# Lukáš - mimochodem, když porovnáváš == None, tak je vhodnější použít is None (porovnání identity objektu), protože None existuje pouze jenom jedno pro celý vesmír
Hra = False
if player_2:
print("Hráč 2 wyhrál v kole", kolo)
else:
print("Hráč 1 wyhrál v kole", kolo)
player_2 = not player_2 # Lukáš - inteligentní
kolo += 1
if kolo > 8: # Lukáš - taky inteligentní
Hra = False
print("Hra skončila bez výsledku")