我在这里有一个游戏代码。我已在主函数中注释掉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()
答案 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