|
▼文哉 さん:
こんにちは、面白そうなので作ってみました。
自分の確認し易さで処理を作ってありますので
質問の内容と違う点があるかと思いますが
参考になればと思います。
Sub randomwalk()
Dim r As Integer, dr As Integer
Dim c As Integer, dc As Integer
Dim n As Integer
Dim i As Long
Randomize
With ActiveSheet
.Cells.Interior.ColorIndex = xlNone
r = 10
c = 10
.Cells(r, c).Interior.ColorIndex = 3
For i = 1 To 50
'乱数発生させる
n = Int(Rnd * 9) + 1
'乱数から動き量を導く
Select Case n
Case 1: dr = -1: dc = 1
Case 2: dr = 0: dc = 1
Case 3: dr = 1: dc = 1
Case 4: dr = 1: dc = 0
Case 5: dr = 1: dc = -1
Case 6: dr = 0: dc = -1
Case 7: dr = -1: dc = -1
Case 8: dr = -1: dc = 0
Case 9: dr = 0: dc = 0
End Select
'移動可能か判断
If r + dr >= 1 Or r + dr <= .Rows.Count And _
c + dc >= 1 Or c + dc <= .Columns.Count Then
c = c + dc
r = r + dr
End If
'移動→色塗りで表現
.Cells(r, c).Interior.ColorIndex = i Mod 10 + 3
'時間調整0.1秒
Application.Wait [ Now() + "00:00:00.1"]
Next i
End With
End Sub
>VBAでランダムウォークというのをプログラミングしたいのですが、
>(10,10)のセルを原点に右上のセルに1、右のセルに2、右下のセルに3、下のセルに4、左下のセルに5、左のセルに6、左上のセルに7、上のセルに8、原点のセルを9と乱数をふるというやり方でやっていきたいのですがプログラム初心者で分からず苦戦しております。
>
>
>Sub randomwalk()
>
>dim r as integer
>dim c as integer
>
>activesheet.cells.select
>r=10
>c=10
>cells(r,c).select
>randomize 以降の部分です。
>
>言葉でうまく説明できずに質問するのは大変申し訳ないのですが、よろしくお願いいたします。酔っ払いがふらふら歩いていく感じをどんどん黒に塗りつぶされていくセルで表現していきたいのです。
|
|