Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4049 / 76734 ←次へ | 前へ→

【78313】Re:Randomwalk
発言  β  - 16/6/24(金) 13:40 -

引用なし
パスワード
    ▼kinoko さん:

通常、あるセルから1つ移動させるとしたら
左上、上、右上
左、右
左下、下、右下
この8方向ですね。
でも、セルの場所によっては、上にいけない、左にいけないといった制約がある場所がありますね。

で、私のコードでは、左上、上、右上、左、右、左下、下、右下 を 1,2,3,4,5,6,7,8 という番号で指定。
現在のセルの場所に応じて、そのセルから移動できる場所番号を配列に格納。
(場所によって、8か所、5か所、3か所)
pos = Array(5, 7, 8) や pos = Array(1, 2, 4, 6, 7) といったところです。

で、この配列内からランダムに要素を1つ取り出し、1〜8 に応じて、現在の行や列に対して必要な変更を行っています。
Case 1: i = i - 1: j = j - 1 や Case 7: i = i + 1 といったところです。

なので、0 になるのを防ぐというより、最初から候補として、0にならないものに絞っているといったほうが
よろしいかもしれませんね。

そちらのコードの、その部分(0を回避)については 各コードブロックで r と c を求めた後
c が 0 なら c を 1 にする、r が 0 なら r を 1にするといった【逃げ】のコードを追加 といった感じですかね。
これで 0 になってエラーになるのは回避されるでしょうけど、右と下の枠も設定しておかなければ、どんどんと
見えない場所にいってしまいますね。


11 hits

【78305】Randomwalk kinoko 16/6/23(木) 17:16 質問[未読]
【78306】Re:Randomwalk β 16/6/23(木) 18:11 発言[未読]
【78309】Re:Randomwalk kinoko 16/6/24(金) 0:03 回答[未読]
【78310】Re:Randomwalk β 16/6/24(金) 0:46 発言[未読]
【78307】Re:Randomwalk カリーニン 16/6/23(木) 21:23 発言[未読]
【78308】Re:Randomwalk β 16/6/23(木) 21:48 発言[未読]
【78311】Re:Randomwalk β 16/6/24(金) 8:54 発言[未読]
【78312】Re:Randomwalk kinoko 16/6/24(金) 12:36 質問[未読]
【78313】Re:Randomwalk β 16/6/24(金) 13:40 発言[未読]
【78314】Re:Randomwalk カエムワセト 16/6/24(金) 18:36 発言[未読]
【78315】Re:Randomwalk β 16/6/24(金) 20:32 発言[未読]

4049 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free