pygame经典游戏space invader太空入侵者核心原理程序

pygame经典游戏space invader太空入侵者核心原理程序

封面pygame space invader cover
封面pygame space invader cover

封面pygame space invader cover

space invader,是外星人入侵地球的一个经典街机射击小游戏,曾经风靡世界。 以下是用pygame设计的部分代码预览:


"""pygame经典游戏space invader太空入侵者核心原理程序,本程序给作品加了封面,做了结尾设计,读者可自行完善."""

__author__ = "李兴球"
__date__ = "2018年11月"

import pygame
from pygame.locals import *

class Block(pygame.sprite.Sprite):
    def __init__(self,width,height,color,x,y,screen):
        pygame.sprite.Sprite.__init__(self)
        self.screen = screen
        self.width = width
        self.height = height
        "敌人的图像,可自行更换成漂亮的图像用pygame.image.load命令"
        self.image = pygame.Surface((width,height))
        self.image.fill(color)
        self.rect = self.image.get_rect()
        self.rect.centerx,self.rect.centery = x,y
        self.xspeed = 0
        self.yspeed = height
     pass
        
def make_enemis():
    
    pass

def make_fighter():
    
    fighter = Block(50,25,(255,0,0),screenwidth//2,screenheight - 50,screen)
    return fighter

def shoot(posx,posy):
    
    red = (255,0,0)
    bullete = Block(15,25,red,posx,posy,screen)
    bullete.yspeed = -5
    bullete_group.add(bullete)
    
def display_shell(image):
    """显示封面"""
    pass
    
def display_result(image):
    """显示结果"""
    pass
 
    
if __name__ == "__main__":

    died_enemy_counter = 0                        # 用来统计敌人死的数量
    screenwidth,screenheight = 800,600
    screen = pygame.display.set_mode((screenwidth,screenheight))
    pygame.display.set_caption("太空入侵_封面设计与结尾")

    display_shell(pygame.image.load("封面.png"))  # 显示封面,单击鼠标就会进入游戏环节

    enemy_group = make_enemis()                   # 创建敌人组
    enemy_amount = len(enemy_group)               # 敌人总数
    print("共有",str(enemy_amount),"架敌机")
    
    fighter = make_fighter()                      # 创建战斗机
    bullete_group = pygame.sprite.Group()         # 子弹组 

    timer_move = USEREVENT + 1                    # 定时移动事件
    pygame.time.set_timer(timer_move,3000)        # 每3秒种发生一次
    
    clock = pygame.time.Clock()                   # 时钟对象
    running = True
    "新增的startshoot变量让主角不能连续发射"
    startshoot = -10                              #让发射有间隔,而不是能连续发射.
    while running:
        if startshoot < 0 : startshoot = startshoot  + 1   # 自增1,到0的时候就不会增了
        clock.tick(30)
        pass
            
        ret = pygame.sprite.spritecollideany(fighter,enemy_group)            # 我方与敌方的碰撞检测
        if ret : running = False
        
        screen.fill((0,0,0))                  # 背景色
        enemy_group.draw(screen)              # 在screen上重画所有小方块
        
        bullete_group.update()                # 更新坐标位置
        bullete_group.draw(screen)            # 重画子弹
        
        mousex,mousey = pygame.mouse.get_pos()
        fighter.rect.centerx = mousex
        fighter.draw()
        
        pygame.display.update()

    if died_enemy_counter < enemy_amount :
        image =  pygame.image.load("失败.png")
    else:
        image = pygame.image.load("成功.png")
    display_result(image)
 

 

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

李兴球

李兴球的博客是Python创意编程原创博客