python初学者,我用的是pycharm编码器,想看网课自学做《飞机大战》游戏,前面一切都好,结果到创建完敌机精灵,我尝试运行时就出错了。
以下是我的完整游戏代码:
飞机大战代码
import sys
import pygame
from plane_sprites import *
pygame.init()#初始化pygame
#创建游戏窗口
screen = pygame.display.set_mode((480,752))
#游戏标题栏
pygame.display.set_caption('飞机大战')
#绘制背景图像
#1.加载图像数据
bg = pygame.image.load('background.png')
#2.使用blit方法绘制图像
screen.blit(bg,(0,0))
#绘制我方战机
hero1 = pygame.image.load('hero1.png')
screen.blit(hero1,(200,500))#图片出现位置
#3.调用flip更新屏幕显示
pygame.display.flip()
#在游戏初始化中创建游戏时钟对象
clock = pygame.time.Clock()
#定义飞机的初始位置
hero1_rect = pygame.Rect(200,500,102,126)
#创建敌机的精灵
enemy = GameSprite('enemy1.png')
#创建敌机的精灵组
enemy_group = pygame.sprite.Group(enemy)
#死循环 游戏循环,游戏不暂停,代表游戏开始
while True:
clock.tick(60)#游戏帧率
hero1_rect.y -= 1
screen.blit(bg, (0, 0))
screen.blit(hero1,hero1_rect)
enemy_group.update()
enemy_group.draw(screen)
if hero1_rect.y <= 0:
hero1_rect.y = 700
pygame.display.flip()
for event in pygame.event.get():
if event.type ==pygame.QUIT:#判断事件类型是否属于游戏结束
sys.exit()#直接终止程序
精灵和精灵组代码
import pygame
class GameSprite(pygame.sprite.Sprite):#飞机大战精灵
def __init__(self):
#调用父类的初始化方法
super().__init__()
#定义对象的属性
self.image = pygame.image.load(image_name)
self.rect = self.image.get_rect()
self.speed = speed
def update(self):
#在屏幕的垂直方向上移动
self.rect.y += self.speed
pass
运行报错如下
看不太懂,还请各位多多指教,在下感激不尽!