Python-项目实战--飞机大战-游戏框架搭建(4)

73 篇文章 0 订阅

目标--使用面向对象设计飞机大战游戏类

1.明确主程序职责

  • 一个主程序的职责可以分为两个部分:游戏初始化游戏循环

  • 根据明确的职责,设计PlaneGame类如下:

提示:根据职责封装私有方法,可以避免某一个方法的代码斜的太过冗长,如果某一个方法编写的太长,既不好阅读,也不好维护。

  • 游戏初始化-- __init__(self)会调用以下方法:

方法

职责

__create_sprites(self)

创建所有精灵和精灵组

  • 游戏循环-- start_game(self) 会调用以下方法:

方法

职责

__event_handler(self)

事件监听

__check_collide(self)

碰撞检测--子弹销毁敌机、敌机撞毁英雄

__update_sprites(self)

精灵组更新和绘制

__game_over()

游戏结束

2.实现飞机大战主游戏类

2.1明确文件职责

  • plane_main

  • 封装主游戏类

  • 创建游戏对象

  • 启动游戏

  • plane_sprites

  • 封装游戏中所有需要使用的精灵子类

  • 提供游戏的相关工具

代码实现

  • 新建plane_main.py文件,并且设置为可执行

基础代码

plane_main.py文件中的代码:

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:
            pass

if __name__ == '__main__':

    # 创建游戏对象
    game = PlaneGame()

    # 启动游戏
    game.start_game()
  • 使用常量代替固定的数值

  • 常量 -- 不变化的量

  • 变量 -- 可以变化的量

  • 应用场景

  • 在开发时,可能会需要使用固定的数值,例如,屏幕的高度是700,这时建议不要直接使用固定数值,而应该使用常量

  • 在开发时,为了保证代码的可维护性,尽量不要使用魔法数字

  • 常量的定义

  • 定义常量和定义变量的语法完全一样,都是使用赋值语句

  • 常量的命名应该所有字母都使用大写,单词与单词之间使用下划线连接

  • 常量的好处

  • 常量名见名知意,不需要猜测数字含义

  • 若需要调整值,只需要修改常量定义,就可以实现统一修改

代码调整

在plane_sprites.py中增加常量定义

import pygame

# 屏幕大小的常量
SCREEN_RECT = pygame.Rect(0, 0, 480, 700)

修改plane_main.py中的窗口大小

def __init__(self):
    print("游戏初始化")

    # 1.创建游戏的窗口 set_mode方法第一个参数接收的是一个元组,矩形的size属性就是一个元组
    self.screen = pygame.display.set_mode(SCREEN_RECT.size)
    # 2.创建游戏的时钟
    self.clock = pygame.time.Clock()
    # 3.调用私有方法,精灵和精灵组的创建
    self.__create_sprites()

pycharm中取消缩进快捷键:shift+Tab

2.2游戏循环部分

plane_sprites.py中的内容:

import pygame

# 屏幕大小的常量
SCREEN_RECT = pygame.Rect(0, 0, 480, 700)
# 刷新的帧率
FRAME_PER_SEC = 60

plane_main.py中的内容

import pygame
from plane_sprites import *
#

class PlaneGame(object):
    """飞机大战主游戏"""

    def __init__(self):
        print("游戏初始化")

        # 1.创建游戏的窗口  set_mode方法第一个参数接收的是一个元组,矩形的size属性就是一个元组
        self.screen = pygame.display.set_mode(SCREEN_RECT.size)
        # 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(FRAME_PER_SEC )
            # 2.事件监听
            self.__event_handler()
            # 3.碰撞检测
            self.__check_collide()
            # 4.更新/绘制精灵组
            self.__update_sprites()
            # 5.更新显示
            pygame.display.update()

    def __event_handler(self):

        for event in pygame.event.get():

            # 判断是否退出游戏
            if event.type == pygame.QUIT:
                PlaneGame.__game_over()

    def __check_collide(self):
        pass

    def __update_sprites(self):
        pass

    @staticmethod
    def __game_over( ): # 静态方法不需要接收self参数
        print("游戏结束")

        pygame.quit()
        exit()

if __name__ == '__main__':

    # 创建游戏对象
    game = PlaneGame()

    # 启动游戏
    game.start_game()

内容总结于:https://space.bilibili.com/37974444

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Python-Django-Vue项目实战是一种常见的全栈发模式,结合了Python的Django框架和Vue.js前端框架。下面是一个简单的介绍: Python-Django是一个强大的Web开发框架,它使用Python语言编写,提供了一系列的工具和库来简化Web应用程序的开发过程。Django具有高度的可扩展性和灵活性,可以帮助开发者快速构建功能丰富的Web应用。 Vue.js是一个流行的JavaScript前端框架,它专注于构建用户界面。Vue.js具有简单易学的语法和强大的功能,可以帮助开发者构建交互性强、响应迅速的前端应用。 在Python-Django-Vue项目实战中,通常会将Django作为后端框架来处理数据逻辑和业务逻辑,而Vue.js则负责前端页面的展示和用户交互。通过这种方式,可以实现前后端分离,提高开发效率和代码可维护性。 具体的项目实战可以包括以下内容: 1. 构建Django后端:使用Django框架创建后端应用程序,包括定义数据模型、编写视图函数、配置URL路由等。 2. 开发Vue前端:使用Vue.js框架创建前端应用程序,包括设计页面布局、编写组件、处理用户交互等。 3. 数据交互:通过RESTful API或GraphQL等方式,实现前后端数据的交互和通信。 4. 用户认证和权限管理:实现用户注册、登录、权限验证等功能,确保系统的安全性。 5. 数据库操作:使用Django的ORM(对象关系映射)来进行数据库操作,包括增删改查等。 6. 页面美化和响应式设计:使用CSS和Vue.js的样式绑定功能,实现页面的美化和响应式设计。 7. 部署和发布:将项目部署到服务器上,并进行性能优化和安全加固。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天寒心亦热

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值