本文整理汇总了Python中field.Field.wallDistance方法的典型用法代码示例。如果您正苦于以下问题:Python Field.wallDistance方法的具体用法?Python Field.wallDistance怎么用?Python Field.wallDistance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类field.Field
的用法示例。
在下文中一共展示了Field.wallDistance方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: GameManager
# 需要导入模块: from field import Field [as 别名]
# 或者: from field.Field import wallDistance [as 别名]
#.........这里部分代码省略.........
self.field.step()
self.units.step()
#baseはunitの後
self.bases.step()
self.bullets.step()
self.items.step()
self.debugObjects.step()
for counter in range(20):
#振動して無限ループになったとき、20回で終了するようにしている。
#押し合い
powerList = [Coordinate(0,0) for i in range(len(self.units))]
for ii in range(len(self.units)):
for jj in range(ii):
i = self.units[ii].getPosition()
j = self.units[jj].getPosition()
if abs(i - j) < RADIUS_OF_THE_UNIT * 2 :
factor = (RADIUS_OF_THE_UNIT * 2 - abs(i - j))/(abs(i - j) + 10 **(-7)) * (i - j)
powerList[ii] += factor
powerList[jj] -= factor
#重なっているとき
for ii in range(len(self.units)):
for jj in range(len(self.bases)):
i = self.units[ii].getPosition()
j = self.bases[jj].getPosition()
if abs(i - j) < RADIUS_OF_THE_UNIT + RADIUS_OF_THE_BASE:
factor = (RADIUS_OF_THE_UNIT + RADIUS_OF_THE_BASE - abs(i - j))/(abs(i - j) + 10 **(-7)) * (i - j)
powerList[ii] += factor
#重なっているとき
for i in range(len(self.units)):
#壁との当たり判定壁との当たり判定はFeildで行う。
#返り値はかかる力ベクトル(Coordinate)
powerList[i] += self.field.wallDistance(RADIUS_OF_THE_UNIT, self.units[i])
flag = True
for i in range(len(self.units)):
if powerList[i].norm() >= 1:
self.units[i].setPosition(self.units[i].getPosition() + powerList[i] * PUSH_STRENGTH)
flag = False
if flag:
break
#当たり判定
for i in range(len(self.units)):
self.field.fieldEffect(self.units[i])
for i in range(len(self.bullets)):
self.field.fieldEffect(self.bullets[i])
for i in range(len(self.items)):
self.field.fieldEffect(self.items[i])
#item
for ii in range(len(self.items)):
i = self.items[ii].getPosition()
for jj in range(len(self.units)):
j = self.units[jj].getPosition()
if abs(i-j) < RADIUS_OF_THE_ITEM + RADIUS_OF_THE_UNIT:
#あたったとき
self.items[ii].effect(self.units[jj])
break
#bullet
for ii in range(len(self.bullets)):
i = self.bullets[ii].getPosition()
for jj in range(len(self.units)):
j = self.units[jj].getPosition()
if abs(i-j) < RADIUS_OF_THE_UNIT:
#あたったとき