0

私はcでpacmanを作成しており、現在、ゴーストごとに1つのスレッドを使用しており、各ゴーストは「#」を表しますが、実行すると、すべての画面がゴーストでいっぱいになり、すべてのゴーストが1つか2つだけ移動するわけではありません。

このロジックを使用しています

5つのゴーストの構造体を作成します。各ゴーストにはx、yの位置が含まれます。5つのスレッドの配列を作成し、各スレッドは1つのゴーストを実装します。各ゴーストは画面上でランダムに移動します。移動するスペースごとに、古い位置にスペースを印刷してから、新しい位置に「#」を印刷します。

幽霊の動きを実装する方法の例を教えていただけますか、それとも私が行っている実装が正しい方法ですか?

ありがとうございました

4

2 に答える 2

3

エージェントごとに1つのスレッドは、ゲームを構築するためのあまり一般的なアプローチではありません。大きなシーンではすぐに機能しなくなります。従来の解決策は、ゴーストを表すステートマシンを定義し、その内部状態を次のタイムクォンタムに調整する機会を与えるある種の「アドバンス」メソッドを使用することです。このステートマシンの複数のインスタンスを作成し、ゲームループの各反復ですべての「advance」メソッドを呼び出します。これはすべて、単一のスレッドで発生する可能性があります。

これよりもかなり多くのことがありますが、それはあなたが始めるのに役立ちます。

于 2011-08-17T22:38:06.700 に答える
2

複数のスレッドから同時に画面を更新しようとすると、画面更新コードの周りにミューテックスが必要になります。

于 2011-08-17T22:35:29.053 に答える