В приведенной ниже программе я предполагаю, что при вызове screen.clear() в reset_game() все черепахи уничтожаются, что я подтверждаю, печатая длину screen.turtles() в конце reset_game(). И тем не менее, каждый раз, когда вызывается reset_game(), через некоторое время на экране отображается больше следов, что для меня не имеет смысла. Кто-нибудь может объяснить, в чем проблема?
import turtle
import random
WIDTH = 600
HEIGHT = 600
def go_left(tur, screen):
tur.left(45)
def go_right(tur, screen):
tur.right(45)
def go_forward(tur, screen):
tur.forward(10)
if is_border_collision(tur.pos()):
game_over(screen)
def go_backward(tur,screen):
tur.backward(10)
if is_border_collision(tur.pos()):
game_over(screen)
def is_border_collision(pos):
print(pos)
return pos[0] < (- WIDTH // 2) + 20 or pos[0] > WIDTH // 2 - 20 \
or pos[1] < (- HEIGHT // 2) + 20 or pos[1] > HEIGHT // 2 - 20
def game_over(screen):
reset_game(screen)
# GAME LOOP
def game_loop(tina, bob, screen):
tina.setheading(tina.towards(bob))
tina.forward(5)
turtle.ontimer(lambda: game_loop(tina, bob, screen), 100)
def init_screen():
screen = turtle.Screen()
screen.setup(WIDTH, HEIGHT)
screen.title("Turtle Game")
return screen
def reset_game(screen):
screen.clearscreen()
screen.bgcolor("green")
tina = turtle.Turtle()
tina.shape("turtle")
tina.color("red")
tina.pensize(10)
tina.speed(10)
bob = turtle.Turtle()
bob.shape("turtle")
bob.color("yellow")
bob.pensize(10)
bob.penup()
bob.goto(200, 200)
bob.pendown()
bob.speed(10)
screen.listen()
canvas = screen.getcanvas()
canvas.bind('', lambda event: go_forward(bob, screen))
canvas.bind('', lambda event: go_backward(bob, screen))
canvas.bind('', lambda event: go_left(bob, screen))
canvas.bind('', lambda event: go_right(bob, screen))
print(len(screen.turtles()))
game_loop(tina, bob, screen)
def main():
screen = init_screen()
reset_game(screen)
return "DONE"
if __name__ == "__main__":
msg = main()
print(msg)
turtle.done()
Подробнее здесь: https://stackoverflow.com/questions/618 ... set-screen
Странное поведение Python Turtle при перезагрузке экрана ⇐ Python
Программы на Python
-
Anonymous
1762620624
Anonymous
В приведенной ниже программе я предполагаю, что при вызове screen.clear() в reset_game() все черепахи уничтожаются, что я подтверждаю, печатая длину screen.turtles() в конце reset_game(). И тем не менее, каждый раз, когда вызывается reset_game(), через некоторое время на экране отображается больше следов, что для меня не имеет смысла. Кто-нибудь может объяснить, в чем проблема?
import turtle
import random
WIDTH = 600
HEIGHT = 600
def go_left(tur, screen):
tur.left(45)
def go_right(tur, screen):
tur.right(45)
def go_forward(tur, screen):
tur.forward(10)
if is_border_collision(tur.pos()):
game_over(screen)
def go_backward(tur,screen):
tur.backward(10)
if is_border_collision(tur.pos()):
game_over(screen)
def is_border_collision(pos):
print(pos)
return pos[0] < (- WIDTH // 2) + 20 or pos[0] > WIDTH // 2 - 20 \
or pos[1] < (- HEIGHT // 2) + 20 or pos[1] > HEIGHT // 2 - 20
def game_over(screen):
reset_game(screen)
# GAME LOOP
def game_loop(tina, bob, screen):
tina.setheading(tina.towards(bob))
tina.forward(5)
turtle.ontimer(lambda: game_loop(tina, bob, screen), 100)
def init_screen():
screen = turtle.Screen()
screen.setup(WIDTH, HEIGHT)
screen.title("Turtle Game")
return screen
def reset_game(screen):
screen.clearscreen()
screen.bgcolor("green")
tina = turtle.Turtle()
tina.shape("turtle")
tina.color("red")
tina.pensize(10)
tina.speed(10)
bob = turtle.Turtle()
bob.shape("turtle")
bob.color("yellow")
bob.pensize(10)
bob.penup()
bob.goto(200, 200)
bob.pendown()
bob.speed(10)
screen.listen()
canvas = screen.getcanvas()
canvas.bind('', lambda event: go_forward(bob, screen))
canvas.bind('', lambda event: go_backward(bob, screen))
canvas.bind('', lambda event: go_left(bob, screen))
canvas.bind('', lambda event: go_right(bob, screen))
print(len(screen.turtles()))
game_loop(tina, bob, screen)
def main():
screen = init_screen()
reset_game(screen)
return "DONE"
if __name__ == "__main__":
msg = main()
print(msg)
turtle.done()
Подробнее здесь: [url]https://stackoverflow.com/questions/61859122/python-turtle-weird-behavior-when-i-reset-screen[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия