#python #python-3.x #debugging #turtle-graphics #python-turtle
Вопрос:
Поэтому я пытаюсь улучшить свои навыки работы на Python; Я сделал игру из учебника для создания классической игры понг. Однако в моем коде есть две основные проблемы, которые я не могу точно определить, что их вызывает.
Мяч не движется, что нехорошо, так как это важная функция игры. счетчик очков игрока два растет с экспоненциальной скоростью, как будто мяч, который не движется, прошел эту сторону игровой стены.
Мой код для шарика и ручки выглядит следующим образом. Я думаю, что это может быть связано со временем игрового цикла ( wn.update()
), но я совершенно потерялся. Я попытался замедлить игру, импортировав время ( time.sleep(0.09)
), но мне не повезло.
Я понятия не имею, почему счет обновляется, так как мяч не будет двигаться. это было в черепахе, а не в PyGame. Приведенный ниже код предназначен для игрового мяча и ручки.
ball.speed(0)
ball.shape("circle")
ball.color("white")
ball.penup()
ball.goto(0, 0)
ball.shapesize(stretch_wid=1.5)
ball.dx = 2
ball.dy = 2
pen = turtle.Turtle()
pen.speed(0)
pen.color("white")
pen.penup()#So it does not draw lines.
pen.hideturtle()
pen.goto(0, 260)
pen.write(" Player One: 0 Player Two", align="center", font=("Courier", 24, "normal"))
И в моем основном игровом цикле у меня есть:
wn.update()
time.sleep(0.09) # where 0.09 is the number of seconds (note milliseconds)
# to do nothing for.
# Moving the ball
ball.setx(ball.xcor() ball.dx)
ball.sety(ball.ycor() ball.dy)
Комментарии:
1. вы должны использовать on_timer для периодического запуска функции — и эта функция должна перемещать мяч. И это не будет блокировать другой код.
Ответ №1:
Вы не должны использовать time.sleep()
в turtle, потому что это останавливает всю игру и ее цикл событий, вместо этого используйте это:
screen.ontimer(func_name, 2000) #ms
Комментарии:
1. Какое отношение
pygame
имеет этот вопрос к делу?2. Спасибо, что, похоже, замедлило его, однако мяч все еще не движется.
3. Ваше приветствие, тогда это может быть еще один вопрос, касающийся движения, прежде чем остановиться с
screen.ontimer