pygame中游戏的运行原理是不停的刷新屏幕再从新绘制图像,因此每次操做完改变图像大小或者位置再等待下次刷新就能够作到移动和变化了google
对于一个对象要建立屡次(像子弹)能够用pygame.Group
生成的对象来实现spa
group
生成的对象中gourp
生成对象的update()
方法,表示调用每一个成员各自的update()
方法来更新对象for
循环依次画出图像正统获取文件地址的方式codeos.path.join(os.getcwd(),'images','pic.jpg')
os.path.abspath(__file__)
获取代码文件的路径orm
F:\abc\ab.py
os.path.dirname(os.path.abspath(__file__))
对象
F:\abc
blit(self.image,self.rect)
把image画到rect位置上游戏
pygame生成的画面的坐标是从左上角做为(0,0)越右越大,越下越大事件
移动能够是按下坐标加一,不过更好的是设置一个方向移动的flag在要移动的对象内,按下flag设置为true
,抬起设置为false
刷新图像时调用对象自身的update()
根据flag决定移不移动get
重构就像b树同样,代码量达到一个量才须要重构,把长的地方提取出来it
打印字符到控制台的时间消耗比把图像画到屏幕的耗时还大,因此少打印io
出现了错误信息TypeError: invalid destination position for blit
开始疯狂瞎逼google,都是些无用信息,最后看了有用信息是screen.blit(sprite, tuple(position))
因此我开始用type()
来看其中的rect
是否是tuple
类型,发现竟然是int
找哪里改过这个,最后发现是在改rect.x
的参数把它漏写成rect
因此把它的tuple
类型改为了int
类型Orz
自动移动的一种作法
调用方法参数顺序对其,不是按招名字找参数的,是按招顺序找参数的
AttributeError: 'Group' object has no attribute 'rect'
可能是参数没一一对应
"{:,}".format(1000000000)
输出'1,000,000,000'