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
    关注
    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?