[Tutor PyCZ] Dalsi problem s Livewires

Tomáš Bělonožník rebelme na gmail.com
Úterý Únor 28 14:09:16 CET 2006


Moc díky za rady, konečně už jsem pochopil to "xh, yh, Hrac_telo =
vyrobHrace()".  Narazil jsem ale na další problém, který souvisí s
prvním. Snažil jsem se funkci posunHrace napsat takhle:

def posunHrace():
    stisky = keys_pressed()
    if "2" in stisky:
        yh = yh - 10
        move_to(Hrac_telo, xh, yh)
        return yh

Mělo to fungovat tak, abych změnil yh, pak posunul hráče podle na
novou hodnotu, a pak si nechal vrátit yh v nové formě. Hází mi to ale
chybu "local variable 'yh' referenced before assignment". Chápu to
tak, že jsem proměnnou yh zmínil ještě předtím, než jsem jí přiřadil
nějakou hodnotu. Ale proč si tu hodnotu nevezme sám z vyšších pater
programu, jako to udělal, když řádek move_to vypadal
"move_to(Hrac_telo, xh, yh-10)". To totiž hráčem opravdu posunul o 10
pixelů. Potřeboval bych tedy prosím vědět, jak říci funkci, aby si
vzala potřebné hodnoty "zeshora"

BTW, nějak jsem to přeci jen sesmolil, ale bez return, tudíž je to
takové neohrabané, když ty operace s koordinaty nejsou soucasti zadne
funkce...:

def posunHrace():
   move_to(Hrac_telo, xh, yh)
while 1:
   klavesy = keys_pressed()
   if "2" in klavesy:
       yh = yh - 10
       sleep(0.2)   # sleep je tu proto, že při zkoušení v Shellu se
hráč pohyboval příliš rychle
   elif "8" in klavesy:
       yh = yh + 10
       sleep(0.2)
   posunHrace()
   if "q" in klavesy:
       break


Další informace o konferenci Tutor