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.

145 lines
5.3 KiB
Markdown

5 years ago
# ondra.py
```python
# 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: # gay protoze input chack vraci bool - Dawid
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")
```