【发布时间】:2012-04-25 05:31:25
【问题描述】:
我正在尝试为行星战争机器人创建热图,以指示行星受到的影响。 初始图如下:http://imgur.com/a/rPVnl#0
理想情况下,红色行星的值应为 -1,蓝色行星的值应为 1,标记为 1 的行星的值应为 0。(或 0 到 1,0.5 的平均值可行)
我的初始分析代码如下,但它输出的结果在 0.13 到 7.23 之间。
for p in gameinfo.planets: #gameinfo.planets returns {pid:planet_object}
planet = gameinfo.planets[p]
own_value = 1
for q in gameinfo.my_planets.values():
if q != planet:
q_value = q.num_ships / planet.distance_to(q)
own_value = own_value + q_value
enemy_value = 1
for q in gameinfo.enemy_planets.values():
if q != planet:
q_value = q.num_ships / planet.distance_to(q)
enemy_value = enemy_value + q_value
self.heatmap[p] = own_value/enemy_value
我也尝试添加一些代码来限制从 0 到 1 的范围
highest = self.heatmap.keys()[0]
lowest = self.heatmap.keys()[0]
for p in gameinfo.planets.keys():
if self.heatmap[p] > highest:
highest = self.heatmap[p]
elif self.heatmap[p] < lowest:
lowest = self.heatmap[p]
map_range = highest-lowest
for p in gameinfo.planets.keys():
self.heatmap[p] = self.heatmap[p]/map_range
self.heatmap_mean = sum(self.heatmap.values(), 0.0) / len(self.heatmap)
值最终介于 0 和 1 之间,但平均值是 0.245? (实际上数值范围从 0.019 到 1.019)。
【问题讨论】:
标签: python python-2.7 pygame pydev