如何在java中根据特定条件为游戏生成随机棋盘?
我正在为大学项目制作一个棋盘游戏,它需要用java完成, 我陷入的部分是生成棋盘游戏现在想象一下,我们有一个正方形的棋盘,它的大小是可变的,这意味着玩家在游戏开始时决定, 电路板由单元组成,我定义了一个表示单元的类(下面的UML类) 而棋盘只是一个二维单元数组(游戏类的UML),每个单元都有一个生物群落(山、平原、沙漠、森林、海洋)生物群落在枚举中定义, 现在我的问题是,我需要为每场游戏生成一个随机棋盘,borad需要满足两个条件:如何在java中根据特定条件为游戏生成随机棋盘?,java,random,generator,Java,Random,Generator,我正在为大学项目制作一个棋盘游戏,它需要用java完成, 我陷入的部分是生成棋盘游戏现在想象一下,我们有一个正方形的棋盘,它的大小是可变的,这意味着玩家在游戏开始时决定, 电路板由单元组成,我定义了一个表示单元的类(下面的UML类) 而棋盘只是一个二维单元数组(游戏类的UML),每个单元都有一个生物群落(山、平原、沙漠、森林、海洋)生物群落在枚举中定义, 现在我的问题是,我需要为每场游戏生成一个随机棋盘,borad需要满足两个条件: 董事会的2/3必须是海洋 一座山、平原、森林或沙漠必须至少有一
public enum Biome {
MOUNTAIN, PLAIN, DESERT, FOREST, OCEAN;
}
我想你会一行一行或一列一列地填写你的董事会 你知道:
- 董事会的规模
- 海洋要多少钱
- 多少可以是其他的(节省多少可以是其他的ie
)int nonOceanBiomeLeft
- 你已经填了多少
nonOceanBiomeLeft
减少一。如果它已经在另一个非Ocean附近,您就在这里停下来查看该字段,否则您需要再次减少nonOceanBioEleft
,并将其添加到类似int nonOceanBlocked
(如果您的新字段没有邻居),这是为了确保你不会在某个地方创造一个新的海洋生物群落,也不会有满足条件的生物群落。所以如果你一无所有,你就无法创造一个海洋生物群落
如果您有nonOceanBlocked>0
,您需要观察上面一行中的邻居,如果它是一个单独的非海洋生物群落(因此保存每个字段的邻居信息或动态计算)。如果上面一行中的邻居是单独的,您需要添加一个noOcean,然后从nonOceanBlocked
中删除一个noOcean,因为这个邻居有一个邻居,您不需要再次增加nonOceanBlocked
此外,如果你创建了一个新的海洋生物群落,而最后一个区域是一个单独的海洋生物群落,你也可以减少海洋生物群落的数量
小心
- 最后一行:您需要立即给邻居,不能等待下一行,因为没有
- 如果只有
等于1,则不能将其放置在没有邻居的位置,因为需要将其nonOceanBioEleft