项目名称:太空大战
开发环境:Python3.6.4
第三方库:Pygame1.9.6
代码编辑器:Sublime Text
先来看一下游戏画面吧! 游戏画面动态且丰富哦!
需求分析
- 利用Python开发一个太空大战,提供UI,Bgm,丰富的游戏图片素材,左上角拥有玩家的生命进度条且能够动态变化,右上角拥有玩家的生命条数
- 游戏精灵能够动态交互,打败敌人能够有动态的爆炸效果(用静态图片循环播放可实现),且打败敌人能够随机的掉落火箭,增加生命进度甚至增加生命条数(有一个所获几率的控制)的游戏精灵,打败敌人能够获得分数
- 算法设计:能够根据玩家的生命进度及生命条数调整游戏难度和获得火箭,生命数等精灵的概率
- 设计动态地图,使游戏更加动态化以及游戏化
功能模块:
- 库的导入
1 import pygame 2 import random 3 from os import path 4 import sys 5 from pygame.locals import * 6 import math 7 from datetime import datetime, date, time
- 图片导入
1 img_dir = path.join(path.dirname(__file__),'img') 2 background_dir = path.join(img_dir,'space.png') 3 background_img1 = pygame.image.load(background_dir).convert() 4 background_img2 = pygame.image.load(background_dir).convert() 5 background_img3 = pygame.image.load('img/space.png').convert() 6 background_rect = background_img1.get_rect() 7 player_dir = path.join(img_dir,'spaceShips_005.png') 8 player_img = pygame.image.load(player_dir).convert() 9 player_img_small = pygame.transform.scale(player_img,(26,20)) 10 player_img_small.set_colorkey((0,0,0)) 11 enemy_dir = path.join(img_dir,'spaceMeteors_004.png') 12 enemy_img = pygame.image.load(enemy_dir).convert() 13 bullet_dir = path.join(img_dir,'bullet.png') 14 bullet_img = pygame.image.load(bullet_dir).convert_alpha() 15 missile_dir = path.join(img_dir,'spaceMissiles_040.png') 16 missile_img = pygame.image.load(missile_dir).convert() 17 spaceship_dir = path.join(img_dir,'spaceShips_007.png') 18 spaceship_img = pygame.image.load(spaceship_dir).convert() 19 spaceship_bullet_dir = path.join(img_dir,'spaceMissiles_001.png') 20 spaceship_bullet_img = pygame.image.load(spaceship_bullet_dir).convert()
- Bgm及音效文件的导入
1 sound_dir = path.join(path.dirname(__file__),'sound') 2 shoot_sound = pygame.mixer.Sound(path.join(sound_dir,'Laser_Shoot14.wav')) 3 explosion_sound = pygame.mixer.Sound(path.join(sound_dir,'Explosion7.wav')) 4 missile_sound = pygame.mixer.Sound(path.join(sound_dir,'Laser_Shoot5.wav')) 5 pygame.mixer.music.load(path.join(sound_dir,'background_01.wav'))
- 游戏精灵类的创建
1 class Player(pygame.sprite.Sprite): 2 3 def __init__(self): 4 pygame.sprite.Sprite.__init__(self) 5 # self.image = pygame.Surface((50,50)) 6 self.image = pygame.transform.flip(player_img,False,True) 7 self.image = pygame.transform.scale(self.image,(53,40)) 8 self.image.set_colorkey((0,0,0)) 9 # self.image.fill((0,255,0)) 10 self.rect = self.image.get_rect() 11 self.rect.centerx = WIDTH/2 12 self.rect.bottom = HEIGHT 13