到现在为止我们的游戏还是不能运行的,因为还缺了一个函数呢。没错!就是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