Python中的pygame精简部分补充

QQ技术分享交流互助群

QQ群号:566341887   (大家一起互帮互助,共同进步,交流分享,奔赴未来!)

啊哈,出了三篇精简部分之后捏,多多少少地补充要补充点东西,毕竟要制作更好的游戏。废话不多说,我们直接开始吧。

一.血条制作

血条是一个游戏中非常常见的东西,就算不是血条,也有很多类似的。

1.基础代码

xuetiao=pygame.transform.scale(xuetiao,(200,20))

2.代码解释

这个xuetiao其实是个图片,在前面要先用pygame.image.load导入一张图片。

那么这行代码什么意思呢,就是把xuetiao这个图,缩放成200×20大小的图片。

3.应用

那么如何用到制作血条当中去呢,我们知道玩家受到伤害后,血条会缩短,那么也就是说,血条宽度变小,然而高度不变。

假设满血是100,玩家当前血量为hp=100,按比例来缩放的话,可以如下理解:

玩家受伤后,血量比如减少为30,则血条的长度改为30/100,即十分之三。

 这是对于玩家血量最大值不变的情况,如果要升级从而改变最大值的话,只要另外在设一个变量来存储最大值即可。

phmax=100
ph=100
xuetiao=pygame.image.load("xuetiao.png")

bili=ph/phmax
xuetiao=pygame.transform.scale(xuetiao,(bili*200,20))
#假设xuetiao原来大小为200×20

screen.blit(xuetiao,(30,10))

这样就能把血条绘制在屏幕的(30,10)的地方了。 

二.文本输出

对于鼠标碰到物品,弹出物品的解释说明,或者剧情对话诸如此类的情况,其实没有必要做许多图片,然后绘制在屏幕上,我们也可以用pygame中的一个,额,功能,输出文字,是出现在窗口当中的,与print不一样。

1.举例

ts=pygame.font.SysFont("simhei",50)
tc=ts.render("7.62mm子弹",True,(0,0,0))
screen.blit(tc,(650,150))

2.依次解读

第一行这个捏,就是规定了这个字体,最后的那个"50"是指字体大小,数字越大,字体越大。

第二行呢,""里面是这个tc的内容,(0,0,0)就是用来调控字体颜色的。

第三行就是绘制tc这个字体了,想必就不用过多地解释了。

三.读取鼠标位置

游戏中时常不乏存在点击窗口中某些图标之类,以触发各种模式,所以这个要怎么写呢,其实很简单。

1.思路

触发需要满足两个条件:第一个是鼠标碰到了图标;第二个是鼠标按了下去。

或者说,可以做个图片,让它时刻处在鼠标的位置上,这样可以把条件改成:两图片碰撞,且鼠标按下。

2.读取鼠标位置

mox, moy = pygame.mouse.get_pos() #实时读取鼠标x,y

这个mox就是鼠标的x值,moy就是y值,没什么好解释的这里。

3.判断鼠标按下

if event.type == pygame.MOUSEBUTTONDOWN:
    ...

在这里,我们需要一个判断来完成,属于这个事件的判断。

那么接下来只要把二者缝合在一起即可。

4.缝合

首先为了更好地举例,我们先假设:

假设:现在有一个图标,大小为20×50,处于窗口的(200,50)。

鼠标既然要碰到图标,那么鼠标的x范围就应该处于200~220,y的范围就应该处于50~100。

这个,能理解的吧。

下面,展示代码。

mox, moy = pygame.mouse.get_pos()
if mox>=200 and mox<=220:
        if moy>=50 and moy<=100:
            if event.type == pygame.MOUSEBUTTONDOWN:
                ...

差不多就是这么个意思,记得把它放在while True:里面,不然的话,做不到实时读取坐标的喔。

四.下期

听说,最近有个“植物大战僵尸杂交版”非常火,我们学到现在呢,做一个PVZ也是绰绰有余的了。所以说,下期我们来实践一波,顺便可以扯一些算法之类,我们自己也做一个PVZ,想要多魔改多杂交就看你们自己的啦。

(真的不考虑一下加Q群一起学习嘛……)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值