pygame

引言:可以用python写一写简单的小游戏!而这些小游戏归根结底是一些图片的加载、变化、移动。对图片的坐标进行修改,用背景图覆盖在原来的背景上遮盖住原来的效果,就可以实现图片的移动。比如,在一块木板上铺上一张白纸,此时,木板就是游戏窗口,而白纸就是游戏背景图片。在背景上继续加载其他的图片,相当于在白纸上作画,完成一个场景。

pygame 是一个资源包,包含各种各样的资源,方便游戏的开发。

pygame中的一些模块:

init():初始化,表示初始化所有pygame模块

update():在父类中定义,监听事件和移动(调用)。通过循环,一直执行该方法,实现若有变化及时更改,如无变化,覆盖原来场景。

背景图片:产生一个遮盖效果。如果一直在同一张白纸上作画,很快场景就会混乱,更新一个背景,利用ipdate()方法,在新的白纸上作相同的操作,当然,若有限制条件,如if判断,会在白纸上画出,实现场景的修改。

draw():将update()执行的内容,画到背景上。

display.update():将背景画到屏幕上

场景更新先后:遵循背景图片,未更新,有变化,其他资源顺序。即先把白纸准备好,画,将白纸放在木板上展示。

循环模块:update,draw,display等都在循环内,即需要重复操作的内容。

初始化资源位置:要更新的资源放一起,如飞机大战中的敌机,子弹需要升级。而飞机不做更改,不能循环。否则,每执行一次循环,都会创建一个对象,程勋无法正常执行。

添加背景:需要把整个窗口覆盖,遮住之前画出的内容,因此,背景要比窗口大。

总结:

游戏是由一些图片的变化显现出来的。这些图片由自己的坐标,大小,速度。通过代码如if,计时器事件,对这些内容进行控制。当执行到了这些控制代码时,被画出来的内容相当于之前的内容就有了变化。利用循环把这些场景放在一起,就产生了连续的效果。

通过继承pygame.sprite.Sprite可以获得资源。创建一个父类,声明update方法,在update()内调用事件和移动,而子类通过继承拥有了update方法,通过重写,就可以控制自己事件与移动。而精灵组的update()方法会自动调用所有update方法。就可以调用update方法,一直执行,监听变化。

父类方法的调用:

若要实现父类的方法,则调用;不需要实现父类方法内的功能,则不需调用。__init__方法除外,它必须调用。

 

如果没有变化,场景会有任何变化吗?

场景没有变化,但他是与上一个场景一模一样的场景。场景是被画出来的代码执行结果。每一个循环都会根据数据走完完整的程序,与上一个执行结果相同同样被画了出来,只是我们没有发现而已。即有没有变化都会执行结果被画出来。

场景中有多个飞机叠加的原因:

一:没有添加背景

二:创建了多个对象

三:更新顺序不相同

场景中该出现的图片没有出现的原因:

一:代码错误

二:被其他图片覆盖了

三:被kill()了

四:边界判断限制了。

 

 

 

 

 

 
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值