• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ラジオボタンを押すと、ランダムでサイコロの写真を変えたい)

ラジオボタンを押すと、サイコロの写真をランダムに変えたい

このQ&Aのポイント
  • VisualBasic.Net英語版を使用している大学のプロジェクトで、Yahtzeeというサイコロゲームを作っています。
  • 5つのサイコロ画像つきラジオボタンがあります。
  • 「サイコロを振る」ボタンを押すと、5つのサイコロの画像がランダムに変わります。サイコロが良い目を出した場合、対応するラジオボタンを押すことで画像を固定できます。また、3回「サイコロを振る」ボタンを押すと、ボタンは機能しなくなります。

質問者が選んだベストアンサー

  • ベストアンサー
  • potedora
  • ベストアンサー率47% (66/140)
回答No.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 お役にたてば幸いです。

new-b
質問者

お礼

ご苦労様でした。ありがとうございます。 これから試してみます。 数日かかると思いますが、またアドバイスいただけると幸いです。

new-b
質問者

補足

遅くながら補足させていただきます。 だんだんと完成に近づいて参りました。 あなたのコードも参考になりました。 どうも有り難うございました。