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 Fluent udf 编写问题
  • ¥15 求合并两个字节流VB6代码
  • ¥15 Pyqt 如何正确的关掉Qthread,并且释放其中的锁?
  • ¥30 网站服务器通过node.js部署了一个项目!前端访问失败
  • ¥15 WPS访问权限不足怎么解决
  • ¥15 java幂等控制问题
  • ¥15 海湾GST-DJ-N500
  • ¥15 氧化掩蔽层与注入条件关系
  • ¥15 Django DRF 如何反序列化得到Python对象类型数据
  • ¥15 多数据源与Hystrix的冲突