私は楽しみのためにC#/ XNAでヘビゲームを作成していますが、それはいくつかの優れたオブジェクトデザインを練習する良い機会です。
ヘビオブジェクト
基本的にリンクリストであるスネークオブジェクトがあり、各ノードはマップに関連するXおよびY座標を持つベクトルです。
また、ヘビが食べたばかりかどうか(この場合、この更新では最後のボディノードは削除されません)、ヘビが移動している方向など、いくつかのプロパティがあります。
マップオブジェクト
マップ(ゲームエリア)は、その内容を整数の2D配列内に保持します。プリミティブの配列を使用してマップを格納すると、メモリ消費が抑えられ、ベクトルの配列よりも高速(かつ簡単)に反復できます。
コンテンツは列挙型{Empty、Wall、Snake、Food}内で定義され、配列内の関連する座標に格納されます。
マップ内のスネークオブジェクトへの参照も保持されるため、renderを呼び出すたびに、スネークを構成するノードをループして、マップ上の正しい位置にレンダリングします。
質問!!
私の質問は...この結合がきつすぎるかどうかです。その場合、何か提案(つまりオブザーバーパターン)がありますか、それともこの状況で大丈夫ですか...
マップで使用されている座標系を知る必要からヘビを切り離す方法を考えようとしましたが、それを機能させ、各ノードの相対的な位置を維持する方法を考えることはできません-他の。
どんな答えもありがたいです、乾杯!