Kultura kódu:
OBROVSKÁ POCHVALA!
for cary in range(1):
left(45)
forward(sqrt(2)*x)
left(135)
forward(x)
left(135)
forward(sqrt(2)*x)
Provádíme úpravy, úpravy, úpravy, až zbyde něco jako range(1).
V reálném vývoji software tento problém řeší tzv. code reviews (systém 2 párů oči). Pokud provádíme vývoji sami, je vhodné si nechat odstup alespoň 24 hodin a podívat se na vlastní kód znovu, nejdřív blok po bloku, pak řádek po řádku...
Další důsledek vývojářské slepoty. Lze odstranit pomocí chytře zkonstruovaných funkcí, přidaných argumentů apod. Ideální je opět systém 2 párů očí pro odhalení duplicit v kódu.
Začínámé vždy od nuly. Jsme prostě divní programátoři a divné programátorky. :-)
range(5) # 0, 1, 2, 3, 4
"čokoláda"[0] # "č"
from random import randrange
def tah(pole, cislo_policka, symbol):
"Vrátí herní pole s daným symbolem umístěným na danou pozici"
return pole[:cislo_policka] + symbol + pole[cislo_policka + 1:]
def tah_hrace(pole, symbol):
"Vrátí herní pole se zaznamenaným tahem hráče"
while True:
cislo_policka = int(input('Zadejte cislo políčka: '))
if cislo_policka >= len(pole) or cislo_policka < 0:
print('Vaše volba je mimo rozsah pole. Zkuste to znovu!')
elif pole[cislo_policka] == '-':
return tah(pole, cislo_policka, symbol)
else:
print('Toto pole je už obsazené. Zkuste to znovu!')
def tah_pocitace(pole, symbol_hrace, symbol_pocitace):
"Vrátí herní pole se zaznamenaným tahem počítače"
if pole.find(symbol_pocitace + symbol_pocitace + '-') > -1:
cislo_policka = pole.find(symbol_pocitace + symbol_pocitace + '-') + 2
elif pole.find('-' + symbol_pocitace + symbol_pocitace) > -1:
cislo_policka = pole.find('-' + symbol_pocitace + symbol_pocitace)
elif pole.find(symbol_pocitace + '-' + symbol_pocitace) > -1:
cislo_policka = pole.find(symbol_pocitace + '-' + symbol_pocitace) + 1
elif pole.find(symbol_hrace + '-') > -1:
cislo_policka = pole.find(symbol_hrace + '-') + 1
elif pole.find('-' + symbol_hrace + symbol_hrace) > -1:
cislo_policka = pole.find('-' + symbol_hrace + symbol_hrace)
elif pole.find(symbol_pocitace + '-' + '-') > -1:
cislo_policka = pole.find(symbol_pocitace + '-' + '-') + 1
elif pole.find('-' + '-' + symbol_pocitace) > -1:
cislo_policka = pole.find('-' + '-' + symbol_pocitace) + 1
elif pole.find('-' + symbol_hrace) > -1:
cislo_policka = pole.find('-' + symbol_hrace)
else:
cislo_policka = pole.find('-')
print('tah pocitace:', cislo_policka)
return tah(pole, cislo_policka, symbol_pocitace)
def vyhodnot(herni_pole):
"Vrátí výsledek hry"
if herni_pole.find('xxx') != -1:
vysledek = 'x'
elif herni_pole.find('ooo') != -1:
vysledek = 'o'
elif herni_pole.find('-') == -1:
vysledek = '!'
else:
vysledek = '-'
return vysledek
def piskvorky1d(pole, symbol_hrace, symbol_pocitace):
while True:
pole = tah_hrace(pole, symbol_hrace)
print(pole)
vysledek = vyhodnot(pole)
if vysledek == symbol_hrace:
konec_hry = 'Vyhrál jste'
break
elif vysledek == '!':
konec_hry = 'Remíza'
break
pole = tah_pocitace(pole, symbol_hrace, symbol_pocitace)
print(pole)
vysledek = vyhodnot(pole)
if vysledek == symbol_pocitace:
konec_hry = 'Počítač vyhrál'
break
elif vysledek == '!':
konec_hry = 'Remíza'
break
return konec_hry
# Zkouška funkce
vychozi_pole = 20*'-'
symbol_hrace = 'x'
symbol_pocitace = 'o'
print(vychozi_pole)
print(piskvorky1d(vychozi_pole, symbol_hrace, symbol_pocitace))