复习:
1,创建窗口
首先搭建项目框架。
建立两个python文件:plane_sprites,plane_main
plane_sprites:包含:GameSprites,Background
代码1:
import pygame
class GameSprites(pygame.sprite.Sprite):
def __init__(self, image_name, speed=1):
super().__init__()
self.image = pygame.image.load(image_name)
self.rect = self.image.get_rect()
self.speed = speed
def update(self):
pass
plane_main:是项目游戏主程序:包含:PlaneGame,main方法运行开端
代码1:
import pygame
from plane_sprites import *
"""游戏主程序"""
class PlaneGame(object):
def __init__(self):
print("游戏初始化")
# 1.游戏主屏幕
self.screen = pygame.display.set_mode((480,700))
# 2.创建时钟,敌机,子弹定时出现和发放的定时器
self.clock = pygame.time.Clock()
# 3.创建精灵,就是多个敌机,多个子弹是一组
self._create_sprites()
# 创建精灵,精灵组方法
def _create_sprites(self):
pass
# 开始游戏
def start_game(self):
print("开始啦,游戏,,,,,")
while True:
# 1.刷新帧频率
self.clock.tick(60)
# 2.监听事件,监听游戏屏幕的操作,还有键盘操作
self.__event_handler()
# 3.碰撞的检测,敌机与子弹,敌机与英雄
self.__check_cllide()
# 4.更新,绘制精灵
self.__update_sprites()
# 5.更新精灵的显示
pygame.display.update()
# 事件监听的方法
def __event_handler(self):
pass
# 检查碰撞的方法
def __check_cllide(self):
pass
# 更新,绘制精灵方法
def __update_sprites(self):
pass
#静态方法
@staticmethod
def __game_over():
print("游戏结束")
# 结束pygame的所有模块
pygame.quit()
# 结束当前正在运行的程序。退出游戏结束游戏
exit()
if __name__ == '__main__':
# 创建游戏对象
planegame = PlaneGame()
# 启动游戏
planegame.start_game()
2,背景图片--》两张叠加产生动态效果
建立窗口代码:
plane_sprites代码2:
import pygame
#屏幕大小的常量
SCREEN_RECT = pygame.Rect(0,0,480,700)
#刷新的帧率
FRAME_PER_SEC = 60
class GameSprites(pygame.sprite.Sprite):
def __init__(self,image_name,speed =1):
super().__init__()
self.image = pygame.image.load(image_name)
self.rect = self.image.get_rect()
self.speed = speed
def update(self):
# 父类中,垂直运动
self.rect.y += self.speed
class Background(GameSprites):
def __init__(self , is_alt = False):
# 继承父类,展示背景图片
super().__init__("./images/background.png")
# 判断,当一个图片移出屏幕时,立刻到另一张图片的上方
if is_alt :
self.rect.y = -self.rect.height
def update(self):
super().update()
plane_main代码2:
import pygame
from plane_sprites import *
"""游戏主程序"""
class PlaneGame(object):
def __init__(self):
print("游戏初始化")
# 1.游戏窗口
self.screen = pygame.display.set_mode(SCREEN_RECT.size)
# 2.
self.clock = pygame.time.Clock()
# 3.
self._create_sprites()
# 创建精灵,精灵组
def _create_sprites(self):
bg1 = Background()
bg2 = Background(True)
self.back_group = pygame.sprite.Group(bg1,bg2)
# 开始游戏
def start_game(self):
print("开始啦,游戏,,,,,")
while True:
# 1.
self.clock.tick(FRAME_PER_SEC)
# 2.
self.__event_handler()
# 3.
self.__check_cllide()
# 4.
self.__update_sprites()
# 5.
pygame.display.update()
# 事件监听
def __event_handler(self):
pass
# 检查碰撞
def __check_cllide(self):
pass
# 更新,绘制精灵
def __update_sprites(self):
self.back_group.update()
self.back_group.draw(self.screen)
@staticmethod
def __game_over():
print("游戏结束")
# 结束pygame的所有模块
pygame.quit()
# 结束当前正在运行的程序。退出游戏结束游戏
exit()
if __name__ == '__main__':
# 创建游戏对象
planegame = PlaneGame()
# 启动游戏
planegame.start_game()
3,敌机图片--》静态--》精灵,精灵组,垂直运动--》随机的初始位置
1,敌机图片(能产生一个向下运动的敌机)
plane_sprites代码3:
plane_main代码3:
2,让敌机产生多个
3,让敌机能有不同的速度,和随机出现的水平位置
import random
import pygame