世界生成开发问题:输出不符合预期形态求助
世界生成功能输出不符合预期问题解决
问题现状
当前运行代码后,输出为每行单独一个#,示例如下:
...(剩余重复行省略)
使用的Python代码:
import random def generate(): line = "" hillSize = random.randint(1, 10) line = "#\n" * hillSize return line for i in range(10): print(generate())
期望生成的世界形态为同一行内由连续或间隔的#组成地形,不同行长度不同,允许出现空行,示例:
########
问题原因
代码中"#\n" * hillSize会生成hillSize个#加换行的组合,导致每个#单独占一行;同时循环调用generate()时,print()会自动在返回内容后再加一个换行,进一步增加了多余空行。
解决方案
方案1:生成连续#行+随机空行
先将多个#拼接成单行,再添加换行;同时加入随机空行的逻辑,匹配预期的世界形态:
import random def generate(): # 30%概率生成空行,可自行调整概率 if random.random() < 0.3: return "\n" hill_size = random.randint(1, 10) # 把多个#拼成一行,末尾加换行 line = "#" * hill_size + "\n" return line for _ in range(10): # 用end=""避免print自动额外添加换行 print(generate(), end="")
方案2:生成带空格的不规则地形
如果需要生成类似# ###这种带间隔的地形,可以随机在一行内插入空格:
import random def generate(): if random.random() < 0.3: return "\n" line_length = random.randint(1, 10) line = [] for _ in range(line_length): # 70%概率生成#,30%概率生成空格,可调整比例 line.append("#" if random.random() < 0.7 else " ") return "".join(line) + "\n" for _ in range(10): print(generate(), end="")
内容的提问来源于stack exchange,提问作者frag
相关产品推荐
相关产品推荐

