本文中的示例介绍了python飞机大战pygame游戏框架的构建操作。 分享仅供参考。 具体如下。
目标
明确主流程的责任
实现主程序类
准备游戏向导组
01 .明确主控进程的责任
回顾快速入门案例,一个游戏大师的作用分为两个部分。
游戏初始化
游戏循环
基于明确的责任,PlaneGame类设计如下:
通过暗示根据职责封装私有方法,可以避免某个方法的代码过于冗长
某个方法太长,很难读,也很难维护!
游戏初始化—— init ()调用以下方法:
游戏循环—— start_game ()调用以下方法:
02 .实现飞机大战主游戏类
2.1明确文件职责
plane_main
封装主游戏类
创建游戏对象
启动游戏
plane_sprites
封装游戏中使用的所有向导子类
提供与游戏相关的工具
代码实现
将创建新的plane_main.py文件,并将其设置为可执行
写基本代码
导入页面
from plane_sprites import *
classplanegame (对象) :
“”飞机大战主游戏“”
def __init__(self ) :
打印(“游戏初始化”) )。
defstart_game(self ) :
print ('游戏开始.')
if __name__=='__main__':
#创建游戏对象
game=PlaneGame (
#开始游戏
game.start_game (
2.3游戏初始化部
完成init ) )代码如下。
def __init__(self ) :
打印(“游戏初始化”) )。
# 1.创建游戏的窗口
self.screen=pygame.display.set _ mode ((480,700 ) )
# 2.制作游戏时钟
self.clock=pygame.time.Clock (
# 3.调用专用方法创建向导和向导组
self.__create_sprites (
def_create_sprites(self ) :
传球
使用常数代替固定值
常数——不变化的量
变量——可以变化量
适用场景
开发时,可能需要使用固定的数值,例如屏幕高度为700
此时,建议不要直接使用固定值,而使用常数
开发时,为了保证代码的维护性,请不要使用魔法数字
常数的定义
定义常量的语法与定义变量的语法完全相同,使用赋值语句
命名常量时,所有字符都必须大写,并在单词和单词之间用下划线连接
常数的好处
读码时,用定名看名字的意思,不需要猜测数字的意思
需要调整值时,只需修改常数定义即可进行统一修改
提示: Python没有真正意义上的常数。 根据命名约定,——所有字符都是大写的是常量。 开发时不要轻易修改。
代码调整
将常量定义添加到plane_sprites.py
导入页面
#游戏画面尺寸
screen _ rect=pygame.rect (0,0,480,700 ) )。
更改plane_main.py的窗口大小
self.screen=pygame.display.set _ mode (screen _ rect.size )。
2.4游戏周期部分
start_game (的基本代码如下:
defstart_game(self ) :
'''游戏开始' '
print ('游戏开始.')
while True:
# 1.设置刷新帧率
self.clock.tick(60 ) )。
# 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 ) :
“”冲突检测“”
传球
def__update_sprites(self ) :
更新“”向导组“”
传球
@静态方法
def __game_over () :
' '游戏结束' '
打印(“游戏结束”)
pygame.quit (
exit () )
03 .准备游戏向导组
3.1确定向导组
3.2代码实现
如何创建向导组
def_create_sprites(self ) :
“”创建向导组“”
#背景组
self.back _ group=pygame.sprite.group (
#敌方单位
self.enemy _ group=pygame.sprite.group (
#英雄集团
self.hero _ group=pygame.sprite.group (
如何更新向导组
def__update_sprites(self ) :
更新“”向导组“”
for group in [self.back_group,self.enemy_group,self.hero_group]:
group.update (
group.draw (自.屏幕) )。
本文希望对大家的Python编程有所帮助。