Я использую Python версии 3.6.5, загруженный с Python.org. Во время программирования я продолжаю получать ошибку TypeError: integer argument expected, got float
. Я использую Python версии 3.6.5, выиграть 32 бит. Вот еще мой полный код (над которым нужно работать еще):
import pygame
pygame.init()
black = (0,0,0)
white = (255,255,255)
red = (255,0,0)
blue = (0,0,255)
sky_blue = (0,150,225)
green = (0,255,0)
displayWidth = 800
displayHeight = 600
#Final :- pygame.display.set_mode((1365, 1050))
gameDisplay = pygame.display.set_mode((displayWidth,displayHeight))
pygame.display.set_caption('Super Mario')
clock = pygame.time.Clock()
crashed = False
timeOut = False
Quit = False
#50,75
marioStanding = pygame.image.load('Super_Mario_Standing.jpg')
marioStanding = pygame.transform.scale(marioStanding, (displayWidth/40,displayHeight/8))
def Stand(x,y):
gameDisplay.blit(marioStanding,(x,y))
x = (displayWidth * 0.45)
y = (displayHeight * 0.8)
while not crashed and not timeOut and not Quit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
Quit = True
print (event)
gameDisplay.fill(sky_blue)
Stand(x,y)
pygame.display.update()
clock.tick(24)
pygame.quit()
quit()
Я не получал никаких ошибок, прежде чем удалять высоту и ширину как 50,75
и заменять ее displayWidth/40, displayHeight/8
, поэтому я предполагаю, что это имеет какое-то отношение к этому. Вот полная ошибка:
Traceback (most recent call last):
File "C:\Users\Dell\Desktop\Super_Mario_Python3.6\Billionth_Pygame_Test.py", line 28, in <module>
marioStanding = pygame.transform.scale(marioStanding, (displayWidth/40,displayHeight/8))
TypeError: integer argument expected, got float
Добро пожаловать в python 3 с плавающей запятой. Вот:
pygame.transform.scale(marioStanding, (displayWidth/40,displayHeight/8))
ваши деления, даже если они сделаны между целыми числами, создают кортеж элементов float.
>>> 200/40
5.0
Используйте целочисленное деление, чтобы сохранить их как целые (это не относится к python 2), поэтому функция scale
принимает их как аргументы.
>>> 200//40
5
как это:
pygame.transform.scale(marioStanding, (displayWidth//40,displayHeight//8))
Примечание: он также работает в python 2.