童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(2)

本文介绍了如何使用Python的pygame模块开发魔塔小游戏,包括英雄类的定义、基础行动实现、地图切换功能。通过创建勇士类、处理行动合法性、事件响应以及上下楼梯的地图切换,逐步构建游戏的基本玩法。
摘要由CSDN通过智能技术生成

导语

上一期我们带大家完成了魔塔游戏每一层的初始化画面的制作:
童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(1)

这一期我们会带大家进一步复现我们的魔塔小游戏,主要内容包括英雄类的定义与其基础行动的实现,行动过程中触发不同层的切换等功能。
废话不多说,让我们愉快地开始吧~

相关文件

相关游戏素材(图片和音频等)源于网络,侵歉删。

对了大家可以关注小编的公众号哟~~
有很多资源可以领取的哟!!

Python日志
在这里插入图片描述

开发工具

Python版本:3.7.4
相关模块:
pygame模块;
以及一些python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理介绍

上一期,我们实现了游戏的基础画面定义,类似这样:在这里插入图片描述
细心的小伙伴肯定发现了,地图里怎么没有我们的勇士呢?没有他我们还怎么去拯救公主呀~别急,这期就带大家来实现这部分内容。

首先,我们来定义一下我们的英雄勇士类:

'''定义我们的主角勇士'''
class Hero(pygame.sprite.Sprite):
    def __init__(self, imagepaths, blocksize, position, fontpath=None):
        pygame.sprite.Sprite.__init__(self)
        # 设置基础属性
        self.font = pygame.font.Font(fontpath, 40)
        # 加载对应的图片
        self.images = {
   }
        for key, value in imagepaths.items():
            self.images[key] = pygame.transform.scale(pygame.image.load(value), (blocksize, blocksize))
        self.image = self.images['down']
        self.rect = self.image.get_rect()
        self.rect.left, self.rect.top = position
        # 设置等级等信息
        self.level = 1
        self.life_value = 1000
        self.attack_power = 10
        self.defense_power = 10
        self.num_coins = 0
        self.experience = 0
        self.num_yellow_keys = 0
        self.num_purple_keys = 0
        self.num_red_keys = 0
    '''将勇士绑定到屏幕上'''
    def draw(self, screen):
        screen.blit(self.image, self.rect)

没啥好说的,老粉丝应该都懂,就是最简单的游戏精灵定义,将其绑定到游戏主界面之后的效果如下:在这里插入图片描述
看起来是不是哪里不对?没错,左边原来有文字显示勇士当前的状态呀!现在都没了!不过没关系,问题不大,我们写几行代码将英雄的信息显示在左边的面板上面即可:

	font_renders = [
	    self.font.render(str(self.level), True, (255, 255, 255)),
	    self.font.render(str(self.life_value), True, (255, 255, 255)),
	    self.font.render(str(self.attack_power), True, (255, 255, 255)),
	    self.font.render(str(self.defense_power), True, (255, 255, 255)),
	    self.font.render(str(self.num_coins), True, (255, 255, 255)),
	    self.font.render(str(self.experience), True, (255, 255, 255)),
	    self.font.render(str(self.num_yellow_keys), True, (255, 255, 255)),
	    self.font.render(str(self.num_purple_keys), True, (255, 255, 255)),
	    self.font.render(str(self.num_red_keys), True, (255, 255, 255)),
	]
	rects = [fr.get_rect()<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值