投稿
ヨ! kame1005
BASIC生活9日目に突入 2~3日目あたりからひたすら試行錯誤していた 敵が迷路を検索してプレイヤーの位置を把握する方法ですが スラブラのフィールドスマッシュ中に思いついた方法を試したら簡単に出来るようになりました(^^ おかげで先回りや背後から強襲も作れるようになり 突然の閃き1つで悩みが一気に解消される現象ってやつを 初体験したかもしれません
9そうだね
プレイ済み
返信[1]
親投稿
ヨ! kame1005
今まで敵が固体別にプレイヤーを検索していたのですが ボードゲームのようにある程度区切った間隔を1マスとし SRPGの移動力の様にプレイヤーから何マスかを計算 敵の処理は4方向をチェックして一番少ない数値に向かうだけ ひたすら試行錯誤して行き着いた答えが こんなに単純な処理だったとは(´・ω・`) 初心者なりにもっと良い処理方法が無いかまだまだ試行繰り返そうと思います
0そうだね
プレイ済み
返信[2]
親投稿
けい kei0baisoku
同じようなものを作った事はないのですが、優れたアルゴリズムほどからくりはシンプルです。 一言、二言で説明できる仕組みで実現出来たのでしたら、かなり良い方法だと思います(^O^) ベースがシンプルだから、そこから何か足したり変えたりするのもやり易いと思います。
0そうだね
プレイ済み
返信[3]
親投稿
ヨ! kame1005
>>けいさん びっくりするほど単純な方法です(^^ ・始めに16x16で区切ってマス目を作る ・作ったマス目に配列変数でXY座標を作り全て-1を入れる  そのついでに何マスあるのかも調べておく ・プレイヤーがいるマスを基点の0にする ・0を代入した場所から周囲4マスを調べ通路の場合1、壁の場合999 ・次は1を代入した場所から周囲4マスを調べ-1で通路の場合2、壁の場合999 ・次は2・・・etcと繰り返すと全ての-1が埋まります 敵の周囲4マスからこの番号を拾うと最短距離がでます 敵をいっぱい出しても周囲4マスの番号を拾うだけなので 負荷的にも優しくなったと思います(笑)
1そうだね
プレイ済み
返信[4]
親投稿
けい kei0baisoku
いいですね!(´∀`) 単純といっても、プログラムに落とし込もうとするとループか再帰をうまく使う必要がありそうですね。 もしかしたら私もどこかで参考にさせて頂くかも………φ(..)
0そうだね
プレイ済み
返信[5]
親投稿
ヨ! kame1005
欠点は壁が+のように周囲が壁だけだと判断出来なくなりますが XY座標の波紋が広がりきった段階でー1のエリアは プレイヤーサイドから「通行不可」として壁扱いの999を代入しています
0そうだね
プレイ済み
返信[6]
親投稿
ヨ! kame1005
0から1を入れる時も少しだけ工夫して 1を入れたXY座標、入れた回数を加算して 出来るだけループ回数を減らしています FOR~NEXT大活躍(^^
0そうだね
プレイ済み
返信[7]
親投稿
ヨ! kame1005
これを繰り返すと最終的に入れた回数が0になるので その時点で迷路検索は終了で次の処理に移行します 万が一残ったー1は壁扱いで一掃します 今の所、期待通りに動いてくれているので大丈夫なはず(笑)
0そうだね
プレイ済み
返信[8]
親投稿
ASA fusuian
すごいですね! 以前追いかけルーチンを作ったときは、敵一匹ずついちいち前方、右方向、左方向…ってカウントしましたよ。
0そうだね
プレイ済み
返信[9]
親投稿
おかっぺ Japanese_WASABI
これは凄い!とっても勉強になりました!
0そうだね
プレイ済み
返信[10]
親投稿
けい kei0baisoku
ループによる処理負荷にまで気を配っているとは(°Д°)スゴイ 初心者どころか普通に中級者レベルのことをしてると思います(°ω°)
0そうだね
プレイ済み
返信[11]
親投稿
ヨ! kame1005
皆さんありがとうございます 4万の出費でおもわぬ副産物でした( ̄^ ̄)ゞ
1そうだね
プレイ済み