看着网上的教学视频一步一步下来,当建立敌机的精灵后,在程序中调用这个精灵时就会报错,单独运行精灵程序时不会报错,在网上也找了相关的资料,但类似的好像也不对;
主程序代码如下:
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'
还请各位大佬有时间能帮忙看下这个问题我出错在哪里了,谢谢哈