python 游戏编程_Python使用Pygame进行游戏编程

使用过Pygame模块的朋友对于模块中的pygame.init()的用法有时候不是很理解。但必须知道的是对于导入和初始化操作是Pygame模块使用中比较重要的一步,如果有些细节没有考虑到,后续会踩到一些“坑”,比较难理解,而且出现的异常也不容易查找。今天,给大家详细解释下Pygame中的模块导入和一些常量的初始化的注意事项。

8b13632762d0f703d47d817d95c17b382797c500.jpeg?token=e0e66cdc1d5082b06f355c0c52c7064f&s=13F6C832868452E66BB24AAE0300E02E让我们开始吧

我们来看下官网的一句话:“It is alsoflexible enough to give you control over what is happening.”。这句话说的是对于模块的导入和变量初始化是足够灵活的,如果导入和初始化合理,可以让你控制正在发生的事情,免除不必要的异常和麻烦。如果不合理?官网好像没有说,但应该还是麻烦不断……

562c11dfa9ec8a13031261566a38bb8aa0ecc038.jpeg?token=3fa0bd02f534445ad2ce38da9f5e1798&s=7B9C678E13A3D8E75A2BA26E0300E07A官网这么解释!

模块导入

对于模块的导入,一般使用下面两行代码

import pygame

from pygame.locals import *

第一行将所有可用的pygamemodules一次性导入到程序空间中。

第二行导入是可选项,它暂时将有限的常量和函数放入到脚本命名空间中。对于命名空间的解释,请大家自行百度吧。

典型的pygame的常量有很多,比如:

pygame.FULLSCREEN,控制全屏,通常使用0或者1来控制pygame.HWSURFACE 控制是否进行硬件加速pygame.RESIZABLE 控制窗口是否可以调节大小

还有很多,如果想要直接使用这些常量,可以使用from pygame.locals import *进行导入,后续我们即可直接使用,不用添加点号前的pygame咯。

ac4bd11373f0820266674f76d5c0d1e8aa641b46.jpeg?token=1c4dea0390a8e51285c9f55091e46756&s=4FB92BC2DBF48FEB10DDBB1F030000DD模块导入及初始化操作

使用import pygame进行导入的时候,Pygame对于进行导入的一些可选模块(比如字体模块font等),首先会进行测试,如果测试可以导入,则导入相应的可选模块,如果测试该模块导入异常,则Pygame直接将字体设置为None,这也使得以后测试可选模块是否可用创造了有利的条件(直接判断其是否为None即可)。

初始化操作

用过Pygame的朋友们肯定都知道,pygame不同于其他的模块,在使用前通常需要加上一句pygame.init()。这也是困扰很多人的一点,模块在导入时,变量并没有进行初始化?为什么还要显式的进行初始化?这一句有何作用?我们来揭开这一神秘面纱。

bd315c6034a85edf2442e78cd76f2326dc547517.jpeg?token=5d76485b6f07a269e7c422cca882cb43&s=1E8A7823299B4ED859242BEF03007022关于初始化的一些疑问

需要确定的一点是初始化过程使用的是这样一种机制:

pygame不知道你要初始化哪些模块,它初始化一些它认为必要的内容(界面、设备等),如果这些内容初始化成功,它们将自动进入命名空间中;如果初始化过程中抛出异常,它内部对这些异常进行处理(一般使用get_init()函数进行隐式处理,不会显示出来!如果初始化成功返回True否则返回False)。

这种机制的好处是多次调用pygame.init()函数都不会使程序崩溃。而要判断某一变量或函数是否初始化成功只需判断其是否为None即可。

6159252dd42a2834eb3faf5dc58ee3ef14cebf88.jpeg?token=7c6467782eceb539bec4d430ad8b0fe8&s=0216692298D249E14AB570DE0100C0A2初始化过程中有其内在的机制

对于没有初始化成功的部分,我们可以手动执行其相应的初始化操作即可。如字体初始化使用:pygame.font.init()即可。其它类似字体的初始化过程。

部分图片来自网络,如侵权请告知作者删除。

欢迎大家留言关注,后续将推出一些大家感兴趣的小项目。

转载请注明出处(百家号:Python高手养成)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值