0

Glut と Opengl game info(wiki)を使用して、C で独自の bejeweld を作成します。

短いゲーム情報 ゲームはグリッドで構成されており、たとえば 8x8 のさまざまな宝石が含まれています。隣接する 2 つの宝石を交換して、同じタイプの少なくとも 3 つの宝石の行/列を作成すると、宝石は消えます。競技場は上からいっぱいになります。

2 つの設計コンセプト リンクされたリストと配列

これを実装するにはいくつかの方法がありますが、最も保守が簡単で効率的な方法が必要です。私の考えは:

(2D 配列は競技場/グリッドを表します)。

1) gem オブジェクト (インスタンス) へのすべてのポインターを含むリンクされたリスト。また、リストにすばやくアクセスするために、リンクされたリスト要素へのすべてのポインターを含む 2D 配列。リンクされたリストは、ゲーム オブジェクトを簡単に印刷するために使用できます。すべてのリンクされたリスト オブジェクトには、場所 (宝石、スコア ボード、時間など) が付属しています。

2) 上記と同じ考え方ですが、すべての行または列の連結リストと他のゲーム要素の連結リスト

3) オブジェクト/インスタンス (宝石) へのポインターを持つ 2D 配列のみ。

必要な操作

-ポインターを交換して、要素 (宝石) を交換しますか?

- 新しい要素を「作成」(グリッドの上部)

-少なくとも3つの同じ種類のgemが隣り合っている行/列を確認します

私はそれをすべて明確にしたことを願っています。何が最善の解決策になると思いますか?

4

3 に答える 3

1

リンクされたリストを使用するのはやり過ぎだと思います。それらが有用であると私が考えることができる唯一のことは、gem を上からドロップすることですが、それでも 2D 配列ではかなり些細なことです。

の 2 次元配列はint問題ありません。シンプルで高速です。

于 2012-04-19T21:45:35.157 に答える
0

私の提案は両方を実装することです。あなたは少し経験のないように聞こえます。次にこれらの質問に出くわしたときに自分でこれらの質問に答えることができるようにするには、さらにコードを作成する必要があります。優れた設計では、実装のこの部分を簡単に置き換えることができるので、それを試してみて、そこから学んでください。

于 2012-04-20T17:22:37.810 に答える
0

2D配列を使用します。必要な要素に到達するまでリストを反復するのではなく、要素に直接アクセスできるため、使いやすいです。

ただし、リンクされたリストの利点もわかります。スワップ後にメンバーを削除して、3 つ連続で取得できます。配列を使用する場合と同じように、各要素を反復処理してシフトした後、頭/尾に新しい要素を追加するだけです。

于 2012-04-19T21:49:00.120 に答える