편집 기록

편집 기록
  • 프로필 엽토군님의 편집
    날짜2020.11.29

    파이썬 스파이더 에러


    파일명: alien_invasion.py

    import sys
    import pygame
    
    from settings import Settings
    from ship import Ship
    
    def run_game(): #게임 초기화&화면 객체 만들기
        pygame.init()
        ai_settings = Settings()
        screen = pygame.display.set_mode(
            (ai_settings.screen_width, ai_settings.screen_height))
        pygame.display.set_caption("Alien Invasion")
    
        #우주선 만들기
        ship = Ship(screen)
    
        while True: #게임 메인 루프 시작
    
            for event in pygame.event.get(): #키보드와 마우스 이벤트
                if event.type == pygame.QUIT:
                    sys.exit()
    
            screen.fill(ai_settings.bg_color) #루프 실행할 때마다 화면에 다시 그림
            ship.blitme()
    
            pygame.display.flip() #가장 최근에 그린 화면
    
    run_game()
    

    파일명:settings.py

    class Settings():
    
        def __init__(self):
    
            self.screen_width = 1000
            self.screen_height = 600
            self.bg.color = (230, 230, 230)
    

    파일명:Ship.py

    import pygame
    
    class Ship():
        def __init__(self, screen):
            #우주선 초기화&시작위치 지정
            self.screen = screen
    
            #우주선 이미지 불러오기, 이미지 rect 객체 설정
            self.image = pygame.image.load('C:/Users/user/Pictures/space ship.PNG')
            self.rect = self.image.get_rect()
            self.screen_rect = screen.get_rect()
    
            #우주선 새로 만들 때 항상 화면 아래 중앙에 만들기
            self.rect.centerx = self.screen_rect.centerx
            self.rect.bottom = self.screen_rect.bottom
    
        def blitme(self):
            #우주선 현재 위치에 우주선 그리기
            self.screen.blit(self.image, self.rect)
    

    교재에 나와있는 그대로 작성했습니다. 그런데 alien_invasion에서 실행해보면

    > Reloaded modules: settings, ship
    >Traceback (most recent call last):
     > File "C:\Users\user\.spyder-py3\alien_inavasion.py", line 35, in <module>
        run_game()
     > File "C:\Users\user\.spyder-py3\alien_inavasion.py", line 16, in run_game
        ai_settings = Settings()
     >File "C:\Users\user\.spyder-py3\settings.py", line 14, in __init__
        self.bg.color = (230, 230, 230)
    >AttributeError: 'Settings' object has no attribute 'bg'
    

    이런 오류가 뜹니다ㅜㅜ 보통 인스턴스 속성 오류라고 뜨는데 어디가 잘못되었는지 모르겠습니다.

  • 프로필 알 수 없는 사용자님의 편집
    날짜2020.11.29

    파이썬 스파이더 에러


    파일명: alien_invasion.py

    ```import sys import pygame

    from settings import Settings from ship import Ship

    def run_game(): #게임 초기화&화면 객체 만들기 pygame.init() ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) pygame.display.set_caption("Alien Invasion")

    #우주선 만들기
    ship = Ship(screen)
    
    while True: #게임 메인 루프 시작
    
        for event in pygame.event.get(): #키보드와 마우스 이벤트
            if event.type == pygame.QUIT:
                sys.exit()
    
        screen.fill(ai_settings.bg_color) #루프 실행할 때마다 화면에 다시 그림
        ship.blitme()
    
        pygame.display.flip() #가장 최근에 그린 화면
    

    run_game()

    
    파일명:settings.py
    
    ```class Settings():
    
        def __init__(self):
    
            self.screen_width = 1000
            self.screen_height = 600
            self.bg.color = (230, 230, 230)
    

    파일명:Ship.py

    import pygame
    
    class Ship():
        def __init__(self, screen):
            #우주선 초기화&시작위치 지정
            self.screen = screen
    
            #우주선 이미지 불러오기, 이미지 rect 객체 설정
            self.image = pygame.image.load('C:/Users/user/Pictures/space ship.PNG')
            self.rect = self.image.get_rect()
            self.screen_rect = screen.get_rect()
    
            #우주선 새로 만들 때 항상 화면 아래 중앙에 만들기
            self.rect.centerx = self.screen_rect.centerx
            self.rect.bottom = self.screen_rect.bottom
    
        def blitme(self):
            #우주선 현재 위치에 우주선 그리기
            self.screen.blit(self.image, self.rect)
    

    교재에 나와있는 그대로 작성했습니다. 그런데 alien_invasion에서 실행해보면

    Reloaded modules: settings, ship Traceback (most recent call last): File "C:\Users\user.spyder-py3\alien_inavasion.py", line 35, in run_game() File "C:\Users\user.spyder-py3\alien_inavasion.py", line 16, in run_game ai_settings = Settings() File "C:\Users\user.spyder-py3\settings.py", line 14, in init self.bg.color = (230, 230, 230) AttributeError: 'Settings' object has no attribute 'bg'

    이런 오류가 뜹니다ㅜㅜ 보통 인스턴스 속성 오류라고 뜨는데 어디가 잘못되었는지 모르겠습니다.