|
本帖最后由 aolinge2017 于 2016-4-13 20:06 编辑
算法001
在变量数组D[L][M](L为花色,M为1-13的数值),挑选21个数值,每个数值不能重复
-------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
算法002
给7个随机大小的数值排序
所有数组忽略0
变量数组A[7],([1]、[2]、[3]、[4]、[5]、[6]、[7]分别代表1-13之间的随机整数)
变量数组B[7],([1]代表A[7]中最大的数,[2]代表A[7]中第二大的数,依次类推,[7]代表A[7]中最小的;如果数值相等,就依次排列如9999762或8776641等)
变量数组H[7],([1]、[2]、[3]、[4]、[5]、[6]、[7]分别代表1-4之间的随机整数)
变量数组G[7],([1]代表H[7]中最大的数,[2]代表H[7]中第二大的数,依次类推,[7]代表H[7]中最小的;如果数值相等,就依次排列如4444432或2222222等)
-------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
算法003
设定牌型规则
变量数组G[7]中,代表花色(1>=2>=3>=4)
变量数组B[7]中,代表牌值大小位置([1]>=[2]>=[3]>=[4]>=[5]>=[6]>=[7])
对子数变量 i
牌型最大数值变量数组J[a](a取决于玩家数,b当前牌型)
-------------------------------------------------------------------------------------------------------------------------------------
规则设定
单牌 B[7]设置 [1]>[2]>[3]>[4]>[5]>[6]>[7] ---(J[a][1])
一对 B[7]设置 [1]=[2] / [2]=[3] / [3]=[4] / [4]=[5] / [5]=[6] / [6]=[7],对子数变量 i=1 ---(J[a][2])
双对 B[7]设置 [1]=[2] / [2]=[3] / [3]=[4] / [4]=[5] / [5]=[6] / [6]=[7],对子数变量 i=2 ---(J[a][3])
三条 B[7]设置 [1]=[2]=[3] / [2]=[3]=[4] / [3]=[4]=[5] / [4]=[5]=[6] / [5]=[6]=[7] ---(J[a][4])
顺子 B[7]设置 [1]=[2]+[1],[2]=[3]+[1],[3]=[4]+[1],[4]=[5]+[1],[5]=[6]+[1] / [2]=[3]+[1],[3]=[4]+[1],[4]=[5]+[1],[5]=[6]+[1],[6]=[7]+[1] / [1]=[13],[2]=[12],[3]=[11[,[4]=[10],[7]=[1] (K Q J 10 A) ---(J[a][5])
同花 G[7]设置 [1][2][3][4][5][6][7]其中5个以上数值都等于1 / 2 / 3 / 4
B[7]设置 [1]>[2]>[3]>[4]>[5]>[6]>[7]
---(J[a][6])
葫芦 B[7]设置 [1]=[2]=[3]([4]=[5]/[5]=[6]/[6]=[7]/[4]=[5]=[6]/[5]=[6]=[7]) / [2]=[3]=[4] ([5]=[6]/[6]=[7]/[5]=[6]=[7]) / [3]=[4]=[5] ([1]=[2]/[6]=[7]) / [4]=[5]=[6] ([1]=[2]/[2]=[3]) / [5]=[6]=[7] ([1]=[2]/[2]=[3]/[3]=[4]/[1]=[2]=[3])
---(J[a][7])
金刚 B7设置 [1]=[2]=[3]=[4] / [2]=[3]=[4]=[5] / [3]=[4]=[5]=[6] / [4]=[5]=[6]=[7] ---(J[a][8])
同花顺 G7设置 [1][2][3][4][5][6][7]其中5个以上数值都等于1 / 2 / 3 / 4
B[7]设置 [1]=[2]+[1],[2]=[3]+[1],[3]=[4]+[1],[4]=[5]+[1],[5]=[6]+[1] / [2]=[3]+[1],[3]=[4]+[1],[4]=[5]+[1],[5]=[6]+[1],[6]=[7]+[1] / [1]=[13],[2]=[12],[3]=[11[,[4]=[10],[7]=[1] (K Q J 10 A)
---(J[a][9])
-------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
算法004
大小比较
比较规则,先比较牌型,相同牌型再比较点数
如葫芦33322与44333,先比较333,再比较22与44谁大
如三条:83332与94333 或 99987与99962;顺子:98765与87654;金刚:96666与99996 或 96666与66663
之前 变量数组J[a],中的 决定了牌型
整数变量数组C[7]([1]每种牌型对应的最大点数,[2]每种牌型对应的第2大点数,[3]每种牌型对应的第3大点数,[4]每种牌型对应的第4大点数,[5]每种牌型对应的第5大点数,[6]每种牌型对应的第6大点数,[7]每种牌型对应的第7大点数)
先比较C[1],在比较C[2],依次类推
C[7]决定牌型值的大小。
C[7]的值还存在一个问题,
当B[7]中的[7]不等于 整数1 (就是扑克里的A)时,B[7]中的[1]最大
当B[7]中的[7]等于 整数1 (就是扑克里的A)时,B[7]中的[7]>[1]
(如顺子(KQJ10A)13 12 11 10 1与54321,65432与54321)
可能需要增加其他的变量进行比较,详见下面的比较规则)
高牌 C[1]=B[7]的[1](如9875432,那么C[1]=9,C[2]=8,C[3]=7,C[4]=5,C[5]=4)
一对 C[1]=B[7]的[[1]/[2]/[3]/[4]/[5]/[6]/[7](成一对的数值的值)(如9654322,那么C[1]=2,C[2]=B[7]的B[7]的[1]/[2]/[3]/[4]/[5]/[6]/[7]不成对的最大数值9,C[3]=B[7]中[1]/[2]/[3]/[4]/[5]/[6]/[7]不成对的第2大数值6,C[4]=B[7]中[1]/[2]/[3]/[4]/[5]/[6]/[7]不成对的第3大数值5;只需比较前面5张最大的后面忽略)
双对 C[1]=B[7]的[[1]/[2]/[3]/[4]/[5]/[6]/[7](两个成一对的数值中最大的一个对子的值,)(如9954322,那么C[1]=9,C[2]=2,C[3]=B[7]的B[7]的[1]/[2]/[3]/[4]/[5]/[6]/[7]不成对的最大数值5)
三条 C[1]=B[7]的[[1]/[2]/[3]/[4]/[5]/[6]/[7](三个相等数值)(如9998432,那么C[1]=9,C[2]=B[7]的B[7]的[1]/[2]/[3]/[4]/[5]/[6]/[7]相等3个数值外的最大数值8,C3=B[7]的B[7]的[1]/[2]/[3]/[4]/[5]/[6]/[7]相等3个数值外的第二大数值4)
顺子 C[1]=B[7]的[[1]/[2]/[3]/[4]/[5]/[6]/[7](至少5个相连数值中最大数值)(如9865432,那么C[1]=6,C[2]=5,C[3]=4,C[4]=3,C[5]=2)
同花 C[1]=B[7]的[1](如9875432,那么C[1]=9,C[2]=8,C[3]=7,C[4]=5,C[5]=4)
葫芦 C[1]=B[7]的[[1]/[2]/[3]/[4]/[5]/[6]/[7](三个相等数值最大的数值)C[2]=B[7]的B[7]的[1]/[2]/[3]/[4]/[5]/[6]/[7](三个相等数值第2大数值/成对的数值)(如9993332,那么C[1]=9,C[2]=3;9987222,那么C[1]=2,C[2]=9)
金刚 C[1]=B[7]的[[1]/[2]/[3]/[4]/[5]/[6]/[7](四个相等数值最大的数值)C[2]=B[7]的B[7]的[1]/[2]/[3]/[4]/[5]/[6]/[7](四个相等数值第大数值)(如9999332,那么C[1]=9,C[2]=3;9872222,那么C[1]=2,C[2]=9)
同花顺 C[1]=B[7]的[[1]/[2]/[3]/[4]/[5]/[6]/[7](至少5个相连数值中最大数值)(如9865432,那么C[1]=6,C[2]=5,C[3]=4,C[4]=3,C[5]=2)
比较中设计到我上面说过的
当B[7]中的[7] 不等于 整数1 (就是扑克里的A)时,B[7]中的[1]最大
当B[7]中的[7] 等于 整数1 (就是扑克里的A)时,B[7]中的[7]>[1]
(如顺子(KQJ10A)13 12 11 10 1与54321,65432与54321)
这种情况的处理
|
|