Uživatelské nástroje

Nástroje pro tento web


turtle:mainloop

Toto je starší verze dokumentu!


Smyčka událostí

Poté co želvičce v předchozím programu došly příkazy, program doběhl - ukončil se. Pokud budeme chtít aby želvička reagovala na nějaké podněty (např. na stisk klávesy), musíme program zablokovat před koncem. K tomu slouží takzvaný simulační cyklus. Pro Turtle nám jej může poskytnout Screen prostřednictvím metody .

from turtle import Screen,Turtle
 
zelvicka = Turtle('triangle')
 
wn = Screen()
wn.setup(700, 700)
 
# Funkce pro obsluhu udalosti stisku klavesy
#  - zelvicka pojede dopredu 
def stisknutiKlavesyNahoru():
  zelvicka.forward(5)
 
# Napojeni na stisk klavesy
wn.onkeypress(stisknutiKlavesyNahoru,'Up')
 
wn.listen()
 
# Začíná simulační smyčka
wn.mainloop()
 
# Sem už program nedoběhne
Úkol
  • Rozšiř předchozí kód pro obsluhu kláves dolů ('Down'), vlevo('Left'), vpravo('Right'). Použij funkce turtle.backward(1),turtle.left(10),turtle.right(10)

Vlastní smyčka

V předchozím programu nahradíme volání wn.mainloop() svým vlastím nekonečným cyklem while

from turtle import Screen,Turtle
 
zelvicka = Turtle('triangle')
wn = Screen()
wn.setup(700, 700)
 
def stisknutiKlavesyNahoru():
  zelvicka.forward(5)
 
wn.onkeypress(stisknutiKlavesyNahoru,'Up')
 
while True:
  # "prázdný" pohyb želvičky
  zelvicka.left(0.1)  
  zelvicka.right(0.1)
  # další příkazy
 
# Sem už program nedoběhne
turtle/mainloop.1563783242.txt.gz · Poslední úprava: 2023/02/08 23:35 (upraveno mimo DokuWiki)