电动扑克比大小问题---希望帮忙解决!
我想仿制一个像游戏机室里的扑克牌机一样游戏
游戏时每次发5张牌,(共有54张牌)有两张王,大王和小王可以当作52张牌中任意的一张牌,这五张牌的中奖方式和大小顺序如下:
五个相同的(比如:五个A)
同花顺(比如:A.K.Q.J.10,五张牌的花色是一样的)
四个相同的,带一张其他的牌(比如:四个A带一个2)
三个相同的,带一对其他的牌(比如:三个A带一对2)
同花(比如:五张牌的花色都是一样的)
顺子(比如:A.K.Q.J.10,五张牌的花色是不相同的)
三个相同的,带两张其他的牌(比如:三个A带 2 .3)
两对相同的带一张其他的牌(比如:一对A和一对K带一张2)
一对相同的带四张其他的牌(比如:一对A和3,4,5,6)每次发完5张牌后,怎样比出这五张牌是和上面任意的一种中奖方式相同的,我弄了好久都不行,希望高手给我指点一下程序的流程和思路,或是在您有时间的情况下帮我写一个程序示例,麻烦您了!谢谢
我想仿制一个像游戏机室里的扑克牌机一样游戏
游戏时每次发5张牌,(共有54张牌)有两张王,大王和小王可以当作52张牌中任意的一张牌,这五张牌的中奖方式和大小顺序如下:
五个相同的(比如:五个A)
同花顺(比如:A.K.Q.J.10,五张牌的花色是一样的)
四个相同的,带一张其他的牌(比如:四个A带一个2)
三个相同的,带一对其他的牌(比如:三个A带一对2)
同花(比如:五张牌的花色都是一样的)
顺子(比如:A.K.Q.J.10,五张牌的花色是不相同的)
三个相同的,带两张其他的牌(比如:三个A带 2 .3)
两对相同的带一张其他的牌(比如:一对A和一对K带一张2)
一对相同的带四张其他的牌(比如:一对A和3,4,5,6)每次发完5张牌后,怎样比出这五张牌是和上面任意的一种中奖方式相同的,我弄了好久都不行,希望高手给我指点一下程序的流程和思路,或是在您有时间的情况下帮我写一个程序示例,麻烦您了!谢谢
解决方案 »
- vb,窗体上一个点的坐标是 100 200,如何让 鼠标在这个位置自动点击一下,下列代码怎么没反应呀
- 为什么vb6写的一个程序 文本框里面会没有光标闪烁?
- 我的DataCombo显示不出下拉框的内容~请各位高人帮我想想问题出在那里~
- 高手们,江湖救急一下
- 二分查找法有错误看一下,请进!~!~!~谢谢
- 我在程序中用SHELL函数打开OUTLOOK,我想在OUTLOOK中写几句话,怎样在打开OUTLOOK时显示这几句话呢?
- 请教各位大虾!!急急急(在线等侯回音)
- 我在NT下用StretchBlt缩放图形出现问题,而WIN2000问题不大,WHY?
- 一个关于listview用法的极为简单的问题,高分相送!!
- 用ADO访问局域网中另一台机上的ACCESS2000,一定要共享这个数据库,才能访问吗?有其他方法吗?
- 求 Visual Basic数据库编程技术与实例 一书光盘源码.
- Treeview 关于所选节点的所有父节点的Key值.
二等奖:同花顺(比如:A.K.Q.J.10,五张牌的花色是一样的)
三等奖:四个相同的,带一张其他的牌(比如:四个A带一个2)
四等奖:三个相同的,带一对其他的牌(比如:三个A带一对2)
五等奖:同花(比如:五张牌的花色都是一样的)
六等奖:顺子(比如:A.K.Q.J.10,五张牌的花色是不相同的)
七等奖:三个相同的,带两张其他的牌(比如:三个A带 2 .3)
八等奖:两对相同的带一张其他的牌(比如:一对A和一对K带一张2)
九等奖:一对相同的带四张其他的牌(比如:一对A和3,4,5,6) 一共用时 2 小时40 分 =============cike 例题==========
例题名字:牌
窗体2个 form1 form2
form1 包括 1个text 3个list 3个command
form2 包括 1个command 1个label 1个list
例题执行步骤:把各控件放入各自窗体内 复制各自窗体代码 运行既可
================================
form1 代码:
Private Sub Command1_Click()
Call 发牌
End SubPrivate Sub Command2_Click()
Call 王的分配 '先把王变成可分辨的牌
List2.Clear '用这个存储花色
List3.Clear '用这个存储牌码 把花色和牌码分开处理比较方便后来的判断
a = Split(Text1.Text, ",") '分割成5 段
' 下面这个的判断认识吧!若5个相等则 一等奖
If a(1) = a(2) And a(2) = a(3) And a(3) = a(4) And a(4) = a(0) Then MsgBox "抽取的5张牌相等 恭喜您中了一等奖": Exit SubFor i = 0 To 4 '这个循环的作用是把5张牌的花色和号码区分出来
List2.AddItem Left(a(i), 2)
List3.AddItem Right(a(i), Len(a(i)) - 2)
If List3.List(i) = "J" Then List3.List(i) = "11" '把J 他们全部还原成数字
If List3.List(i) = "Q" Then List3.List(i) = "12"
If List3.List(i) = "K" Then List3.List(i) = "13"
If List3.List(i) = "A" Then List3.List(i) = "14" '注意A 要当14 处理 因为它最大
Next iReDim 花色次数(4) As Integer '用这个打算记录同样的花色出现的次数
ReDim 牌号次数(4) As Integer '用这个打算记录同样牌出现的次数For i = 0 To 4 '这个循环获得它们各自出现的次数 也许有点复杂请仔细研究
For j = 4 To i Step -1
If List2.List(i) = List2.List(j) Then 花色次数(i) = 花色次数(i) + 1
If List3.List(i) = List3.List(j) Then 牌号次数(i) = 牌号次数(i) + 1
Next j
Next iDim b As String '用来存储出现的次数 用字符辨别比较方便
Dim c As String
b = "" '给初值
c = ""For i = 0 To 4 '数组元素化为字串
If 花色次数(i) <> 1 Then
b = b & 花色次数(i)
End IfIf 牌号次数(i) <> 1 Then '数组元素化为字串
c = c & 牌号次数(i)
End If
Next iDim min As Integer '用来记录5张牌中最小的数
Dim max As Integer '用来记录5张牌中最大的数
min = List3.List(0) ' 下面是具体获得他们的方法
max = List3.List(0)
For i = 1 To 4
If max < List3.List(i) Then
max = List3.List(i)
Else
max = max
End If
If min > List3.List(i) Then
min = List3.List(i)
Else
min = min
End If
Next i'有了花色的出现的次数 最大 最小值 等信息后就可以判断出所有的条件了
'应该从高往下一个一个判断 记得有返回就要退出了 别让它还继续做下面奖项的判断
'最后一句代码的作用是 提示都没中奖 因为若中奖了已经退出该过程了!If InStr(b, "5") > 0 And c = "" And max - min = 4 Then MsgBox "同花顺,小子行啊,二等奖": Exit Sub
If InStr(c, "4") > 0 Then MsgBox "有4张相同,恭喜您中了三等奖": Exit Sub
If InStr(c, "3") > 0 And InStr(c, "2") > 0 Then MsgBox "有一对+三条 恭喜您中了四等奖": Exit Sub
If InStr(b, "5") > 0 Then MsgBox "5个花色一样 恭喜您获得五等奖": Exit Sub
If c = "" And max - min = 4 Then MsgBox "顺子 恭喜您获得六等奖": Exit Sub
If InStr(c, "3") > 0 Then MsgBox "有个三条 恭喜您获得七等奖": Exit Sub
If c = "22" Then MsgBox "有2对 恭喜您获得八等奖": Exit Sub
If InStr(c, "2") > 0 Then MsgBox "有一对 恭喜您获得九等奖": Exit Sub
MsgBox "sorry 没有中奖 请再接再厉 "End Sub
Private Sub Command3_Click()
Call 洗牌
End SubPrivate Sub Form_Load() ' 载入的一些设置
Command3.Caption = "洗牌"
Command1.Caption = "发牌"
Command2.Caption = "中奖情况"
Call 洗牌End SubPrivate Sub 洗牌() '这个过程是重新把54张牌写到list中
List1.Clear
Text1 = ""
For i = 1 To 13
For j = 1 To 4
If i = 1 Then
a = "A"
ElseIf i = "11" Then
a = "J"
ElseIf i = "12" Then
a = "Q"
ElseIf i = 13 Then
a = "K"
Else
a = i
End If
If j = 1 Then b = "铁头"
If j = 2 Then b = "红心"
If j = 3 Then b = "梅花"
If j = 4 Then b = "方块"
List1.AddItem b & a
Next j
Next i
List1.AddItem "大王"
List1.AddItem "小王"
End SubPrivate Sub 发牌() '这个过程负责把牌发到 text中 [随机的] 当然同时减掉list中的牌
If List1.ListCount < 9 Then MsgBox "牌不够发了:需要重新洗牌": Exit Sub
Text1 = ""
Randomize
For i = 1 To 5
a = Int(Rnd * List1.ListCount)
Text1.Text = Text1.Text & List1.List(a) & ","
List1.RemoveItem a
Next i
End Sub
Private Sub 王的分配() '这个过程处理当遇到王时 如何替换要替换的牌 我用了另一个窗体来处理这个
If InStr(Text1, "大王") > 0 Or InStr(Text1, "小王") > 0 Then
Form2.Show 1
End If
End Sub 下面是form2 的代码:
Private Sub Command1_Click()
If List1.ListIndex <> -1 Then '如果选中状态 就执行
Form1.Text1 = Replace(Form1.Text1, "大王", List1.List(List1.ListIndex)) '替换函数替换掉
Form1.Text1 = Replace(Form1.Text1, "小王", List1.List(List1.ListIndex))
Me.Hide
End If
End SubPrivate Sub Form_Load()Command1.Caption = "确定"
Label1.Caption = "请选择要变换的牌"List1.Clear
Text1 = ""
For i = 1 To 13 '这里把牌写到list 不用装入王了
For j = 1 To 4
If i = 1 Then
a = "A"
ElseIf i = "11" Then
a = "J"
ElseIf i = "12" Then
a = "Q"
ElseIf i = 13 Then
a = "K"
Else
a = i
End If
If j = 1 Then b = "铁头"
If j = 2 Then b = "红心"
If j = 3 Then b = "梅花"
If j = 4 Then b = "方块"
List1.AddItem b & a
Next j
Next i
End Sub
楼主给分吧! 我想要50 ^_^ 若实现不了LZ 所说的 请联系我 我们一起学习 我的学习方法是 通过回答问题来提高自己
程序这东西靠的是练习。。越熟练越好
我这段时间有点忙!等我忙完后马上测试的源代码!有什么问题我再发Email给你!请留下电子信箱.
Email:[email protected]