【发布时间】:2014-02-28 17:29:30
【问题描述】:
我想知道您是否可以帮助我了解如何创建一个 Card 对象(具有价值和花色)并使用其中的 52 张牌来制作一个名为 Deck 的对象。
我已经创建了我的卡片类,如何初始化卡片组类中的每张卡片?我应该一件一件地做吗?如何将所有这些卡链接到一副牌。
谢谢
【问题讨论】:
标签: vb.net
我想知道您是否可以帮助我了解如何创建一个 Card 对象(具有价值和花色)并使用其中的 52 张牌来制作一个名为 Deck 的对象。
我已经创建了我的卡片类,如何初始化卡片组类中的每张卡片?我应该一件一件地做吗?如何将所有这些卡链接到一副牌。
谢谢
【问题讨论】:
标签: vb.net
碰巧我今天早些时候确实阅读了您之前的问题。
首先,创建一个西装枚举。
Public Enum Suit As Integer
Hearts = 1
Diamonds = 2
Clovers = 3
Spades = 4
End Enum
然后创建卡片类。请注意,属性是只读的,因为卡片永远不会更改其值。 (如果你是魔术师,也许不是真的)
Public Class Card
Public Sub New(suit As Suit, value As Integer)
Me.m_suit = suit
Me.m_value = value
End Sub
Public ReadOnly Property Suit() As Suit
Get
Return Me.m_suit
End Get
End Property
Public ReadOnly Property Value() As Integer
Get
Return Me.m_value
End Get
End Property
Private m_suit As Suit
Private m_value As Integer
End Class
最后,创建卡片组并填充 52 张卡片。
Public Class Deck
Public Sub New()
Dim cards = New Card(52 - 1) {}
Dim num As Integer = 0
For s As Integer = 1 To 4
For v As Integer = 1 To 13
cards(num) = New Card(CType(s, Suit), v)
num += 1
Next
Next
Me.m_cards = New Collections.ObjectModel.ReadOnlyCollection(Of Card)(cards)
End Sub
Public ReadOnly Property Cards() As Collections.ObjectModel.ReadOnlyCollection(Of Card)
Get
Return Me.m_cards
End Get
End Property
Private ReadOnly m_cards As Collections.ObjectModel.ReadOnlyCollection(Of Card)
End Class
【讨论】:
Add > New,选择Class并输入项目名称。例如。 Suit.vb。然后把VS创建的代码去掉,换成Public Enum Suit As Integer等等。
你需要两个枚举和两个类:
在 Deck 类的构造函数中,在一个循环中运行一个循环。对于 CardFaceType 枚举,外循环将运行 4 次,对于卡片 1-10、J、Q、K,内循环将运行 13 次。
通过这些循环遍历枚举值并将卡片添加到您的牌组。
【讨论】:
这只是我设想的草稿
你首先需要卡片类。
Public Class Card
Private cSuit As String
Private cValue As Integer
Public Property suit() As String
Get
Return cSuit
End Get
Set(ByVal value As String)
cSuit = value
End Set
End Property
Public Property value() As Integer
Get
Return cValue
End Get
Set(ByVal value As Integer)
value = cValue
End Set
End Property
Public Sub New(ByVal TheSuit As String, ByVal TheValue As Integer)
cSuit = TheSuit
cValue = TheValue
End Sub
然后您可以为每张卡片制作一个新对象并将其添加到卡片组中。
Dim Deck As New List(Of Card)
Dim Suit As String = "Spade"
Dim Value As Integer = 11
Dim AceOfSpades As New Card(Suit, Value)
Deck.Add(AceOfSpades)
【讨论】: