2016-08-27 3 views
-1

Я не совсем уверен, что не так с этой строкой, я не понимаю, почему они проблематичны. В порядке возникновения проблем (строка с ошибкой будет выделена с помощью ***)Несколько неожиданных ошибок

Файл «C: \ Users \ Harry \ Desktop \ CS Project \ игровой тест», строка 32, в drawArena pygame.draw.line (DISPLAYSURF, белый, ((WindowWidth/2), 0), ((WindowWidth/2), WindowHeight), (LINETHICKNESS/4)) TypeError: целочисленный аргумент и ожидалось, получил поплавок

Файл «C: \ Users \ Harry \ Desktop \ CS Project \ тест игры», строка 144, в главном drawArena()

Файл "C: \ Users \ Harry \ Desktop \ CS Project \ игра тест", строка 178, в основной ()

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

как ошибка указывает на то, ваша функция ожидает целых чисел и вы передаете она плавает - я бы смотреть на оберточной эти '/ 2' вызовы типа' Int (VarName/2) ' – derelict

ответ

1

Это сообщение об ошибке. При использовании метода pygame.draw.line() вы должны указать целочисленные аргументы для размеров строки. Если вы посмотрите на проблемную линии:

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

один или несколько дробей этих операций делений приводят к поплавку (десятичное) число. Один простой способ исправить это, чтобы использовать функцию Python int() обогнуть любой из ваших знаков после запятой до целого числа, например:

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

Если ИНТ, по каким-то причинам не подходит, вы можете также использовать функция Python round():

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

+0

Появилась новая ошибка: аргумент int() должен быть строкой или числом, не 'tuple' –

+0

@HarryEastell Мой плохой. Я дал неправильный синтаксис. Я исправлю это. –

+0

@HarryEastell Хорошо, я исправил его. –

Смежные вопросы