- ベストアンサー
ラジオボタンを押すと、サイコロの写真をランダムに変えたい
- VisualBasic.Net英語版を使用している大学のプロジェクトで、Yahtzeeというサイコロゲームを作っています。
- 5つのサイコロ画像つきラジオボタンがあります。
- 「サイコロを振る」ボタンを押すと、5つのサイコロの画像がランダムに変わります。サイコロが良い目を出した場合、対応するラジオボタンを押すことで画像を固定できます。また、3回「サイコロを振る」ボタンを押すと、ボタンは機能しなくなります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Yahtzeeで遊んだことがないので、 (1) ボタン押下でラジオボタンの画像がランダムに切り替る (2) ラジオボタン押下で画像切り替えが止まる (3) 再度ボタン押下でも画像は止まったまま のソースを以下に示します。 因みにラジオボタンは一つで、画像を切り替えるために フォームに別途イメージリスト(ImageList)を追加しました。 Public Class Form1 Inherits System.Windows.Forms.Form 'ラジオボタンのスレッド Private RadioThread1 As System.Threading.Thread 'ラジオボタンの画像切り替えクラスのインスタンス Private Radio1 As RadioImage '(1)ボタン押下でラジオボタンの画像がランダムに切り替る Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'ラジオボタン画像切り替えクラスのインスタンス作成 Radio1 = New RadioImage(Me.RadioButton1) '画像切り替え処理のスレッド作成 RadioThread1 = New System.Threading.Thread(AddressOf Radio1.Rndom) '画像切り替え処理のスレッド起動 RadioThread1.Start() RadioThread1.Name = "Radio1" End Sub '(2) ラジオボタン押下で画像切り替えが止まる Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged '画像切り替え処理のスレッド終了 RadioThread1.Abort() RadioThread1.Join() 'ラジオボタン画像固定 Radio1.Fix() End Sub 'ラジオボタン画像切り替えクラス Class RadioImage Dim objRadio As RadioButton 'コンストラクタ Public Sub New(ByVal pRadio As RadioButton) MyBase.New() objRadio = pRadio End Sub '画像切り替えメソッド Public Sub Rndom() If objRadio.Tag = "FIX" Then Exit Sub End If Randomize() While True objRadio.ImageIndex = CInt(Int((4 - 0 + 1) * Rnd() + 0)) objRadio.Refresh() End While End Sub '画像固定メソッド Public Sub Fix() objRadio.Tag = "FIX" End Sub End Class End Class お役にたてば幸いです。
お礼
ご苦労様でした。ありがとうございます。 これから試してみます。 数日かかると思いますが、またアドバイスいただけると幸いです。
補足
遅くながら補足させていただきます。 だんだんと完成に近づいて参りました。 あなたのコードも参考になりました。 どうも有り難うございました。