2016-06-06 2 views
0

이 문제에 대한 해결책을 찾기 위해 여기를 둘러 보았습니다. 어쩌면 당신은 도울 수 있습니다, 나는 오류를 볼 수 없습니다.TypeError : draw() missing 1 필요한 위치 인수 : 'screen'

File "copy.py", line 171, in <module> 
    main() 
    File "copy.py", line 128, in main 
    game.draw(screen) 
    File "copy.py", line 59, in draw 
    snake.draw(screen) 
TypeError: draw() missing 1 required positional argument: 'screen' 

다시 추적에서 참조 코드는

def main(): 
    pygame.init() 

    winWidth, winHeight = 800, 800 
    screen = pygame.display.set_mode([winWidth, winHeight]) 
    pygame.display.set_caption("Exploring mouse, keys, and event loops with Pygame") 

    running = 1 
    bgcolor = (0,0,0) 
    screen.fill(bgcolor) 

    game = SnaketheGame(winWidth, winHeight) 
    game.draw(screen) 

########## 
class SnaketheGame: 
    def __init__(self, winWidth, winHeight): 

     self.snake = snake 
     self.snakeMoving = False 
     self.growingSnake = False 
     self.food = food 

    def draw(self, screen): 
     self.snake.draw(screen) 
     for food in self.food: 
      food.draw(screen) 

아래에 내가 다른 답변을 통해 보면서 내가 클래스의 인스턴스를 호출하는 것을 확인했습니다 : 여기

는 역 추적입니다 먼저. 나는 여기서 내가 잘못하고있는 것을 알아낼 수 없다. 도와주세요!

+0

SnaketheGame 클래스에 대한 코드가 전부입니까? 초기 자의 모습이 궁금합니다. –

+0

@JennerFelton 이것은 클래스의 모든 코드가 아니므로, 유용하지 않은 비트를 잘라내려고했습니다. 내 원래 게시물을 편집하여 내 init을 포함 시켰습니다. –

+0

나는 이것이 문제라고 생각하지 않지만, 세계적으로 '뱀'과 '음식'이 정의되어 있는가? –

답변

0

정확하게 읽는다면 game = SnaketehGame(winWidth, winHeight)을 호출 할 때 실제로 게임을 초기화하지 않는다고 생각합니다. snakefood을 정의하지 않았기 때문에 제대로 초기화되지 않았기 때문에 game.draw에 전화를 걸 때 실제로 게임이 없으므로 입력이 self 대신 사용되고 있습니다. 이 때문에 위치 인수가 screen이 아닌 오류가 발생하는 이유는 screenself으로 사용되고 있습니다.

이 문제를 해결하려면 초기화를 수정하여 snakefood을 정의하십시오.

관련 문제