このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| 歩数map [2011/07/04 02:26] – 作成 member | 歩数map [2011/08/05 03:13] (現在) – member | ||
|---|---|---|---|
| 行 2: | 行 2: | ||
| 足立法や最短経路の導出には必須だと思います。 | 足立法や最短経路の導出には必須だと思います。 | ||
| - | 目標値から何マス離れているかを表すマップです。 | + | 目標位置から何マス離れているかを表すマップです。 |
| + | |||
| + | 歩数マップを作って、数字の少ない方へたどっていけばゴールまでいけます。 | ||
| ===== 簡単な歩数マップの作り方 ===== | ===== 簡単な歩数マップの作り方 ===== | ||
| - | ①歩数マップ用に、16×16(迷路区画分)のchar型配列を用意します。 | + | ①歩数マップ用に、16×16(迷路区画分)のunsigned |
| ②歩数マップを255で初期化し、目標座標(ゴール位置)の歩数を0にします。 | ②歩数マップを255で初期化し、目標座標(ゴール位置)の歩数を0にします。 | ||
| 行 11: | 行 13: | ||
| ③for文とif文を使って、歩数マップが0の所を探します。 | ③for文とif文を使って、歩数マップが0の所を探します。 | ||
| - | ④0の所を見つけたら、その周囲4マスで歩数が255の所を1に変えます。 | + | ④0の所を見つけたら、その周囲4マスのうち、壁がなく歩数が255の所を1に変えます。 |
| ⑤全部探したら、今度は1の所を探します。 | ⑤全部探したら、今度は1の所を探します。 | ||
| - | ⑥1の所を見つけたら、その周囲4マスで歩数が255の所を2に変えます。 | + | ⑥1の所を見つけたら、その周囲4マスのうち、壁がなく歩数が255の所を2に変えます。 |
| ⑦全部探したら、今度は2… | ⑦全部探したら、今度は2… | ||
| 行 23: | 行 25: | ||
| 最初のうちは、紙に書いてイメージを掴んでから作ってみるといいかもしれません。 | 最初のうちは、紙に書いてイメージを掴んでから作ってみるといいかもしれません。 | ||
| + | ちなみに未探壁には注意が必要です。 | ||
| + | |||
| + | 足立法と最短経路導出で扱い方が変わるので注意してください。 | ||
| + | |||
| + | {{: | ||
| ===== 高速な歩数マップの作り方 ===== | ===== 高速な歩数マップの作り方 ===== | ||