2016-08-27 3 views
-1

Ich bin mir nicht ganz sicher, was mit dieser Linie falsch ist, ich verstehe nicht, warum sie problematisch sind. In der Reihenfolge der Probleme (fehlgeschlagene Zeile wird mit *** hervorgehoben)Mehrere unerwartete Fehler

Datei "C: \ Benutzer \ Harry \ Desktop \ CS Projekt \ Spiel Test", Zeile 32, in DrawArena pygame.draw.line (DISPLAYSURF, WEISS, ((Window/2), 0), ((Window/2), Window), ('LineThickness'/4)) Typeerror: integer Argument erwartet, float erhielt

Datei „C: \ Benutzer \ Harry \ Desktop \ CS Project \ Spiel-Test“, Linie 144, in der Haupt drawArena()

Datei "C: \ Benutzer \ Harry \ Desktop \ CS Project \ Spiel-Test", Linie 178, in main ()

def drawArena(): 
    DISPLAYSURF.fill((0,0,0)) 
    #Draw outline of arena 
    pygame.draw.rect(DISPLAYSURF, WHITE, ((0,0),(WINDOWWIDTH,WINDOWHEIGHT)), LINETHICKNESS*2) 
    #Draw centre line 
    ***pygame.draw.line(DISPLAYSURF, WHITE, ((WINDOWWIDTH/2),0),((WINDOWWIDTH/2),WINDOWHEIGHT), (LINETHICKNESS/4))*** 

***drawArena()*** 
drawPaddle(paddle1) 
drawPaddle(paddle2) 
drawBall(ball) 

if __name__ == '__main__': 
    ***main()*** 
+3

als der Fehler anzeigt, erwartet Ihre Funktion ganzen Zahlen und Sie vorbei es schwimmt - i an Einwickeln diese '/ 2' Anrufe wie' int (VARNAME/2 aussehen würde) ' – derelict

Antwort

1

Es sagt Ihnen den Fehler. Wenn Sie die Methode pygame.draw.line() verwenden, müssen Sie ganzzahlige Argumente für die Dimensionen der Zeile angeben. Wenn Sie an Ihrer problematischen Linie aussehen:

pygame.draw.line(DISPLAYSURF, WHITE, ((WINDOWWIDTH/2),0),((WINDOWWIDTH/2),WINDOWHEIGHT), (LINETHICKNESS/4))

Einen oder mehrere der Quotienten dieser Division Operationen führen zu einem Schwimmer (dezimal) Nr. Eine einfache Möglichkeit, dies zu beheben, ist die Python int() Funktion verwenden alle Ihre Dezimalstellen auf eine ganze Zahl gerundet werden, etwa so:

pygame.draw.line(int((WINDOWWIDTH/2)),0),(int((WINDOWWIDTH/2)),WINDOWHEIGHT), int((LINETHICKNESS/4)))

Wenn int, aus irgendeinem Grund nicht geeignet ist, können Sie auch die Python round() Funktion:

pygame.draw.line(round((WINDOWWIDTH/2)),0),(round((WINDOWWIDTH/2)),WINDOWHEIGHT), round((LINETHICKNESS/4)))

+0

Es gibt einen neuen Fehler: int() Argument muss eine Zeichenfolge oder eine Zahl sein, nicht 'Tupel' –

+0

@HarryEastell Mein schlechtes. Ich habe die falsche Syntax angegeben. Ich werde es reparieren. –

+0

@HarryEastell Okay, ich habe es repariert. –