秘伝のタレからの脱却~探索用歩数マップ~Part2
前回の続きです。
① ゴール区画を任意の位置に複数で設定可能(4、9マスゴールにも対応可能)
について説明していこうと思います。
これを語るためには大前提として理解していてほしいことがあります。
歩数マップは複数個ゴールがあっても何も問題ない
ということです。
このことを理解してほしいので、以下に例を示します。
まず、簡単な例としてエクセルで簡単な歩数マップを作ってみます。
まずは,ゴールは(2,2)の1マスです。

THe普通。
この歩数マップをもとにマウスを走らせた場合、
マウスは中心に向かって走って行きますね。
では、この歩数マップをもとに等高線グラフを書いてみます。

真ん中が低くなって外にいくにつれて高くなっているグラフになります。
この床面にボールを置いた場合、ボールは一番低い位置をめがけて転がっていきますね。
この例から、
歩数マップとマウスというのは
勾配のある床とボールの関係と同じであることがわかります。
では次にゴールを2個所に増やしてみます。
ゴール座標は(1,3)、(4,1)です。

これからどうなっていくか考えてください。
歩数マップは目的地から隣接する区画に歩数を振っていきます。
つまり、こうなります。

等高線グラフはこんな感じ。

この等高線マップにボールを置いたらどうなるでしょう。
おそらくボールは、
(1,3)に近い方に置いた場合は(1,3)の穴に
(4,1)に近い方に置いた場合は(4,1)の穴に
転がっていくと思います。
ボールが上のように動くということは、マウスも同じ動きをすることがわかります。
ゴールが複数個ある場合、
マウスは複数個のゴールの中から一番近いゴールを目指して走ることが可能なわけです。
他の位置にゴールを移動したり,ゴールの数を増やしていっても同じです。
ここで考え方を変える必要がありますね。
ゴールは任意の1つではなく、
任意の位置に複数個置けるプログラムの内"たまたま"1個を指定しているのだと。
また、ゴールの位置個数はいくらでもよく、
ゴールの位置は離れていてもよいことが上の例からわかりました。
つまり、ゴール座標というのは#defineやconst変数ではなく
全区画の組み合わせを網羅できるように定義しておくべきだということです。
続く
スポンサーサイト
コメント : 0 ]

| ホーム |