在Python中为游戏添加分数时钟

时间:2016-06-01 18:25:14

标签: python function python-3.x pygame

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

功能displayScore的目标是在左上角显示游戏分数。对于对方球员的得分,也需要在右下角显示。

以下是在主要功能中注释掉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()

1 个答案:

答案 0 :(得分:2)

只需替换

displayScore(score) 

通过:

displayScore(str(score)) 

您正在尝试使用数字而不是字符串来表示render的参数;)Score是一个int,而BASICFONT.render((score), True, WHITE) 要求得分为字符串或字节数组:)

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

    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