C ++建模动态的对象板

时间:2012-09-14 04:14:35

标签: c++

我正在设计一个C ++控制台程序,它为Shapes的电路板建模。唯一的规则是,必须将放在棋盘上的所有Shapes添加到现有Line(第一步除外)。每当Shape放置在棋盘上时,它在水平和垂直方向都有Line,即使它是该线的唯一成员。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

允许x和y中的负位置。这将允许电路板在所有方向上均匀扩展(除了正和负的积分值的数量减1),而不需要更改坐标。

您的问题是如何显示它。如果存储min和max x和y索引,则可以使用for循环,如

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

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