0

のボードをモデル化する C++ コンソール プログラムを設計していShapesます。唯一のルールはShapes、ボードに配置されたものはすべて既存のものに追加する必要があるということですLine(最初の移動を除く)。Shapeaが盤上に置かれるときはいつでも、Lineそれが行の唯一のメンバーであっても、水平方向と垂直方向の両方に a があります。

LineandShapeオブジェクトをうまく実装しました。私が苦労している問題は、行を整理する方法です。ボードは動的で、任意の方向に拡張できるため、ラインに位置 (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 に負の位置を許可します。これにより、座標の変更を必要とせずに、ボードをすべての方向に均等に拡張できます (正と負の整数値の数が 1 だけずれている場合を除く)。

あなたの問題はそれを表示する方法です。最小および最大の 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 の代わりに。これは明らかで、ボードの拡張に伴うインデックス値の概念の変更を回避し、インデックスを使用できるようにします。

于 2012-09-14T06:19:33.087 に答える