python中途岛海战boss发射子弹类设计程序

"""
   中途岛海战大boss发射的子弹类设计,
   游戏中最后的boss会不定时的发射一序列大颗粒子弹,这些子弹都会向下散射。
   
"""
__author__ = "李兴球"
__date__ = "2019/9/13"

import time
import pygame
from pygame.locals import *
from random import *

def spawn_boss_bullet():
    """产生一些子弹"""
    global bbcounter,bbg
    bbcounter += + 1
    bbcounter %= 1000
    if bbcounter % randint(5,10) == 0 and bbcounter < 300:
        bbi = boss_bullet_image
        pos = width//2,height//2
        b = Boss_Bullet(bbi,pos,screen)
        bbg.add(b)


def main():
    """主要函数"""
    width,height = 960,720
    screen = pygame.display.set_mode((width,height))
    pygame.display.set_caption("中途岛海战Boss发射一拔子弹测试 by lixingqiu")
    boss_bullet_image = pygame.image.load('boss_images/boss_bullet.png').convert_alpha()
   
    bbg = pygame.sprite.Group()
    clock = pygame.time.Clock()
    bbcounter = 0
    running = True
    while running:
        for event in pygame.event.get():
            if event.type == QUIT:running = False
        spawn_boss_bullet()
        bbg.update()
        screen.fill((0,31,43))
        bbg.draw(screen)
        pygame.display.update()
        clock.tick(60)
        
    pygame.quit()
    
class Boss_Bullet(pygame.sprite.Sprite):
    """boss发射的子弹"""
    
    def __init__(self,image,pos,screen):
        """
           image:子弹造型,pos:起始坐标
        """
        pygame.sprite.Sprite.__init__(self)
        self.screen_rect = screen.get_rect()
        self.image = image
        self.rect = image.get_rect(center=pos)
        self.dx = randint(-5,5)
        self.dy = randint(1,5)

    def update(self):
        self.rect.move_ip(self.dx,self.dy)
        if not self.screen_rect.contains(self.rect):
            self.kill()

这是本人编写的大型射击游戏中的一个模块,更多代码,请打开我的lixingqiu.com博客.  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李兴球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值