用python编写一个简单的飞机大战游戏(2)

本文详细描述了如何在基于pygame的游戏开发中创建英雄机子弹的生成、移动、碰撞检测以及敌机的移动和爆炸效果。涉及到了子弹的初始化、绘制、位置更新、碰撞逻辑以及敌机的移动控制和爆炸动画。
摘要由CSDN通过智能技术生成

3.英雄机子弹部分

3.1创建英雄机子弹

# 循环外
class HeroBullet:
    def __init__(self, x, y, screen):
        self.x = x
        self.y = y
        self.screen = screen
        self.pic = pygame.image.load("img/bullet1.png")

3.1.1图像绘制到屏幕

# 循环外
def draw(self):
    self.screen.blit(self.pic, (self.x, self.y))
    self.move()

3.1.2更新子弹的位置

def move(self):
    self.y -= 5

3.2创建英雄机子弹列表

循环外
hero_Bulletlist = []

3.3创建英雄机子弹索引

# 循环外
hero_bomb = False
hero_index_bomb = 0

3.4循环用于绘制所有英雄机发射的子弹

for bullet in hero_Bulletlist:
    bullet.draw()

3.5设置最上面子弹消失

if bullet.y < 0:
    hero_Bulletlist.remove(bullet)
    continue 

3.6设置子弹位置

hero_bulle_rect = pygame.rect.Rect(bullet.x, bullet.y, 22, 22)

3.7碰撞检测

flag = hero_bulle_rect.colliderect(enemy_rect)

3.7.1设置英雄机爆炸标志并移除子弹

if flag:
    hero_Bulletlist.remove(bullet)
    enemy_bomb = True

3.7.2导入爆炸图片

hero_bomb_imgs = ["img/me_destroy_1.png",
                  "img/me_destroy_2.png",
                  "img/me_destroy_3.png",
                  "img/me_destroy_4.png"]

3.7.3绘制英雄机爆炸图片并设置时间

if hero_bomb:
    if hero_index_bomb == len(hero_bomb_imgs):
        time.sleep(0.3)
        exit(0)
    hero_bomb_img = pygame.image.load(hero_bomb_imgs[hero_index_bomb])
    screan.blit(hero_bomb_img, (hero_PlaneX, hero_PlaneY))
    hero_index_bomb += 1
    time.sleep(0.2)

4.敌机的部分

4.1设置敌机移动索引

direct = "left"

4.2设置敌机位置

enemy_rect = pygame.rect.Rect(198, 0, 69, 99)

4.2.1设置敌机坐标

enmyPlaneX = enemy_rect.x
enmyPlaneY = enemy_rect.y

4.3对敌机的绘制

4.3.1导入敌机图片

enemy_img1 = pygame.image.load('img/enemy2.png')
enemy_img2 = pygame.image.load("img/enemy2_hit.png")

4.3.2设置敌机移动

if direct == "left":
    enmyPlaneX = enmyPlaneX - 5
    if enmyPlaneX <= 0:
        direct = "right"
elif direct == "right":
    enmyPlaneX = enmyPlaneX + 5
    if enmyPlaneX > 480 - 80:
        direct = "left"
  • 35
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值