Python从零模仿我的世界(十二)

本文介绍如何在Python中完善我的世界游戏模型类。通过三维勾股定理计算两点间距离,并解释循环条件和相关函数,适合初学者理解。
摘要由CSDN通过智能技术生成

到现在为止我们的游戏还是不能运行的,因为还缺了一个函数呢。没错!就是Model.change_sectors

完善模型类

上代码:

class Model:
    ...
    # 这个函数是用来在玩家走动的时候切换区块的
    # 只有和玩家的距离小于等于 pad 的区块才会显示
    def change_sectors(self, before, after):
        # 创建空集合
        # 直接使用 {} 的话创建的是空字典哦
        before_set = set()
        after_set = set()
        pad = 4
        # 这里的循环范围我们一会儿讲
        for dx in range(-pad, pad + 1):
            dy = 0
            for dz in range(-pad, pad + 1):
                # == A ==
                if dx ** 2 + dy ** 2 + dz ** 2 > (pad + 1) ** 2:
                    continue
                # == B ==
                if before:
                    x, y, z = before
                    before_set.add((x + dx, y + dy, z + dz))
                if after:
                    x, y, z = after
                    after_set.add((x + dx, y + dy, z + dz))
        # 由于玩家的移动而靠近玩家了的区块需要显示
        show = after_set - before_set
        # 由于玩家的移动而远离玩家了的区块需要隐藏
        hide = before_set - after_set
        # 遍历一下
        # show_sector 和 hide_sector 我们一会儿说
        for sector in show:
            self.show_sector(sector)
        for sector in hide:
            self.hide_sector(sector)

A:这行代码很简单,就是依据了三维勾股定理:

已知有两点 A ( X 1 , Y 1 , Z 1 ) , B ( X 2 , Y 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值