python_123_123 2022-06-08 09:04 采纳率: 100%
浏览 16
已结题

外星人入侵项目,加载飞般出错

问题遇到的现象和发生背景

外星人入侵项目,执行飞船载入时。求助各位大神。

问题相关代码,请勿粘贴截图
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("外星人入侵")
    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()

class Settings():
    #存储《外星人入侵》的所有设置的类
    def __init__(self):
        #初始化游戏的设置
        #屏幕设置
        self.screen_width=1000
        self.screen_height=600
        self.bg_color=(230,230,230)
        

import pygame
class Ship():
    def __init__(self,screen):
        #初始化飞船并设置初始位置
        self.screen=screen
        #加载飞船对象并获取其外接矩形
        self.image=pygame.image.load('E:Python\images\ship.bmp')
        self.rect=self.image.get_rect()
        self.screen=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)
        
运行结果及报错内容

Traceback (most recent call last):
  File "e:/Python/alien_invasion/alien_invasion.py", line 23, in <module>
    run_game()
  File "e:/Python/alien_invasion/alien_invasion.py", line 12, in run_game
    ship=Ship(screen)
  File "e:\Python\alien_invasion\ship.py", line 11, in __init__
    self.rect.centerx=self.screen_rect.centerx
AttributeError: 'Ship' object has no attribute 'screen_rect'
我的解答思路和尝试过的方法

去掉ship类,可以成功运行主窗口。

我想要达到的结果

可以成功加载飞船

  • 写回答

1条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-06-08 10:14
    关注

    Ship类里的 self.screen=screen.get_rect() 这一句写错了,
    应该是:
    self.screen_rect=screen.get_rect()
    改了你再试试

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月16日
  • 已采纳回答 6月8日
  • 创建了问题 6月8日

悬赏问题

  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了