파이썬 스파이더 에러

조회수 822회

파일명: 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'

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

  • 에러난게 지금 Settings라는 오브젝트에는 bg라는 속성이 없다고 하는데 self.bg.color = (230,230,230) 이부분을 확인해보세요 알 수 없는 사용자 2020.11.30 09:46

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)