【问题标题】:Adding Score Clock to Game in Python在 Python 中为游戏添加计分时钟
【发布时间】:2016-06-01 18:25:14
【问题描述】:

我在这里有我的游戏代码。我已经在主函数中注释掉了 displayScore(score) 调用以允许程序运行。当取消注释该调用时,程序窗口在打开后立即关闭。

函数displayScore的目的是在左上角显示游戏得分。对方球员的得分也需要显示在右上角。

这里是游戏的代码,在 main 函数中注释掉了 displayScore,这样你就可以运行游戏,一切都会正常运行。取消注释以查看问题所在:

        ball = ballmovement(ball, ballDirX, ballDirY) 
        ballDirX, ballDirY = collisionwithedges(ball, ballDirX, ballDirY)
        score = checkscore(paddle1, ball, score, ballDirX)
        ballDirX = ballDirX * collisionwithpaddles(ball, paddle1, paddle2, ballDirX) 

        pygame.display.update() #updates the display to clear surface per the frame rate
        FRAMECLOCK.tick(FRAMERATE) #Sets the Frames of program to defined rate

if __name__=='__main__':
    main()

【问题讨论】:

  • 关闭时是否给出错误消息?该方法中没有任何内容会导致它关闭。您需要在帖子中包含该错误。此外,值得您花时间阅读minimal reproducible example
  • 我的 IDE 甚至没有给出奇怪的错误消息。它只是说重新打开外壳。

标签: python function python-3.x pygame


【解决方案1】:

只要换行

displayScore(score) 

作者:

displayScore(str(score)) 

您试图在 render 的参数中使用数字而不是字符串;) Score 是一个 int 并且 BASICFONT.render((score), True, WHITE) 要求 score 是一个字符串或字节数组 :)

我只是通过阅读控制台输出找到了解决方案,这是一个很好的指示^^

    Traceback (most recent call last):
  File "test.py", line 130, in <module>
    main()
  File "test.py", line 118, in main
    displayScore(score) 
  File "test.py", line 71, in displayScore
    resultSurf = BASICFONT.render((score), True, WHITE)
TypeError: text must be a unicode or bytes

【讨论】:

  • 我在str中添加了displayScore,现在窗口甚至都打不开了。
  • 嗯..奇怪;在我的电脑上,它可以工作。您使用的是 python 版本 2 还是 3?
  • 我正在使用 python 3
  • 您是否将 str 添加到函数调用或函数签名中? (应该是函数调用)。我问它是因为我不明白为什么它不能在您的计算机上打开,但在我的计算机上却不能打开 ^^ 您使用的是 IDE 吗?你能访问错误日志吗(它应该是可以访问的;它是调试的必备工具)
  • 我缺少一个右括号。它现在保持分数,但每次乒乓球击中左桨时都会增加分数,除了右墙(这很好)。每次乒乓球碰到左墙​​时,它也会减去一个点。
猜你喜欢
  • 2019-01-21
  • 2019-09-09
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
  • 1970-01-01
相关资源
最近更新 更多