今天,我们将为Roguelike RPG生成地图!
示例图:
##########
#### F#
#### ##
## C#C#
# ## #
# C #E #
#### # #
# #
#P #
##########
#
是墙壁,P
是玩家的起点,F
是必须达到的终点,C
是可以收集的硬币,E
是可以战斗的敌人。
地图规格:
- 高度和宽度都应在10到39之间(包括10和39)。高度不必等于宽度。
- 地图边框应填满墙壁。
P
应该放在左下角。F
应该放在右上角。- 应该有1到3个敌人。
- 应该有2到4个硬币。
- 中间应该有一些墙。应该有从得到一个路径
P
的每一个C
,E
以及F
,牢记玩家不能斜走。 - 每种可能的组合都应有发生的机会。
规则
- 最低字节程序获胜。
- 您的程序不应接受任何输入。
- 您的程序可能不会因错误而退出(非致命输出是
STDERR
可以的,但是在生成地图后我们无法出现类似流氓的崩溃!) - 允许使用单个尾随换行符,并允许尾随空格。
- 不允许其他输出。
3
这很像流氓,只是fyi。
—
Rɪᴋᴇʀ
您能否澄清“每种可能的组合都应有相等的发生机会”?您的字面意思是所有有效地图(尤其是P可以到达所有C / E / F的所有地图)都必须以相等的概率出现吗?如果是这样,似乎唯一可能的算法是随机均匀地生成地图,然后检查P是否可以到达所有内容,并丢弃无效的地图,直到发生这种情况为止。
—
格雷格·马丁
您是否也可以澄清-“中间应该有一些墙”,如果我一直只放置2墙怎么办?
—
Gurupad Mamadapur
@GregMartin我也将其更改为“所有可能的布局都应有发生的机会”,不一定是相等的机会。
—
帕维尔
被墙壁包围的无法到达的空正方形怎么办?它是有效的布局还是应该完全避免使用?(换句话说:每个空的正方形都应该可以到达吗?)
—
Arnauld