Персонаж не ходит плавно при зажатии
Всем привет! Те, которые используют turtle знают, что персонаж не движется плавно при зажатии. А это мешает геймлею. Как это исправить?
import turtle as tr
pl = tr.Turtle()
pl.pu()
wn = tr.Screen()
def d():
pl.goto(pl.xcor(),pl.ycor()-10)
wn.listen()
wn.onkeypress(d,"Down")
wn.mainloop()
Ответы (1 шт):
Автор решения: Сергей Кох
→ Ссылка
Надо чтоб передвижение не зависило от редких импульсов от зажатой клавиши клавиатуры. Поэтому pl.goto запихиваем в цикл while.
import turtle as tr
flag = 1
pl = tr.Turtle()
pl.pu()
wn = tr.Screen()
def d():
global flag
flag = 1
while flag:
pl.goto(pl.xcor(),pl.ycor()-3)
def stop_d():
global flag
flag = 0
wn.listen()
wn.onkeypress(d,"Down")
wn.onkeyrelease(stop_d, "Down")
wn.mainloop()
Так правда все остальное зависнет до отпускания клавиши, тогда используем ontimer:
import turtle as tr
flag = 1
pl = tr.Turtle()
pl.pu()
wn = tr.Screen()
def d():
global flag
if flag:
pl.goto(pl.xcor(),pl.ycor()-3)
wn.ontimer(d, 1)
else:
flag = 1
def stop_d():
global flag
flag = 0
wn.listen()
wn.onkeypress(d,"Down")
wn.onkeyrelease(stop_d, "Down")
wn.mainloop()