问题描述
我的 Python 游戏有问题,这是我的第一个项目.我收到一个错误(类型错误:预期的整数参数,得到浮点数).当我插入我的用户定义函数拍摄时,它开始出现.如何解决这个问题或者让SuperMario图像拍摄一个带有类的圆形物体.谢谢:)
I am having problem with my python game, it's my first project. I am getting an error (TypeError: integer argument expected, got float). It's starting to come when I insert my user-defined function shoot. How to solve this problem or make a SuperMario image shoot a circular object with a class. Thanks :)
import pygame
import time
pygame.init()
display_height = 600
display_width = 800
white = (255,255,255)
gameDisplay = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('Igra1')
clock = pygame.time.Clock()
bg = pygame.image.load('background.jpg')
bg = pygame.transform.scale(bg,(800, 600))
Img_SuperMario = pygame.image.load('SuperMario.png')
SuperMario_width = 611
SuperMario_height = 611
Img_SuperMario = pygame.transform.scale(Img_SuperMario, (100, 100))
def shoot(xshoot):
while xshoot < display_width:
pygame.draw.circle(gameDisplay, white, (xshoot,50), 20 ,0)
xshoot += 10
def SuperMario(x,y):
gameDisplay.blit(Img_SuperMario,(x,y))
def gameloop():
x = (display_width * 0.1)
y = (display_height * 0.1)
x_change = 0
y_change = 0
game_exit = False
while not game_exit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x_change = -5
elif event.key == pygame.K_RIGHT:
x_change = 5
elif event.key == pygame.K_UP:
y_change = -5
elif event.key == pygame.K_DOWN:
y_change = 5
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT or event.key == pygame.K_DOWN or event.key == pygame.K_UP:
x_change = 0
y_change = 0
if x == display_width - 100 or x == 0:
x_change = 0
if y == (display_height - 100) or y == 0:
y_change = 0
x += x_change
y += y_change
xshoot = x
gameDisplay.fill(white)
gameDisplay.blit(bg,(0,0))
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
while xshoot < display_width:
shoot(x)
SuperMario(x,y)
pygame.display.update()
clock.tick(60)
gameloop()
pygame.quit()
quit()
推荐答案
pygame.draw.circle
函数只接受整数,但你的 x
变量是一个浮点数.在 shoot
函数中将 xshoot
变量转换为整数,例如:
The pygame.draw.circle
function only accepts integers, but your x
variable is a float. Convert the xshoot
variable to an integer in the shoot
function, e.g.:
pygame.draw.circle(gameDisplay, white, (int(xshoot), 50), 20 ,0)
看起来您还需要更改 while xshoot <display_width:
在主循环和 shoot
函数中循环,但我不确定你想要实现什么.
It looks like you also need to change the while xshoot < display_width:
loops in the main loop and the shoot
function, but I'm not sure what you want to achieve.
这篇关于类型错误:预期的整数参数,得到浮点数,python 3.6.3 with pygame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!