Rynnhan 2019-11-20 12:30 采纳率: 0%
浏览 321
已结题

炸弹人游戏,关于如何选取联通路径问题

随机生成10x10的格状地图,33格墙(标记W),33格空地(标记0),33格敌人(标记E),1格为炸弹人(标记B)。

炸弹只能放在空地上,敌人和墙无法通过,确保炸弹人能够抵达空地安放炸弹。

炸弹可以消灭安放地点同行和同列的敌人,即上下左右四个方向炸开,爆炸冲击波碰到墙则停止。

炸弹人需要安放两个炸弹,两个炸弹如消灭同一个敌人则只计数1个。

输出结果:

1) 10x10地图;

2) 两个炸弹合计消灭敌人数量的最大值;

3) 安放炸弹的两个位置坐标;

输出范例:

00WW00WW00

0B00EEEWEE

0WW0WEWEWE

WE00E0WEEW

WEW0WW00WE

WEE0EEE0W0

WEW0WEW0WE

0WEE00E00E

0EW0WEWWW0

W00EEWEEE0

1号炸弹位置: (2,4)

2号炸弹位置: (6,4)

合计灭敌数: 10

这是我的代码

import random
a=['W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W','W',
   'W','W','W','W','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O','O',
   'O','O','O','O','O','O','O','O','E','E','E','E','E','E','E','E','E','E','E','E','E','E','E','E','E','E','E','E','E',
   'E','E','E','E','E','E','E','E','E','E','E','E','B']
random.shuffle(a)
for i in range(len(a)):
   print(a[i],end='')
   if (i+1)%10==0:
      print('\n')

BAdd=a.index('B')
print(BAdd)
rowB=BAdd//10+1
colB=BAdd%10+1
b=(rowB,colB)
print('Bomber man coordinate:',b)
o=[i for i, x in enumerate(a) if x =='O']
w=[i for i, x in enumerate(a) if x =='W']
e=[i for i, x in enumerate(a) if x =='E']

print(o)
if BAdd%10==0:
   selected = [x for x in o if x == BAdd + 1 or x == BAdd - 10 or x == BAdd + 10]
   print(selected)
elif BAdd%10==9:
   selected = [x for x in o if x == BAdd - 1 or x == BAdd - 10 or x == BAdd + 10]
   print(selected)
else:
   selected=[x for x in o if x==BAdd-1 or x==BAdd+1 or x==BAdd-10 or x==BAdd+10]
   print(selected)
if selected is not None:
   while len(selected)<=33:
      p=[x for x in o if x==[i+1 for i in selected] or x==[i-1 for i in selected] or x==[i+10 for i in selected] or x==[i-10 for i in selected]]
      selected.append(p)
else:
   print('Cannot drop the bomb!')
print(selected)
print(p)

在判定与炸弹人相连的空地时出现了问题

  1. while语句下方p=...,报错列表类型不一致
  2. 如何才能把所有与炸弹人相连的空地全部找出来,并添加到一个列表里?

要python代码,不要说遍历

  • 写回答

1条回答

  • threenewbee 2019-11-20 15:21
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置