2016-05-09 2 views
-2

Ich habe versucht, einfache Anweisungen zum Erstellen eines Spiels in Python zu folgen, aber aus irgendeinem Grund funktioniert es nicht und wenn ich diesen Code eingeben:Was "Float" -Objekt kann nicht als eine ganze Zahl interpretiert werden bedeutet und wie kann ich es helfen - Python Fehler

import pygame 
from pygame.locals import * 

pygame.init() 
width, height = 640, 480 
screen=pygame.display.set_mode((width, height)) 

keys = [False, False, False, False] 
playerpos=[100,100] 


player = pygame.image.load("resources/images/dude.png") 
grass = pygame.image.load("resources/images/grass.png") 
castle = pygame.image.load("resources/images/castle.png") 

while 1: 
    screen.fill(0) 
#Its this bit 'for' instruction that comes up with the error 
    for x in range(width/grass.get_width()+1): 
     for y in range(height/grass.get_height()+1): 

      screen.blit(grass,(x*100,y*100)) 
    screen.blit(castle,(0,30)) 
    screen.blit(castle,(0,135)) 
    screen.blit(castle,(0,240)) 
    screen.blit(castle,(0,345)) 
    screen.blit(player,playerpos) 
    pygame.display.flip() 
    for event in pygame.event.get(): 
     if event.type==pygame.QUIT: 
      pygame.quit() 
      exit(0) 

Dort heißt es: File "/Pygame/game.py", Zeile 18, in für x in Bereich (Breite/grass.get_width() + 1) TypeError: 'float' -Objekt kann nicht als eine ganze Zahl interpretiert werden

Die Website, die ich verfolgen, ist: https://www.raywenderlich.com/24252/beginning-game-programming-for-teens-with-python

Wenn jemand mir sagen könnte, was ich falsch mache, wäre es sehr geschätzt, wenn nicht nur erklären, was der Fehler bedeutet, könnte helfen. Vielen Dank

+1

Eine 2-sekündige Google-Suche würde dies für Sie lösen und Ihnen die Zeit sparen, diesen Beitrag zu schreiben – Idos

Antwort

1

Dies passiert, weil width/grass.get_width() einen Float anstelle eines int zurückgibt. Das Tutorial, das Sie gerade verwenden, sagt Python 2.7, damit Sie weitere Probleme wie dieses Problem bekommen, wenn Sie mit Python 3 fortfahren, aber um dieses Problem zu beheben, können Sie / durch // ersetzen, um Integer Division zu verwenden.