我现在正在使用Python构建一个太空入侵者项目。我目前遇到的错误是AttributeError:(ai_setting.screen_width,ai_setting.screen_height)) 'Settings‘对象在Python语言中没有'screen_width’属性。底部的"run_game()“部分也有一个错误。到目前为止,这款游戏应该会绘制一个屏幕,并在屏幕的底部中心放置一个船舶图像。谢谢!
import pygame
from settings import Settings
from ship import Ship
import game_functions as gf
def run_game():
pygame.init()
ai_setting = Settings()
#Creating the screen
screen = pygame.display.set_mode(
(ai_setting.screen_width, ai_setting.screen_height))
#Creating title
pygame.display.set_caption("Space Invasion")
ship = Ship(screen)
#Creating the logo/icon
icon = pygame.image.load("space-invaders.png")
pygame.display.set_icon(icon)
while True:
gf.check_events()
gf.update(ai_setting, screen,ship)
run_game()上图: main.py文件
class Settings():
def _init__(self):
self.screen_width = 800
self.screen_height = 600
self.bg_color = (0,255,0)上图: settings.py文件
import pygame
import sys
def check_events():
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
def update(ai_settings, screen, ship):
screen.fill(ai_setting.bg_color)
ship.blitme
pygame.display.flip()上图: game_events.py文件
import pygame
class Ship():
def __init__(self, screen):
self.screen = screen
self.image = pygame.image.load("space-invaders.py")
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)上图: ship.py文件
发布于 2021-06-05 05:17:22
您在Settings类中有一个拼写错误。它的__init__中缺少下划线。您必须:
def _init__(self):相反,你应该拥有:
def __init__(self):由于这种拼写错误,在调用Settings()时将不会创建或设置screen_width和screen_height属性。
https://stackoverflow.com/questions/67844038
复制相似问题