2

FSA グラフで表現したい pac-mac に似たゲームを考えてみましょう。迷路 (テーブル) があり、ランダムな位置にベリーがあります。目標は、迷路内のすべてのベリーを食べることです。コントロールのために考慮しなければならないコマンドは、
GOAHEAD、LEFT、RIGHT、CHECKBERRY (パックマンの FRONT にベリーがあるかどうかをチェックする)、EAT、OFF-MAZE です。
最大 10 ステージが必要です...そして、連続して複数のギャップを設けることはできないことに注意してください。ありがとうございました

編集: 代替テキスト http://img338.imageshack.us/img338/2479/graphp.jpg

わかりました。グラフを作成しましたが、ギャップを越える方法が見つかりません。例: あるベリーの列の後の迷路で突然前にギャップがあり、次のベリーはそのギャップのすぐ下にあります. したがって、左または右に曲がっても、checkberryコマンドがTRUE値を返さないため、グラフがどのように見えるかわかりません。では、パックマンが食事をせずにギャップスクエアに移動する方法が必要ですが、前のものに移動するか、他の人に移動するかをどのように決定しますか?

4

2 に答える 2

2

状態図を設計している場合は、状態に番号を付けるのではなく、最初にステートマシンが持つ状態の種類を把握するようにしてください。

これは簡単な例です。あなたの「パックマン」は歩いたり、チェックしたり、食べたりする必要があります。したがって、、、およびの3つの状態IS_WALKINGIS_CHECKINGありIS_EATINGます。まっすぐ進み、食べるための図は、次の図のようになります。使用している図の表記法の種類はわかりませんが、いくつかのことが明らかになることを願っています。

                     GO_AHEAD
       +------------------------------------+
       |                                    |
       v                                    |
+----------------+      false            +------------+
| IS_CHECKING    |---------------------->| IS_WALKING |
+----------------+                       +------------+
| E: CHECK_BERRY |                          ^
+----------------+                          |
       |                                    |
       | true                               |
       v                                    |
 +-----------+               EAT            |
 | IS_EATING |------------------------------+
 +-----------+

州に適切な名前を付けると、遷移がより自然になり、理解しやすくなります。状態の適切な名前の例は、ある特定の瞬間にステートマシンが実行していることを非常に明確に説明するものです。

于 2009-11-08T15:05:53.843 に答える
1

この種の質問について Stackoverflow からのヘルプを探している場合。あなたは明らかにあなたがしていることを見る必要があります。あなたの質問はより具体的にする必要があります。特定のコーディングの問題を抱えていますか、それともどこから始めればよいかわかりませんか? これは些細な演習または本格的なプロジェクトを意図したものですか?

やりたいことのマインド マップを作成し、現在持っているスキルでそこからどこに行けるかを確認してください。実際の問題に遭遇したら、戻ってきてください。

于 2009-11-08T12:41:22.097 に答える