9ゲームの制作 VB6 | |
(4) タイルのシャッフル |
2. タイルのシャッフル
関数 Ransuu で生成した番号のタイルを移動させる。移動回数は、30回とする。2回目以降に移動するタイルは、直前に移動させたタイルとは別のタイルを移動させる。
タイルのシャッフル処理は、プログラムを実行したとき(Form_Load)と「もう一度」のボタンをクリックしたときの両方で必要なのでサブプロシージャ(サブルーチン)
GameStart として作成する。
処理手順は次のようになる。
・プログラムリスト
Private Sub GameStart() 'タイルをでたらめに移動する。 Dim before As Integer '直前に移動したタイルの番号 Dim n As Integer, rd As Integer before = 0 For n = 1 To 30 '30回移動する。 Do rd = Ransuu(1, 8) '移動するタイル番号を生成 If MoveOk(rd) = True And before <> rd Then Exit Do End If Loop TileMove rd '移動(交換) before = rd Next n End Sub
プログラム開始時にGameStartプロシージャを呼び出すように処理を追加する。また、乱数のシード値の設定(乱数の初期化)もしておく。
Private Sub Form_Load() Dim n As Integer cmdTile(1).BackColor = &H80C040 '1つ目のオブジェクトの色を設定 For n = 2 To 9 Load cmdTile(n) '新規にオブジェクトを追加 With cmdTile(n) '追加したオブジェクトのプロパティ設定 .Top = cmdTile(1).Top + cmdTile(1).Height * Int((n - 1) / 3) .Left = cmdTile(1).Left + cmdTile(1).Width * Int((n - 1) Mod 3) .Caption = Str(n) .BackColor = cmdTile(1).BackColor + n * &H400 .Visible = True End With Next n cmdTile(9).Visible = False '9番目は表示しない Randomize '乱数の初期化 GameStart End Sub
「もう一度」のボタンをクリックしたときもGameStartプロシージャを呼び出すようにする。
Private Sub cmdRetry_Click() GameStart End Sub
(4) タイルのシャッフル | |
Copyright © 2001,2002 Hiroshi Masuda |