扑克牌花色(1~4),A~K(0~12)或者(1~13)
关键是随机取数和比较大小程序写出来
vb编程 随机抽取两张扑克牌比大小不分花色 扑克图片的编号附
答案:3 悬赏:60 手机版
解决时间 2021-03-18 13:10
- 提问者网友:情歌越听越心酸
- 2021-03-18 03:12
最佳答案
- 五星知识达人网友:雪起风沙痕
- 2021-03-18 04:44
你走入了一个误区。
完全可以弄一个数组表示52张
Const PaiMian = "A234567890JQK"
Dim PuKeShuZu(51) As Integer
Dim HuaSe
'0到12为黑桃,13到25为红桃,26到38为梅花,39到51为方块
Private Sub Command1_Click()
'抽取两张扑克牌,并比较大小。
'规定:①A<2<3<4<5<6<7<8<9<10
Dim x As Integer, y As Integer
Dim x0 As Integer, y0 As Integer
Dim x8 As String, y8 As String
Dim x9 As String * 2, y9 As String * 2
'x、y是数组下标,x0、y0是对应大小的顺序
'x8、y8是对应牌面的标记,x9、y9是对应牌的花色
x = Int(Rnd * 52)
'抽取第一张牌
Do
y = Int(Rnd * 52)
Loop Until y <> x
'抽取第二张牌。但模拟会发生与第一张一样的情况,实际上抽牌是不会发生的,所以要排除
x0 = x Mod 13
y0 = y Mod 13
'分别计算出两张牌的顺序号
x8 = PaiXudaoPaiMian(x0)
y8 = PaiXudaoPaiMian(y0)
'分别结算牌面标记
x9 = HuaSe(x \ 13)
y9 = HuaSe(y \ 13)
'计算两张牌的花色
Print "抽取的第一张牌是:"; x9; x8
Print "抽取的第二张牌是:"; y9; y8
'输出两张牌的情况
Print x9; x8;
Select Case Sgn(x0 - y0)
Case 0
Print "=";
Case 1
Print ">";
Case -1
Print "<";
End Select
Print y9; y8
'比较,并输出结果
End Sub
Private Function PaiXudaoPaiMian(a As Integer) As String
'按牌序换算出牌面
PaiXudaoPaiMian = Mid(PaiMian, a + 1, 1)
'读取对应的字符
If PaiXudaoPaiMian = "0" Then PaiXudaoPaiMian = "10"
'其中0表示的是10
End Function
Private Sub Form_Load()
HuaSe = Array("黑桃", "红桃", "梅花", "方块")
End Sub
完全可以弄一个数组表示52张
Const PaiMian = "A234567890JQK"
Dim PuKeShuZu(51) As Integer
Dim HuaSe
'0到12为黑桃,13到25为红桃,26到38为梅花,39到51为方块
Private Sub Command1_Click()
'抽取两张扑克牌,并比较大小。
'规定:①A<2<3<4<5<6<7<8<9<10
Dim x0 As Integer, y0 As Integer
Dim x8 As String, y8 As String
Dim x9 As String * 2, y9 As String * 2
'x、y是数组下标,x0、y0是对应大小的顺序
'x8、y8是对应牌面的标记,x9、y9是对应牌的花色
x = Int(Rnd * 52)
'抽取第一张牌
Do
y = Int(Rnd * 52)
Loop Until y <> x
'抽取第二张牌。但模拟会发生与第一张一样的情况,实际上抽牌是不会发生的,所以要排除
x0 = x Mod 13
y0 = y Mod 13
'分别计算出两张牌的顺序号
x8 = PaiXudaoPaiMian(x0)
y8 = PaiXudaoPaiMian(y0)
'分别结算牌面标记
x9 = HuaSe(x \ 13)
y9 = HuaSe(y \ 13)
'计算两张牌的花色
Print "抽取的第一张牌是:"; x9; x8
Print "抽取的第二张牌是:"; y9; y8
'输出两张牌的情况
Print x9; x8;
Select Case Sgn(x0 - y0)
Case 0
Print "=";
Case 1
Print ">";
Case -1
Print "<";
End Select
Print y9; y8
'比较,并输出结果
End Sub
Private Function PaiXudaoPaiMian(a As Integer) As String
'按牌序换算出牌面
PaiXudaoPaiMian = Mid(PaiMian, a + 1, 1)
'读取对应的字符
If PaiXudaoPaiMian = "0" Then PaiXudaoPaiMian = "10"
'其中0表示的是10
End Function
Private Sub Form_Load()
HuaSe = Array("黑桃", "红桃", "梅花", "方块")
End Sub
全部回答
- 1楼网友:山河有幸埋战骨
- 2021-03-18 06:39
这个我有,私信给你了
- 2楼网友:爱难随人意
- 2021-03-18 05:12
Dim pokesize, pokecolor
Private Function pokecomp(a, b)
For i = 0 To 12
If Left(a, 1) = pokesize(i) Then
x = i
Exit For
End If
Next i
For i = 0 To 12
If Left(b, 1) = pokesize(i) Then
y = i
Exit For
End If
Next i
If x > y Then
pokecomp = 1
ElseIf x = y Then
pokecomp = 0
Else
pokecomp = -1
End If
End Function
Private Sub Command1_Click()
Do While (1)
x = onepoke
MsgBox "系统出牌" & x, vbOKOnly
y = onepoke
MsgBox "你的牌为" & y, vbOKOnly
If pokecomp(x, y) = -1 Then
z = "你赢了!,继续吗?"
ElseIf pokecomp(x, y) = 0 Then
z = "平局!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯