问题遇到的现象和发生背景
pygame飞机大战超过最大的递归深度
问题相关代码,请勿粘贴截图
主函数
import pygame
from GameSprite import *
# 初始化pygame
pygame.init()
# 创建游戏画面
screen=pygame.display.set_mode((480,700))
# 加载背景图片到游戏画面
bg=pygame.image.load("./pygame/images/background.png")
# 绘制图像
screen.blit(bg,(0,0))
# 加载飞机图片到游戏画面
fly1=pygame.image.load("./pygame/images/me1.png")
# screen.blit(fly1,(200,600))
# 创建敌机
# enemy=GameSprite("./pygame/images/enemy1.png",2)
enemy2=GameSprite("./pygame/images/enemy2.png")
# enemy3=GameSprite("./pygame/images/enemy3.png",3)
# 创建敌机组
enemy_group=pygame.sprite.Group(enemy2)
# 定义游戏的时钟
clock=pygame.time.Clock()
# 飞机的初始位置
fly_position_init=pygame.Rect(200,500,102,126)
# 游戏循环开始
while True:
# 定义游戏的刷新频率
clock.tick(30)
# 定义每秒变化的位置
# fly_position_init.x -=1
fly_position_init.y -=10
# 判断飞机位置是否小于0,是就回到原来位置
if fly_position_init.bottom<0:
fly_position_init.y=700
# 绘制图像
screen.blit(bg,(0,0))
screen.blit(fly1,fly_position_init)
# 用户点击关闭按钮退出程序
# 监听用户事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
print("退出游戏")
# 卸载游戏模块
pygame.quit()
# 退出系统
exit()
# 更新敌机
enemy_group.update()
# 渲染敌机
enemy_group.draw(screen)
pygame.display.update()
# 结束pygame
pygame.quit()
子函数(定义精灵组)
import pygame
class GameSprite(pygame.sprite.Sprite):
# 定义GameSorite的方法
def _init_(self,images,speed=1):
# 继承pygame.sprite的方法
super().__init__()
# 加载图片
self.image=pygame.image.load(images)
# 拿到图像的尺寸
self.rect=self.image.get_rect()
# 设置初始速度
self.speed=speed
#定义更新图像的方法
def update(self):
# 更新y轴移动的位置
self.rect.y+=self.speed