day7:飞机大战项目:复习

复习:

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

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页