0

C++でPacManのマップを作成する方法を教えてください。mを始めるための提案はありますか?

よろしくお願いします。

4

2 に答える 2

3

これは非常に幅広い質問であり、追加の要件によって異なります。基本的には、セルを単純に表す2次元配列を使用します。各セルには次のいずれかが含まれます。

  1. 一方向の壁(モンスターが通過するゲートを表すため)
  2. 空のセル
  3. 食物のある細胞
  4. パックマンを別の場所に送る「テレポートセル」(左側と右側の2つのセルを表すため)

モンスターとパックマン自体はマップに表示されません。代わりに、それぞれがマップ内で自分の位置を持っている必要があります。

これにはC++は必要ありません。必要なのはCだけですが、意図的にC ++ソリューションが必要な場合は、配列をベクトル、この場合はベクトルのベクトルに置き換えることができます。

モンスターはどのように動くのでしょうか

マップ内のポイントBからポイントAに到達する場合は、 A *アルゴリズムなど、マップ内の最短パスを見つけるさまざまなアルゴリズムのいずれかを使用できます。ただし、この場合、いくつかの点を考慮する必要があります。

  1. pacman自体は常に移動しているため、パスが1つのステップから別のステップに変わります。
  2. すべてのモンスターが同じパスを持つことは望ましくありません。そうしないと、すべてのモンスターが同じように移動するため、実際には複数のモンスターが存在することはありません。
  3. モンスターが極端に効果的になることは望ましくありません。そうすると、ゲームが難しくなりすぎて、あまり楽しくなくなるからです。

モンスターが「交差点」に到達したときに、パックマン自体に対する一般的なバイアスとともに、いくつかのランダムな決定を使用することをお勧めします。したがって、モンスターが東、西、北のように3つの方向にあり、パックマンが北にある場合、北に40%、東に30%、30の確率でランダムに決定します。 % 西に。

于 2010-12-24T16:56:19.007 に答える
0

ヒントは次のとおりです。

// 1 = wall
// 0 = no wall

int map[6][6] = {{ 1, 1, 1, 1, 1, 1 },
                 { 1, 0, 0, 0, 0, 1 },
                 { 1, 0, 0, 0, 0, 1 },
                 { 1, 0, 0, 0, 0, 1 },
                 { 1, 0, 0, 0, 0, 1 },
                 { 1, 1, 1, 1, 1, 1 }};
于 2012-01-11T09:02:20.867 に答える