0

我正在设计一个 C++ 控制台程序,它为Shapes. 唯一的规则是所有Shapes放在棋盘上的东西都必须添加到现有棋盘上Line(第一步除外)。每当 aShape放在棋盘上时,它Line在水平和垂直方向上都有 a,即使它是该行的唯一成员。

我已经很好地实现了Line和对象。Shape我正在努力解决的问题是如何组织线条。给线一个位置(如在 ax,y 坐标中)似乎不是一个好主意,因为板是动态的,可以向任何方向扩展。现在每条线只有一个方向,垂直或水平。我还需要能够将板打印到控制台,以便用户可以指示他们想要添加的位置。

有没有人对如何有效地模拟这种情况有任何想法?

4

2 回答 2

1

目前尚不完全清楚规则是什么,但如果您担心自由扩展的网格,您可以考虑将Shape对象存储在地图中:

typedef std::pair<int,int> TGridPos;
typedef std::map<TGridPos,Shape> TGrid;

也许您可以详细说明游戏玩法。

于 2012-09-14T04:29:32.960 回答
0

允许 x 和 y 中的负位置。这将允许棋盘在所有方向上均等地扩展(除了正数和负数的整数值减一),而无需更改坐标。

你的问题是如何显示它。如果您存储 min 和 max x 和 y 索引,您将使用类似的 for 循环

for(int x = minX; x <= maxX; ++x) {
    for(int y = minY; y <= maxY; ++y) {
        // display at x,y
    }
}

而不是 from x=0 和 y=0 这很常见。这很清楚,避免了随着板的扩展而改变任何索引值的概念,并允许您使用索引。

于 2012-09-14T06:19:33.087 回答