gpt4 book ai didi

VBA 扑克牌

转载 作者:行者123 更新时间:2023-12-02 16:50:59 27 4
gpt4 key购买 nike

我正在尝试编写生成 4 手随机扑克牌的代码 imaje
(来源:wiseowl.co.uk)

显然,这些值应该是唯一的。这是我已经尝试过的代码,但是我无法使其工作。

Sub poker_is_hard()

Dim r As Range
Dim c As Variant
Dim s As Variant
Dim cs As Variant

Set r = Workbooks("Poker game.xls").Worksheets("Cards").Range("B2:E6")
cs = c & "" & s

For Each cs In r

c = Int(Math.Rnd * 13) + 1

'Card's value
If c = 11 Then
c = "J"
ElseIf c = 12 Then
c = "Q"
ElseIf c = 13 Then
c = "K"
ElseIf c = 1 Then
c = "A"
Else
End If

'Card's symbol
s = Int(Math.Rnd * 4) + 1

If s = 1 Then
s = ThisWorkbook.Worksheets("Symbols").Range("B1").Value
ElseIf s = 2 Then
s = ThisWorkbook.Worksheets("Symbols").Range("B2").Value
ElseIf s = 3 Then
s = ThisWorkbook.Worksheets("Symbols").Range("B3").Value
Else
s = ThisWorkbook.Worksheets("Symbols").Range("B4").Value
End If

Next cs

End Sub

最佳答案

这超出了 OP 的要求,但这里还有一些值得一看的内容。结果与 OP 提供的图像类似,手牌被分配到工作表上从 [B2] 开始的范围。

我正在使用 Fisher–Yates shuffle

只需运行Deal()例程:

Public Sub Deal()
Const PLAYERS = 6, CARDS = 5
Dim i&, j&, k&, deck
CreateAndShuffle deck
ReDim hands(1 To CARDS, 1 To PLAYERS)
For i = 1 To CARDS
For j = 1 To PLAYERS
k = k + 1
hands(i, j) = deck(k)
Next
Next
[b2].Resize(CARDS, PLAYERS) = hands
End Sub
Private Sub CreateAndShuffle(a)
Dim i&, j&, k&, p&, suit
ReDim a(1 To 52)
suit = Array(ChrW$(9829), ChrW$(9830), ChrW$(9827), ChrW$(9824))
Randomize
For i = 1 To 13
For j = 0 To 3
k = k + 1
p = Int((k - 1 + 1) * Rnd + 1)
If j <> k Then a(k) = a(p)
a(p) = Mid$("A234567890JQK", i, 1): If i = 10 Then a(p) = 10
a(p) = a(p) & " " & suit(j)
Next
Next
End Sub

关于VBA 扑克牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32157911/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com