Bonjour.
J'ai télécharger un jeu sur le site de Pygame.
Quand je lance le main, python me renvoi une erreur provenant d'un module.
Traceback (most recent call last):
File "C:\Python31\Stupid Jetpak Mario Nov 25 10 SOURCE\main.py", line 141, in <module>
m = Main()
File "C:\Python31\Stupid Jetpak Mario Nov 25 10 SOURCE\main.py", line 31, in __init__
self.levelLoader.load(1)
File "C:\Python31\Stupid Jetpak Mario Nov 25 10 SOURCE\levelLoader.py", line 32, in load
for y in range(self.main.gridH):
TypeError: 'float' object cannot be interpreted as an integer
Voici le module en question:
import os
import pygame
import enemies
#import helpers
import objects
class LevelLoader:
def __init__(self,main):
self.main = main
def load(self,levelNumber):
img = pygame.image.load(os.path.join('data','levels',str(levelNumber)+'.png'))
self.main.gridW = img.get_width()
self.main.gridH = self.main.H/self.main.GES
self.main.minX = 0
self.main.maxX = self.main.gridW*self.main.GES
self.main.rect = pygame.Rect(self.main.minX,0,self.main.maxX-self.main.minX,self.main.H)
self.main.grid = []
self.main.cloudPathGrid = [] #Grid of 1s and 0s telling where clouds can and can not go.
for x in range(self.main.gridW):
gridCol = []; cloudCol = []
for y in range(self.main.gridH):
gridCol.append([]); cloudCol.append(0)
self.main.grid.append(gridCol)
self.main.cloudPathGrid.append(cloudCol)
for x in range(self.main.gridW):
for y in range(self.main.gridH):
c = img.get_at((x,y))
#See data\levels\key.txt
#BLOCKS
if c == (255,255,255):
self.main.get(objects.NormBlock(self.main,x,y)) #Normal Block
elif c == (128,128,128):
self.main.get(objects.MetalBlock(self.main,x,y)) #Metal Block
elif c == (255,0,0):
self.main.get(objects.DamagerBlock(self.main,x,y)) #Damager Block
#ITEMS
elif c == (255,255,128):
self.main.get(objects.CoinBlock(self.main,x,y)) #Coin Block
elif c == (128,255,255):
self.main.get(objects.ChaosBlock(self.main,x,y)) #Coin Block
elif c == (255,128,128):
self.main.get(objects.EvilItemBlock(self.main,x,y)) #Evil Item Block
#ENEMIES
elif c == (255,128,255):
self.main.cloudPathGrid[x][y] = 1 #Cloud Path
elif c == (255,0,255):
self.main.get(enemies.Cloud(self.main,x,y)) #Cloud
self.main.cloudPathGrid[x][y] = 1 #Also puts path there
elif c == (255,0,128):
self.main.get(enemies.Walker(self.main,x,y))
#PIPES
elif c == (0,255,0):
if img.get_at((x-1,y)) == (0,255,0): pass #This has been taken care of.
else: #We will put a pipe part here.
if img.get_at((x,y-1)) == (0,255,0): self.main.get(objects.PipeExtender(self.main,x,y)) #This is not the top.
else: self.main.get(objects.PipeTop(self.main,x,y)) #Put on the top to the pipe.
elif c == (255,255,0):
self.main.get(objects.Coin(self.main,x,y))
TypeError: 'float' object cannot be interpreted as an integer
C'est quand même explicite là. Si tu n'apprends pas à comprendre les messages d'erreur même les plus triviaux, tu auras besoin des forums à chaque erreur bête que tu fais, c'est quand même dommage...
C'est une erreur de type, je sait...
Sauf que ce n'est pas moi qui est coder le jeu, je ne sait donc rien sur les variables ou ce qu'elle peuvent contenires...
Tu as un message d'erreur qui te dis que sur la ligne qui pose problème, un float ne peut pas être interprété comme 'integer'.
Autrement formulé : tu passe un float dans un contexte ou il attends un entier.
Dans la ligne qui pose problème tu as une fonction range() qui est ultra connue, et à laquelle on passe un paramètre self.main.gridH.
Or il semblerait que range() veuille un int en paramètre, et que self.main.gridH soit un float.
Traceback (most recent call last):
File "C:\Python31\Stupid Jetpak Mario Nov 25 10 SOURCE\main.py", line 141, in <module>
m = Main()
File "C:\Python31\Stupid Jetpak Mario Nov 25 10 SOURCE\main.py", line 31, in __init__
self.levelLoader.load(1)
File "C:\Python31\Stupid Jetpak Mario Nov 25 10 SOURCE\levelLoader.py", line 32, in load
for y in range(self.main.gridH):
TypeError: 'float' object cannot be interpreted as an integer
Je me sens plein de gentillesse ce matin, allez: foryinrange(int(self.main.gridH)):
Blond, bouclé, toujours le sourire aux lèvres...
Python c'est bon, mangez-en.
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Python c'est bon, mangez-en.