平台游戏地图字符串列表随机放置'E'无效,求代码修复方案
问题解决:随机放置敌人标记到地图中
你的代码问题出在遍历列表元素的方式上:当你用 for i in line 循环时,i 只是列表元素的副本,并非对列表对应位置的引用。所以即使你把 i 改成了 'E',也不会修改原列表 line 里的元素,最终的 level_map 自然看不到敌人标记。
修正后的代码
import random old_level_map = [ '6--------------------------------------------------------------------7', 'L I', '9____________________________________________________________________8', ' ', ' ', ' P ', ' ', ' ', '6--------------------------------------------------------------------7', 'L I', '9____________________________________________________________________8'] level_map = [] for j in old_level_map: line = list(j) # 改用索引遍历,直接修改列表对应位置的元素 for idx in range(len(line)): char = line[idx] if char.isspace(): if random.random() < 0.1: line[idx] = 'E' level_map.append(line) # 打印验证结果 for row in level_map: print(''.join(row))
关键修改说明
- 通过
range(len(line))获取元素索引,直接操作line[idx],这样改动会直接作用到原列表上。 - 去掉了冗余的
i.replace(i, 'E'),直接赋值 'E' 即可,代码更简洁。 - 新增了打印验证逻辑,方便你确认敌人标记是否正确生成。
内容的提问来源于stack exchange,提问作者Yasser Machkour
相关产品推荐
相关产品推荐

