【问题标题】:Pong game - why won't ball move? (possible time.sleep issue)乒乓球 - 为什么球不动? (可能是 time.sleep 问题)
【发布时间】:2021-05-10 20:39:28
【问题描述】:

所以我正在努力提高我的 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)

【问题讨论】:

  • 您应该使用on_timer 定期运行函数-并且该函数应该移动球。而且这不会阻塞其他代码。

标签: python python-3.x debugging turtle-graphics python-turtle


【解决方案1】:

你不应该在turtle中使用time.sleep(),因为它会停止整个游戏及其事件循环,而是使用这个:

screen.ontimer(func_name, 2000) #ms

【讨论】:

  • pygame 和这个问题有什么关系?
  • 感谢这似乎减慢了速度,但球仍然没有移动。
  • 欢迎您,那么在暂停screen.ontimer之前,这可能是关于运动的另一个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
相关资源
最近更新 更多