python游戏模块有哪些_【查漏补缺】Python游戏模块121~140

121.游戏窗口中显示图像:

一,img=pygame.image.load(路径)并把加载到内存中的图片返回给调用者。

二,屏幕对象.blit(img, (x, y))把img图像绘制在x,y位置处。

三,pygame.dusplay.update()

122.pygame游戏时钟控制刷新频率:

clock= pygame.time.Clock()

在游戏循环中,控制clock的刷新频率每秒60次

clock.tick(60)

123.pygame中通过pygame.event.get()来获取用户当前所做的事件的列表(用户同一时间可以做很多事情)。

124.如果开发的子类不是直接继承自object,则在重写初始化方法时,一定要先调用父类的__init__()方法。

125.pygame中可以使用pygame.time.set_timer(eventId, 间隔时间)来添加定时器。

126.导入模块的顺序:先导入官方标准模块,再导入第三方模块,最后导入自己的模块。

127.pygame.sprite.groupcollide(group1, group2, dokill1, dokill2, collided=None)—Sprite_dict专门用来检测两个精灵组是否发生了碰撞。碰撞后,dokill1用来控制碰撞后group1是否销毁;dokill2用来控制碰撞后group2是否销毁;

128.模块之间循环导入,会报ImportErorr。设计模块时,应避免循环导入。

129.特别注意:

a=3

b=3

则,a==b和a is b都返回True,

a=30000

b=30000

则,a==b返回True, a is b返回False

130.深拷贝copy.deepcopy(aaa)、浅拷贝copy.copy(aaa)深入剖析:

深拷贝copy.deepcopy(aaa)不管引用层级有多深,都会拷贝出来让其与源彻底独立。比如,一个list中存放的是另外list的引用,则进行深拷贝时,拷贝出来的会与源彻底独立了。

浅拷贝copy.copy(aaa)最多只会copy第一层,也有可能不拷贝。之所以这么说,是因为:当被拷贝的是可变类型时,不管引用层级有多深,只会copy第一层,后面的引用的与源共用一个。而当被拷贝的是不可变类型时,第一层也不拷贝。

131.属性、属性(多见于Python把我们定义的私有变量前面加上类名)、属性、__属性,含义各不同。属性公有属性,_属性、__属性均表示私有属性,__属性__内置属性。

_属性、__属性在from xxx模块 import *这种情况下,是导入不过来的。在import xxx模块可以被导进来。

132.私有属性之所以无法调用,正是Python把我们定义的私有变量前面加上_类名,最终变量名即:_类名__变量名。当我们知道了这个规则后,尽管可以通过这种方式调用,但极不推荐!

133.@property装饰器修饰的方法名(例如:name)会自动成为一个属性。当name方法被@property装饰后,自动多了个@name.setter。用@name.setter来修饰的方法将被视为name的setter方法。

注意的是:@name.setter来修饰的方法名就必须是name了,不可以随意修改了。否则设置值时,会报错!

@property

def name(self):

pass

@name.setter

def name(self, new_name):

pass

134.all__作用:__all__是个模块中的全局变量,如果在xxx模块中定义了该变量,那么通过from xxx模块 import *来导入该模块时,只能导入里面配置的类、变量、方法。__all=[“变量名”, “方法名”, “类名”],配置不分先后顺序。

135.range(start,end),按[start,end)左闭合右开生成list。

136.range()使用时有何风险?

python2.x中有风险,如果要生成的list特别大,比如几千万甚至更大,则会报错:Memory Error

python3.x中,则不管要生成的list是多大,都返回一个range对象。不存在风险。

137.当用Thread()来创建一个线程对象时,仅仅是创建了一个普通子线程对象,此时子线程并未开始执行任务。

138.当子线程对象的start()被调用时,子线程开始执行任务;当一个子线程的任务执行完成后,该子线程生命周期自动终结。

139.主线程会等他所创建出来的子线程的任务都执行完成后,该主线程才会死亡。

140.当自定义的线程类,要继承自threading.Thread类,并重写run()方法,把子线程要做的任务写在该run()方法,此时再调用自己创建的该线程类的start()方法时,内部就会自动调用run()方法了,执行我们要在子线程做的任务了。

Original: https://blog.csdn.net/weixin_29332779/article/details/114444261
Author: 大郎神
Title: python游戏模块有哪些_【查漏补缺】Python游戏模块121~140

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/783949/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球