還記得上初中的時候經常下午放學就躲在路邊扎金花來賭錢,貌似還上癮了,現在過年的時候還經常一起扎金花賭錢,但運氣不啥好,每次都是輸啊。
今天陽光明媚,由於清明節才出去玩了,所以今天沒有去哪。閒著沒事就想了下怎麼用程式實現金花中兩幅牌的大小比較,現在把它實現了,有些方法還是蠻重要的,因此就記下來。
好了,不廢話了。
扎金花兩副牌的比較規則就不說了,註明一下是順子的時候 : jqk < a23 < qka
思路:1" 隨機生成兩幅牌,每副牌結構為
array(
array('spade','k'),
array('club','6'),
array('spade','j'),
)
2」 計算每副牌的分值:每副牌有個原始大小(即排除對子,順子,金花,順金,筒子的大小),再
每張牌的分值為乙個2位數,不足2位的補前導0,例如'a':14,『10』:10,』2『:』02『,』k『:13,』7『:07
將3張牌按點數大小排序(從大到小),湊成乙個6位數。例如』a27':140702,『829』:090802,『jk8』:131108,『2a10』:141002
例外,對於對子要將對子的位數放在前兩位(後面會看到為什麼這麼做)。例如『779』:070709,『7a7』:070714,『a33』:030314
現在的分值是乙個6位數,將對子設為乙個原始值加上10*100000的值,現在為乙個7位數。例如『779』:1070709,『7a7』:1070714,『a33』:1030314
對於順子,將結果加上20*100000.。例如『345』:2050403,『qka』:2141312,『23a』:2140302
對於金花,將結果加上30*100000。例如『spade k,spade 6,spade j':3131106
因為順金的時候其實是金花和順子的和,所以順金應該是50*10000。 例如『spade 7,spade 6,spade 8':5080706
對於筒子,將結果加上60*100000。例如』666『:6060606,』jjj『:6111111
3「 比較兩幅牌的大小(用所計算的分值來比較)
就這麼簡單!!
**如下(php)
<?php
class playcards
} $this->cards = $cards;
} public function getcard()
public function comparecards($card1,$card2)
private function ownscore($card)
//補齊前導0
for($i = 0; $i < 3; $i++)
rsort($figure);
//對於對子做特殊處理
if($figure[1] == $figure[2])
$score = $figure[0].$figure[1].$figure[2];
//筒子 60*100000
if($figure[0] == $figure[1] && $figure[0] == $figure[2])
//金花 30*100000
if($suit[0] == $suit[1] && $suit[0] == $suit[2])
//順子 20*100000
if($figure[0] == $figure[1]+1 && $figure[1] == $figure[2]+1 || implode($figure) =='140302')
//對子 10*100000
if($figure[0] == $figure[1] && $figure[1] != $figure[2])
return $score; }}
//test
$playcard = new playcards();
$card1 = $playcard->getcard();
$card2 = $playcard->getcard();
$result = $playcard->comparecards($card1,$card2);
echo 'card1 is ',printcard($card1),'
';echo 'card2 is ',printcard($card2),'
';$str = 'card1 equit card2';
if($result == 1) $str = 'card1 is larger than card2';
elseif($result == -1) $str = 'card1 is smaller than card2';
echo $str;
function printcard($card)
return trim($str,',').')';
}
紙牌遊戲 比較大小
玩家甲和玩家乙各出一張牌,看誰大。遊戲規則 如果兩張牌都不是王牌花色或則都是王牌花色,則牌面大的牌大,如果牌面一樣大則一樣大。若其中一張牌是王牌而另一張不是,則無論牌面如何都是王牌花色大。第一行乙個數字n 代表資料組數 n 10 對於每組資料,首先輸入乙個字元 s h d c 表示王牌花色。接下去一...
喜笑等動作收集起來的扎金花GAME
zhajinhuagame的傢伙一般會從你第一局開始就不動聲色地觀察你,扎金花game將你的洗牌 摸牌 出牌 皺眉 喜笑等動作收集起來,幾局之後,牌還未開始,扎金花game由於你習慣定勢不斷在重現的緣故,這與我們許多企業內部的老員工與優秀新員工之間的協作與提公升狀況是多麼相似啊。他們會控制你的洗牌分...
神奇的撲克牌遊戲
給大家介紹乙個神奇的撲克遊戲,珍藏已久,分享一下,這個遊戲,即可以鍛鍊思考,又可以練習程式設計演算法 拿55張撲克牌,任意分成若干堆,在桌面上從左到右,依次排成一行 對撲克牌做如下操作,從每一堆中取一張,形成新的一堆,放在最右邊,然後重複做這個操作,結論是 經過有限步操作,必然形成從左到右,數量依次...