新人使用pycharm运行飞机大战项目报如下错误:AttributeError: module 'pygame.image' has no attribute 'get_rect'

看着网上的教学视频一步一步下来,当建立敌机的精灵后,在程序中调用这个精灵时就会报错,单独运行精灵程序时不会报错,在网上也找了相关的资料,但类似的好像也不对;

主程序代码如下:

import pygame
from plane_sprites import *

pygame.init()

#创建游戏窗口 480*700
screen = pygame.display.set_mode((480,700))

#绘制背景图像
bg = pygame.image.load("./images/background.png")
screen.blit(bg,(0,0))

#绘制英雄的飞机
hero = pygame.image.load("./images/me1.png")
screen.blit(hero,(150,400))

#可以在所有绘制工作结束后,统一调度update方法啊
pygame.display.update()

#创建时钟对象
clock = pygame.time.Clock()

#1.定义rect记录飞机的初始位置
hero_rect = pygame.Rect(150,400,102,126)

#创建敌机的精灵
enemy = GameSprite("./images/enemy1.png")
enemy1 = GameSprite("./images/enemy1.png",2)
#创建敌机的精灵组
enemy_group = pygame.sprite.Group(enemy,enemy1)

#游戏循环>意味着游戏正式开始
while True:
    #1.可以指定循环体内部的代码执行的频率
    clock.tick(60)
    """
    #捕获事件
    event_list = pygame.event.get()
    if len(event_list) > 0:
        print(event_list)
    """
    #事件监听
    for event in pygame.event.get():

        #判断用户是否点击了关闭按钮
        if event.type == pygame.QUIT:
            print('退出游戏!')

            pygame.quit()

            #直接退出系统
            exit()

    #2.修改飞机的位置
    hero_rect.y -= 1

    #判读飞机的位置
    if hero_rect.y <= -126:
        hero_rect.y = 700

    #3.调用blit方法绘制图像
    screen.blit(bg,(0,0))
    screen.blit(hero,hero_rect)

    #让精灵族调用两个方法
    #update - 让组中的所有精灵都更新位置
    enemy_group.update()

    #draw - 在screen上显示所有的精灵
    enemy_group.draw(screen)

    #4.使用update方法更新显示
    pygame.display.update()

pygame.quit()

调用的精灵程序如下:

import pygame

class GameSprite(pygame.sprite.Sprite):
    """飞机大战精灵"""

    def __init__(self, image_name, speed=1):

        #调用父类的初始化方法
        super().__init__()

        #定义对象的属性
        self.image = pygame.image.load(image_name)
        self.rect = pygame.image.get_rect()
        self.speed = speed

    def update(self):

        #在屏幕的垂直方向移动
        self.rect.y += self.speed

运行后报如下的错误:
AttributeError: module 'pygame.image' has no attribute 'get_rect'

图片说明

还请各位大佬有时间能帮忙看下这个问题我出错在哪里了,谢谢哈

1个回答

self.rect = pygame.image.get_rect()
改成
self.rect = self.image.get_rect()

qq_42404800
白衣不争 太感谢了,修改后真的可以了,我那个去,按照视频里面的就算写的pygame,搞的一直报错,谢谢谢谢
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐