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资源。)

