''' <summary>サイコロを表すクラスです。</summary> ''' <remarks></remarks> Public Class Dice #Region " プライベートフィールド " Dim _Deme, _MaxDeme As Integer '現在の出目, 出目の最大値 #End Region #Region " パブリックコンストラクタ " ''' <summary>Dice クラスの新しいインスタンスを初期化します。</summary> ''' <remarks></remarks> Public Sub New() MyClass.New(6) End Sub #End Region #Region " プロテクトコンストラクタ " ''' <summary>出目の最大値を指定して Dice クラスの新しいインスタンスを初期化します。</summary> ''' <param name="MaxDeme">出目の最大値。</param> ''' <remarks></remarks> Protected Sub New(ByVal MaxDeme As Integer) _MaxDeme = MaxDeme End Sub #End Region #Region " パブリックプロパティ " ''' <summary>現在の出目を取得します。</summary> ''' <value></value> ''' <returns>現在の出目。</returns> ''' <remarks></remarks> Public ReadOnly Property Deme() As Integer Get Return _Deme End Get End Property #End Region #Region " プロテクトプロパティ " ''' <summary>出目の最大値を取得します。既定値は 6 です。</summary> ''' <value></value> ''' <returns>出目の最大値。</returns> ''' <remarks></remarks> Protected ReadOnly Property MaxDeme() As Integer Get Return _MaxDeme End Get End Property #End Region #Region " パブリックメソッド " ''' <summary>指定した Graphics オブジェクトで指定した出目を描画します。</summary> ''' <param name="g">描画対象の Graphics オブジェクト。</param> ''' <param name="deme">出目。</param> ''' <remarks></remarks> Public Sub Draw(ByVal g As Graphics, ByVal deme As Integer) If g Is Nothing Then Throw New ArgumentNullException("g") End If If (deme < 1) OrElse (deme > _MaxDeme) Then Throw New ArgumentOutOfRangeException("deme") End If If deme = _Deme Then '現在の出目を指定した場合は処理しない Return End If _Deme = deme '出目をセット Call DrawDeme(g) '現在の出目を描画 End Sub #End Region #Region " プロテクトメソッド " ''' <summary>指定した Graphics オブジェクトで現在の出目を描画します。 ''' 派生クラスで使用する場合は必ず基本クラスのメソッドを呼び出してください。</summary> ''' <param name="g">描画対象の Graphics オブジェクト。</param> ''' <remarks></remarks> Protected Sub DrawDeme(ByVal g As Graphics) 'ToDo _Deme が 1 から 6 までの場合の出目を描画する End Sub #End Region End Class
ReadOnly LeftDice, CenterDice, RightDice, Dices() As Dice Public Sub New() ' この呼び出しは、Windows フォーム デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後で初期化を追加します。 LeftDice = New Dice() CenterDice = New Dice() RightDice = New Dice() Dices = New Dice() {LeftDice, CenterDice, RightDice} End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Using g As Graphics = AutoGraphics(Me.PictureBox1) For Each MyDice As Dice In Dices MyDice.Draw(g, 1) Next End Using End Sub