0

我这里有点逻辑问题。

正如标题所说,我尝试将棋盘游戏构建为计算机程序(也许有互联网支持,但那是另一个故事)

至于现在,我有一张地图,其中有一些十字路口,因此我不能简单地将字段定义为“1、2、3、4,...”,因为如果字段 10 有十字路口,我会多个字段必须标记为 11(例如,因为在字段 10 的左侧和右侧有一个字段。)

所以问题是,如果我不能用数字来定义棋盘,那么我就不能简单地得到一个玩家在掷 2d6 骰子时可以采取的可能位置,并计算 'Field-Nr. + 随机范围(1,6)+ 随机范围(1,6)'

有没有人有想法,如何以另一种方式定义这样的地图,我仍然可以用 2d6 掷骰子计算玩家 X 可能的新领域?

提前致谢。

4

3 回答 3

2

如果我理解得很好......(我不这么认为)这可能会对你有所帮助。只需为您的棋盘游戏字段使用动态数组并在维度 x,y 之后更改您的操作 .... 看看这个“type Name = array of {array of ...} Base type; // Dynamic array”

于 2012-05-14T06:09:33.560 回答
1

听起来你有一个连接顶点的图。当玩家处于 N 条边的特定顶点时,假设 N < 12,将从遍历边号 N % ( rand(6) + rand(6) ) 到达新的 Field。

你也可以只做 rand(12),但与 2d6 不同,它的分布是均匀的。

于 2012-05-14T06:15:09.817 回答
0

我建议不要使用动态数组,而是使用记录的链接列表来描述周围的单元格,并使用该链接列表遍历玩家的位置和可能的移动。

首先,定义一个记录来描述您棋盘的可玩网格中的每个单元格(网格上的单元格可以像棋盘一样是四边形的,也可以像文明 V 中那样是六边形的)......每个单元格记录都应该包含坐标等信息,其中玩家也在那个牢房中,任何会影响游戏玩法的奖励/危险/等(你明白了)。

最后,链表连接所有这些单元,有效地指向任何连接的单元。这样,您只需要玩家 X 的单元格位置,并计算n 个单元格上的可能移动(由掷骰子决定),遍历相邻的单元格(例如,没有危险的单元格)。

如果您只想跟踪可能的道路,您还可以使用这种方法来识别玩家 X 可以行驶的可能路径(而不是单元格)。

于 2012-05-15T16:15:47.877 回答