スロットゲームのボタンの数字を一個ずつ止めるやり方は?

解決


  2006-09-08 18:41:11  No: 133149

いつもお世話になっております。

来週から出向先が変わり
VB2005を使うので今VB2005でスロットゲームを作っています。

環境WinXP  VB2005です。

数字を回して全ての数字をストップする動作まではできたんですが
数字を一つずつ止めるよい方法が考え付きません。

3×3のスロットで全部ボタンで作っています。

タイマーイベントが発生したときに一気に全部の
スロットの数字が回るようにしています。

タイマーイベントを止めちゃえば全部とまるんですが一つずつ
ボタンの数字を止めるやり方がわかりません。

どれが必要なソースなのかわからないので今作っているソースを
全部載せます。

  '初期起動画面
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'タイマーを止めておく
        Me.Timer1.Enabled = False
    End Sub

    '数字ボタンを押したとき
    Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click, btnEnd.Click, btnAllStop.Click
        Select Case sender.tabindex
            Case 0 To 8’回転する番号ボタン
                '番号を一個ずつ止める
                Call Num(sender.tabindex)

            Case 9’スタートボタン
                'タイマーを動かす
                Me.Timer1.Enabled = True
            Case 10’終了ボタン
                'フォームを閉じる
                Me.Close()
            Case 11 To 13
                '縦方向ストップ
            Case 14 To 16
                '横方向ストップ
            Case 17
                'オールストップ
                Me.Timer1.Enabled = False
        End Select

    End Sub

    'スタート関連
    Private Sub Start()

        '乱数の初期化
        Randomize()
        Dim i As Integer
        Dim j As Integer
        '1〜9の乱数の設置
        For i = 0 To 2
            For j = 0 To 2
                Me.btnNum(i, j).Text = CInt(Rnd(1) * 8 + 1)
            Next
        Next

    End Sub
    '番号関連
    Private Sub Num(ByVal btnNum As Integer)
        '
    End Sub
    'タイマーが動いたときのイベント
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Call Start()
    End Sub
End Class

タイマーを9個用意してやろうかなと思ったのですが、なんか付け焼刃
てきなやり方なのでもっと他の方法はないかなと思い投稿しました。

とりあえずボタンの数字を一個ずつ止めるやり方がわかれば
列での止め方も簡単なのですみませんがご教授のほうよろしくお願いいたします。


特攻隊長まるるう  2006-09-08 19:00:22  No: 133150

>        For i = 0 To 2
>            For j = 0 To 2
>                Me.btnNum(i, j).Text = CInt(Rnd(1) * 8 + 1)
>            Next
>        Next
ループをまわさず特定の i,j のみ設定すればいいだけでは?


  2006-09-08 19:13:36  No: 133151

おはようございます。良です

>特攻隊長まるるうさん

お返事ありがとうございます。

特定のi,jのみの設定とは

me.btnNum(0,2)とかみたいに
一つずつボタンのテキストを設定するものなんですか?


特攻隊長まるるう  2006-09-08 19:21:32  No: 133152

>一つずつボタンのテキストを設定するものなんですか?
…ん?
>とりあえずボタンの数字を一個ずつ止めるやり方がわかれば
そういう意味ではないのですか?


特攻隊長まるるう  2006-09-08 19:26:03  No: 133153

ああ、分かった。。。
グローバルで
    Private m_StopFlag(2, 2) As Boolean
とか宣言して止めたい所だけフラグを立てて
乱数書き込む処理を飛ばせばいいんじゃない?

 # …乱数だと目押しできないねw


  2006-09-08 19:29:33  No: 133154

こんにちは良です。

>特攻隊長まるるうさん

>一つずつボタンのテキストを設定するものなんですか?
>…ん?
>とりあえずボタンの数字を一個ずつ止めるやり方がわかれば
>そういう意味ではないのですか?

すみません・・・説明不足でした・・・
ボタンを1個ずつ止めるやり方はタイマーを9個用意して
ボタン1個に一つずつ対応させてやればいけるんですが、
タイマー1個でできるようなものがないかなと思い質問いたしました。

申し訳ないです・・・


  2006-09-08 19:33:59  No: 133155

お返事ありがとうございます。

確かにフラグを立ててそこだけ処理を抜ければいけそうですね。

ありがとうございます。

余裕ができたら乱数をやめて、しかもボタンを押した跡にいくつか
ずれる処理も入れたいと思います。


  2006-09-08 20:44:00  No: 133156

できました。ありがとうございました。

VB2005って今までのVBの中でかなり

わかりやすくできていますね。

間違いの指摘とか宣言忘れとか

間違いの対処法もその場で提供してくれますし。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加