首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属性和其他在我的Python代码中发现的错误

属性和其他在我的Python代码中发现的错误
EN

Stack Overflow用户
提问于 2021-06-05 05:14:20
回答 1查看 26关注 0票数 1

我现在正在使用Python构建一个太空入侵者项目。我目前遇到的错误是AttributeError:(ai_setting.screen_width,ai_setting.screen_height)) 'Settings‘对象在Python语言中没有'screen_width’属性。底部的"run_game()“部分也有一个错误。到目前为止,这款游戏应该会绘制一个屏幕,并在屏幕的底部中心放置一个船舶图像。谢谢!

代码语言:javascript
复制
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文件

代码语言:javascript
复制
class Settings():
    def _init__(self):
            self.screen_width = 800
            self.screen_height = 600
            self.bg_color = (0,255,0)

上图: settings.py文件

代码语言:javascript
复制
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文件

代码语言:javascript
复制
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文件

EN

回答 1

Stack Overflow用户

发布于 2021-06-05 05:17:22

您在Settings类中有一个拼写错误。它的__init__中缺少下划线。您必须:

代码语言:javascript
复制
def _init__(self):

相反,你应该拥有:

代码语言:javascript
复制
def __init__(self):

由于这种拼写错误,在调用Settings()时将不会创建或设置screen_widthscreen_height属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67844038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档