当我尝试使用变量创建一个形状时,我不断收到此错误消息:
“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。
答案 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