不能在pygame.draw.circle中使用变量?

时间:2011-09-18 16:56:31

标签: python variables floating-point pygame draw

当我尝试使用变量创建一个形状时,我不断收到此错误消息:

“TypeError:期望的整数参数,浮动”

import pygame._view
import pygame, sys
from pygame.locals import *
import random

pygame.init()

...

barrel = pygame.image.load("images\Barrel.gif")
barrel_create = 0
barrelx = screen.get_height()- barrel.get_height()
barrely = screen.get_width()/2 - barrel.get_width()/2
barrel_exist = 0
explosion_delay = 0

...

while running:

    if barrel_exist == 0:
        if barrel_create == 500:
            barrely = 200
        barrelx = random.randint(0,400)
        barrel_exist = 1
    if barrel_exist == 1:
        barrely = barrely + 0.1
        if barrely > 400:
            barrel_exist = 0

    if explosion_delay > 0:
        pygame.draw.circle(screen, (0,255,0), (barrelx, barrely), 64, 0)
    explosion_delay = explosion_delay + 1

    if explosion_delay == 100:
    explosion_delay = 0

explosion_delay>桶被“射击”时为0。

4 个答案:

答案 0 :(得分:8)

barrely = barrely + 0.1

由于这一行,

barrely在某些时候必须是浮点数。

我认为你应该pygame.draw.circle(screen, (0,255,0), (int(barrelx), int(barrely)), 64, 0)将变量截断为函数所需的整数。

答案 1 :(得分:2)

您没有说明哪一行会出错,但如果您使用的是Python 3,则/会提供float结果。使用//表示整数。

答案 2 :(得分:0)

感谢所有的答案 - 只是想注意一下,关于PyODE Tutorial 2(使用pygame完成),我也遇到了同样的问题;感谢这个帖子中的注释,我对其进行了修改以使其正常工作,它就在这里:pyode-pygame-example2.py

但是,请注意,确实在你转换为int的地方很重要 - 如果你有一个计算坐标的函数,你想要“整合”它的返回('final'坐标),不是它的论点:)(我在上面的剧本中做的错误

答案 3 :(得分:0)

我从

更改
pygame.draw.circle(win, self.color,(self.x, self.y), 
           self.radius)

pygame.draw.circle(win, self.color, (int(self.x), 
          int(self.y)), int(self.radius))

,它工作正常。我使用python 2.7