目录
1.1.2random:Python标准库中的一个模块,用于生成随机数。
1.2.1ENEMY_EVENT:自定义的敌机出场事件代号,使用pygame.USEREVENT作为基础值。
1.2.2FIRE:自定义的子弹发射事件代号,设置为敌机出场事件代号加1。
1.3.2__init__:初始化方法,接收图像名称和速度作为参数,并加载图像。
1.3.3update:更新精灵的位置,使其沿y轴向下移动。
1.4.1Background:继承自GameSprites的背景类。
1.4.2__init__:除了加载背景图像外,还可以选择是否从屏幕上方开始显示背景。
1.4.3update:除了基本的向下移动外,还负责在背景完全移出屏幕时将其重置到屏幕上方
1.5.1Enemy:继承自GameSprites的敌机类。
1.5.2__init__:初始化时设置随机速度和随机水平位置。
1.5.3update:当敌机飞出屏幕时,调用kill方法将其从精灵组中删除
1.6.1Hero:继承自GameSprites的英雄飞机类。
1.6.3update:更新飞机的位置,并确保它不会离开屏幕边界。
1.6.4fire:发射子弹的方法,创建子弹并将其添加到子弹精灵组中。
1.7.1Bullet:继承自GameSprites的子弹类。
1.7.2__init__:初始化子弹并设置其向上移动的速度。
1.7.3update:当子弹飞出屏幕时,调用kill方法将其从精灵组中删除。
1.7.4__del__:当子弹对象被销毁时调用的方法,打印一条消息。
前言:
经过了前面几个章节关于Python面向对象的学习,相信大家关于如何写一个面向对象的小游戏的基本内容也已经知道了,而这一篇我也会结合之前文章提到的内容正式开始写关于面向对象的小游戏了,这篇我会结合代码一点一点解释关于面向对象的游戏,当然在我的资源里我也上传了压缩包,感兴趣的小伙伴可以自己下载,或者结合我这几篇的教程和所学的内容也可以自己尝试在pycharm中写一个面向对象的飞机大战的小游戏.接下来就正式开始了:
1.plane_sprites模块:
1.1导入模块:
import pygame
import random
这是对代码的解释:
1.1.1pygame
:一个用于创建游戏的Python库。
1.1.2random
:Python标准库中的一个模块,用于生成随机数。
1.2定义事件代号:
ENEMY_EVENT = pygame.USEREVENT
FIRE = pygame.USEREVENT + 1
这是对代码的解释:
1.2.1ENEMY_EVENT
:自定义的敌机出场事件代号,使用pygame.USEREVENT
作为基础值。
1.2.2FIRE
:自定义的子弹发射事件代号,设置为敌机出场事件代号加1。
1.3基类:GameSprites:
class GameSprites(pygame.sprite.Sprite):
def __init__(self, images_name, speed=5):
super().__init__()
self.image = pygame.image.load(images_name)
self.rect = self.image.get_rect()
self.speed = speed
def update(self):
self.rect.y += self.speed
这是对代码的解释:
1.3.1GameSprites
:所有游戏精灵的基类。
1.3.2__init__
:初始化方法,接收图像名称和速度作为参数,并加载图像。
1.3.3update
:更新精灵的位置,使其沿y轴向下移动。
1.4背景类:Background:
class Background(GameSprites):
def __init__(self, is_alt=False):
super().__init__('images/background.png')
if is_alt:
self.rect.y = -self.rect.height
def update(self):
super().update()
if self.rect.y >= 700:
self.rect.y = -self.rect.height
这是对代码的解释: