Před delší dobou jsem zde psal ohledně seznamů v Pythonu. Po přečtění vašich reakcí na to, že bych měl pořádně projet základy, jsem se znovu vrátil k oněm základním věcem. Poté jsem zkusil naprogramovat hru hada.
Myslíte, že byste ten můj výtvor mohli zhodnotit? (k čemu máte výtky, popř. co byste udělali jinak...)
Zajímá mě jestli se mám pustit do nových lekcí, nebo pořád dřít ty základy.
from livewires import *
import random
import time
def kresli_hada(delka):
hadak = []
had_x = random.randrange(100, 560,10)
had_y = random.randrange(100, 200, 10)
plno = True
for x in range(delka):
had = box(had_x, had_y, had_x + 10, had_y + 10, filled = plno)
hadak.append([had, had_x, had_y])
had_x -= 10
plno = False
return hadak
def pohybHada(x, y):
global koncime
polozka = 0
minule_x = hadak[polozka][1]
minule_y = hadak[polozka][2]
hadak[polozka][1] += x
hadak[polozka][2] += y
for blok, blok_x, blok_y in hadak[1:]:
polozka += 1
hadak[polozka][1] = minule_x
hadak[polozka][2] = minule_y
minule_x = blok_x
minule_y = blok_y
for blok, blok_x, blok_y in hadak:
move_to(blok, blok_x, blok_y)
konec = srazkaShadem()
konec2 = srazkaSEzdi()
srazkaSjidlem()
if konec == 0 or konec2 == 0:
koncime = 0
time.sleep(0.05)
def klavesy_a_pohybHada(zmena_x, zmena_y, klavesa1, klavesa2):
seznam_klaves = [klavesa1, klavesa2]
while koncime:
pohybHada(zmena_x, zmena_y)
klavesy = keys_pressed()
for klavesa in seznam_klaves:
if klavesa in klavesy:
return klavesa
def posunHada():
klavesy = keys_pressed()
if "a" in klavesy:
klavesy = klavesy_a_pohybHada(-10, 0, "w", "s")
elif "s" in klavesy:
klavesy = klavesy_a_pohybHada(0, -10, "a", "d")
elif "w" in klavesy:
klavesy = klavesy_a_pohybHada(0, 10, "a", "d")
elif "d" in klavesy:
klavesy = klavesy_a_pohybHada(10, 0, "w", "s")
def skore(body):
global sezrane_jidlo_text
t = body
sezrane_jidlo_text = text(t)
def jidlo():
while 1:
ruzne_souradnice = True
jidlo_x = random.randrange(10,630,10)
jidlo_y = random.randrange(0,470,10)
for souradnice in hadak:
if [jidlo_x, jidlo_y] == souradnice[1:]:
ruzne_souradnice = False
break
if ruzne_souradnice == True:
break
jidlo = box(jidlo_x, jidlo_y, jidlo_x + 10, jidlo_y + 10)
return [jidlo, jidlo_x, jidlo_y]
def srazkaSjidlem():
global cele_jidlo, body
if hadak[0][1:] == cele_jidlo[1:]:
hadak.append(cele_jidlo)
cele_jidlo = jidlo()
remove_from_screen(sezrane_jidlo_text)
body += 1
skore(body)
def srazkaSEzdi():
if hadak[0][1] == 640 or hadak[0][2] == 470:
return 0
elif hadak[0][1] == -10 or hadak[0][2] == -10:
return 0
def srazkaShadem():
for blok, blok_x, blok_y in hadak[1:]:
if blok_x == hadak[0][1] and blok_y == hadak[0][2]:
return 0
def jmeno_hrace():
jmeno = raw_input("JMENO: ")
return jmeno
def uloz_nejVysledky(body):
soubor = file("NEJLEPSI VYSLEDKY - hadak1,1.txt","a")
hrac = jmeno_hrace()
text_body = str(body)
soubor.write(text_body + " " + hrac)
soubor.write("\n")
soubor.close()
def cti_srovnej_nejVysledky():
q = 0
soubor = file("NEJLEPSI VYSLEDKY - hadak1,1.txt", "r")
poradi = 1
srovnani_seznamu = []
for vysledek in soubor:
srovnani = vysledek.split()
srovnani_seznamu.append(srovnani)
for skore, jmeno in srovnani_seznamu:
srovnani_seznamu[q][0] = int(skore)
q += 1
print 10 * "_", "Tabulka s body hracu", 10 * "_"
print "\n"
srovnani_seznamu.sort()
srovnani_seznamu.reverse()
for skore, jmeno in srovnani_seznamu:
print jmeno, ":", skore
soubor.close()
def smaz_tabulku():
soubor = file("NEJLEPSI VYSLEDKY - hadak1,1.txt", "w")
soubor.close()
znovu = "y"
while znovu == "y":
koncime = 1
body = 0
begin_graphics()
allow_moveables()
hadak = kresli_hada(5)
cele_jidlo = jidlo()
move(10, 450) # skore se bude tisknout v rohu obrazovky
skore(body)
while koncime:
posunHada()
end_graphics()
uloz_nejVysledky(body)
cti_srovnej_nejVysledky()
znovu = raw_input("Chces hrat znovu [y/n] : ")
print "\n"
smazat_tabulku = raw_input("Chces smazat tabulku se vsemi vysledky [y/n]: ")
if smazat_tabulku == "y":
smaz_tabulku()
print "Tabulka je smazana :)"
print "Dostal ses na konec programu, nic vic uz tady neni, musis si me spustit znova :)"