白衣不争 2020-02-08 06:00 采纳率: 100%
浏览 2687
已采纳

新人使用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条回答 默认 最新

  • 代码的灵魂是bug! 2020-02-08 06:11
    关注

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

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

报告相同问题?

悬赏问题

  • ¥50 有偿求qftp工具。能连接,下载文件,发送代码,windows环境,最好qt6 要qt creator写的
  • ¥70 刚刚看到一个人的网站居然是通过cname访问的
  • ¥15 Attributeerror:super object has no attribute '__sklearn_tags__'_'
  • ¥15 逆置单链表输出不完整
  • ¥15 宇视vms-B200-A16@R启动不了,如下图所示,在软件工具搜不到,如何解决?(操作系统-linux)
  • ¥500 寻找一名电子工程师完成pcb主板设计(拒绝AI生成式答案)
  • ¥15 关于#mysql#的问题:UNION ALL(相关搜索:sql语句)
  • ¥15 matlab二位可视化能否针对不同数值范围分开分级?
  • ¥15 已经创建了模拟器但是不能用来运行app 怎么办😭自己搞两天了
  • ¥15 关于#极限编程#的问题,请各位专家解答!
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部