导语
上一期我们主要带大家写了勇士类,以及勇士与一些简单的地图元素接触时所触发的事件:
童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(2)
这一期我们会带大家进一步复现我们的魔塔小游戏,主要内容为进一步完成和其他更为复杂的地图元素接触时可以触发的事件。
废话不多说,让我们愉快地开始吧~
相关文件
相关游戏素材(图片和音频等)源于网络,侵歉删。
对了大家可以关注小编的公众号哟~~
有很多资源可以领取的哟!!
Python日志
开发工具
Python版本:3.7.4
相关模块:
pygame模块;
以及一些python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
原理介绍
上一期,我们实现了一些简单的勇士和地图元素接触时会触发的事件,就像下图这样:
显然,这个效果图是不完美的,比如左侧面板的时间显示和当前层的显示没有添加,这里我们可以先写几行代码添加一下:
# --左侧面板栏
font = pygame.font.Font(self.cfg.FONTPATH_CN, 20)
font_renders = [
self.hero.font.render(str(self.map_level_pointer), True, (255, 255, 255)),
font.render('游戏时间: ' + str(pygame.time.get_ticks() // 60000) + ' 分 ' + str(pygame.time.get_ticks() // 1000 % 60) + ' 秒', True, (255, 255, 255)),
]
rects = [fr.get_rect() for fr in font_renders]
rects[0].topleft = (150, 530)
rects[1].topleft = (75, 630)
for fr, rect in zip(font_renders, rects):
screen.blit(fr, rect)
添加了这部分代码之后的效果是这样子的:
接着,就是上一期我们说的,在原版的游戏中,勇士和这个仙女碰撞的时候,会出现对话框,类似这样:
这部分内容该如何实现呢?首先,可以肯定的是对话框是由四个部分组成的,即矩形、矩形内填充的底色、左上角的人物图标以及文字内容。他们的实现思路分别应该是:
矩形: 调用pygame画矩形的函数pygame.draw.rect;
底色填充: 导入背景图中黑色的地砖来填充对话框;
左上角人物图标: pygame.image.load导入后画到对应的位置即可;
文字: 主要调用pygame.font.Font实现.
具体而言,我们的代码实现如下:
'''仙女和勇士对话'''
def showconversationheroandfairy(self, screen, scenes):
# 对话框指针
conversation_pointer = 0
# 定义所有对话
conversations = [
['......'],
['你醒了!'],
['......', '你是谁? 我在哪里?'],
['我是这里的仙子, 刚才你被这里的', '小怪打晕了.'],
['......', '剑, 剑, 我的剑呢?'],
['你的剑被他们抢走了, 我只来得及', '将你救出来.'],
['那, 公主呢? 我是来救公主的.'],
['公主还在里面, 你这样进去是打不', '过里面的小怪的.'],
['那我怎么办, 我答应了国王一定要', '把公主救出来的,那我现在应该怎', '么办呢?'],
['放心吧, 我把我的力量借给你, 你', '就可以打赢那些小怪了. 不过, 你', '得先去帮我去找一样东西,找到', '了再来这里找我.'],
['找东西? 找什么东西?'],
['是一个十字架, 中间有一颗红色的', '宝石.'],
['那个东西有什么用吗?'],
['我本是这座塔守护者, 可不久前, ', '从北方来了一批恶魔, 他们占领了', '这座塔,并将我的魔力封在了这', '个十字架里面, 如果你能将它带出', '塔来, 那我的魔力便会慢慢地恢复, ', '到那时我便可以把力量借给你去', '救公主了. 要记住, 只有用我的魔力', '才可以打开二十一层的门.'],
['......', '好吧,我试试看'],
['刚才我去看过了, 你的剑被放在三', '楼, 你的盾在五楼上, 而那个十字', '架被放在七楼. 要到七楼, 你得', '先取回你的剑和盾. 另外在塔里的', '其他楼层上, 还有一些存放了好几百', '年的宝剑和宝物,如果得到它们,', '对于你对付这里面的怪物将有很大', '的帮助.'],
['可是, 我怎么进去呢?'],