随机生成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)
在判定与炸弹人相连的空地时出现了问题
- while语句下方p=...,报错列表类型不一致
- 如何才能把所有与炸弹人相连的空地全部找出来,并添加到一个列表里?
要python代码,不要说遍历