HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0318
名無し同じ所を通らないようにするには?4解決


名無し

リンク

2012/3/18(Sun) 01:22:28|NO.45465

ランダムな方向に行くプログラムを作っているのですが、同じ所を通ってしまいます。
一応ifに条件を追加して、↑に行って↓に行くことはなくなりましたが、なんか以下ルさせてると
同じ所を通ってしまいます。同じ所を通らなくするには、どうすればいいのでしょうか?


randomize x=300:y=300 repeat 5//ループ ランダム=rnd(4)//方向を決める if ランダム=0&ランダム記憶!1:y-16:文字="↑":ランダム記憶=0//方向を決める if ランダム=1&ランダム記憶!0:y+16:文字="↓":ランダム記憶=1//方向を決める if ランダム=2&ランダム記憶!3:x-16:文字="→":ランダム記憶=2//方向を決める if ランダム=3&ランダム記憶!2:x+16:文字="←":ランダム記憶=3//方向を決める pos x,y mes 文字 await 1 loop//ループ



この記事に返信する


名無し

リンク

2012/3/18(Sun) 01:23:12|NO.45466

すみません、ループ回数は5回じゃなくて100回でした。



Taddi

リンク

2012/3/18(Sun) 03:24:09|NO.45467

確実にループ回数分ランダムに移動させることは難しい気がします。
なぜなら、

↓←← →×↑  →→
のように、ループの途中で行き止まる場合が出てくるからです。
そのことを無視してよいのであれば、前の情報を記憶していくのではなく、
配列を利用したRPGの当たり判定を応用すれば良いかと思います。
簡単なサンプルを作ってみたので確認してみてください。


randomize x=20 : y=12 文字=" ","←","↑","→","↓" dim 配置,40,24 repeat 100 repeat 40*24 X座標=cnt\40 : Y座標=cnt/40 pos 16*X座標,20*Y座標 : mes 文字(配置(X座標,Y座標)) loop 乱数=rnd(4) repeat 4 乱数=(乱数+cnt)\4 if 乱数=0 : if x!0 : if 配置(x-1,y)=0 { 配置(x,y)=乱数+1 : x- : break} if 乱数=1 : if y!0 : if 配置(x,y-1)=0 { 配置(x,y)=乱数+1 : y- : break} if 乱数=2 : if x!39: if 配置(x+1,y)=0 { 配置(x,y)=乱数+1 : x+ : break} if 乱数=3 : if y!19: if 配置(x,y+1)=0 { 配置(x,y)=乱数+1 : y+ : break} loop await 1 loop



名無し

リンク

2012/3/18(Sun) 10:40:02|NO.45475

行き止まり・・・そこは考えていませんでした;わかりやすい説明も、ありがとうございます!!



名無し

リンク

2012/3/18(Sun) 10:40:19|NO.45476

解決にするの忘れてました^^;



ONION software Copyright 1997-2021(c) All rights reserved.