簡(jiǎn)單撲克游戲之玩法規(guī)則

簡(jiǎn)單撲克游戲規(guī)則.gif

為之前一篇添加玩法規(guī)則墓毒,參考了最為親切的關(guān)牌(流行于江浙一帶)

我的關(guān)牌規(guī)則

1.牌數(shù)

一副牌片吊,保留了所以牌,共54張疮装;

2.發(fā)牌

由系統(tǒng)隨機(jī)分發(fā)2家的牌喻频,每家27張缩宜,不重復(fù)

3.出牌
  • 第一次為黑桃3先出
  • 牌的大小順序:大王,小王,2锻煌,A妓布,K,Q宋梧,J匣沼,10,9捂龄,8释涛,7,6倦沧,5唇撬,4,3展融。
  • 牌形分為:?jiǎn)螐垺?一對(duì)窖认、 三張、姐妹對(duì)(兩張三張都可以連接愈污,且連接數(shù)量無(wú)限)耀态、順子(數(shù)量無(wú)限制)轮傍、炸彈(不能4帶1):
  • 除了炸彈以外暂雹,普通牌形不允許對(duì)壓,相同牌形只有比它大的才能出创夜。
  • 炸彈任何牌形都能出杭跪,炸彈的大小為:天王炸,2驰吓,A涧尿,K,Q檬贰,J姑廉,10,9翁涤,8桥言,7,6葵礼,5号阿,4,3鸳粉。

思路

1. 客戶端向服務(wù)器發(fā)送的是出牌的撲克塊狀代碼數(shù)組
//利用$(selector).each 將每一個(gè)選中(上移)的撲克牌的html放進(jìn)數(shù)組
var i = 0;
$(".click-up").each(function() {
    list[i] = $(this).prop("outerHTML"); //獲取選中的牌的整個(gè)html代碼
    $(this).removeClass("click-up");
    $("#preview-below").append(list[i]);
    $(this).remove();
    i++;
});
2. 利用socket.io發(fā)送到對(duì)方客戶端扔涧,如下獲取
//利用append動(dòng)態(tài)添加到指定id為“preview-above”的div里
for (var index in data.discard) {
    $("#preview-above").append(data.discard[index]);
}

簡(jiǎn)單點(diǎn),直接把id為preview-above元素里的撲克.poker利用attr("id")取出id值并進(jìn)行正則操作獲取值

$("#preview-above").find(".poker").each(function() {
    var pokerId = $(this).attr("id"); //atte取出id值
    pokerId = pokerId.replace(/[p]([0-9]+)/g, "$1"); //獲取選中的牌的編號(hào)(刪掉id值首字母p)
    aboveList[j] = getPokerFace(pokerId);
    j++;
});
3. 判斷牌的類型

3.1 由于撲克牌的序號(hào)是從1到54,但這并不是撲克牌的面值枯夜。轉(zhuǎn)換操作:

//返回每張牌的面值
function getPokerFace(n) {
    var temp = n % 13;
    var result;
    if(n == 53) {   //大王
        result = 17;
    } else if(n == 54) {  //小王
        result = 16;
    }
    if(temp >= 3 && temp <= 12) {  //3到Q
        result = temp;
    } else if(temp == 0) {  //老K
        result = 13;
    } else if(temp == 1) {  //A
        result = 14;
    } else if(temp == 2) {  //2
        result = 15;
    }
    return result;
}

3.2 獲取到撲克牌面值弯汰,進(jìn)行確定撲克牌數(shù)組的類型操作

//出牌類型:?jiǎn)危瑢?duì)湖雹,連對(duì)蝙泼,炸
var ONE = "ONE";
var TWO = "TWO";
var TWO_2 = "TWO_2";
var THREE = "THREE";
var THREE_2 = "THREE_2";
var THREE_3 = "THREE_3";
var FOUR = "FOUR";
var STRAIGHT = "STRAIGHT";
var ERROR = "ERROR";
var KING = "KING";
簡(jiǎn)陋的狀態(tài)轉(zhuǎn)化
//牌型狀態(tài)機(jī)
function typeState(type, n, m) {
    switch (type) {
        //單
        case ONE:
            if(n == m) {
                type = TWO;
            } else if(n == m +1 && m == 16) {
                type = KING;
            } else if(n == m + 1){
                type = STRAIGHT;
            } else {
                type = ERROR;
            }
            break;
        //對(duì)
        case TWO:
            if(n == m) {
                type = THREE;
            } else if(n == m + 1){
                type = TWO_2;
            } else {
                type = ERROR;
            }
            break;
        case TWO_2:
            if(n == m) {
                type = TWO;
            } else {
                type = ERROR;
            }
            break;
        case THREE:
            if(n == m) {
                type = FOUR;
            } else if(n == m + 1){
                type = THREE_2;
            } else {
                type = ERROR;
            }
            break;
        case THREE_2:
            if(n == m) {
                type = THREE_3;
            } else {
                type = ERROR;
            }
            break;
        case THREE_3:
            if(n == m) {
                type = THREE;
            } else {
                type = ERROR;
            }
            break;
        case STRAIGHT:
            if(n == m + 1) {
                type = STRAIGHT;
            } else {
                type = ERROR;
            }
            break;
        default:
            break
    }
    return type;
}
//返回牌的類型和排列中最小牌的面值
function getPokerType(pokerList) {
    var type = ONE;
    var n, m;
    for(var i = 1; i < pokerList.length; i++) {
        n = pokerList[i-1];
        m = pokerList[i];
        type = typeState(type, n, m);
    }
    if(type == TWO_2 || type == THREE_2 || type == THREE_3 || (type == STRAIGHT && pokerList.length < 5)) {
        type = ERROR;
    }
    var result = {
        type: type,
        val: m,
        length: pokerList.length
    };
    return result;
}

3.3 獲取我自己選中的牌

$("#box-below").find(".click-up").each(function() {
    var pokerId = $(this).attr("id");
    pokerId = pokerId.replace(/[p]([0-9]+)/g, "$1"); //獲取選中的牌的id(刪掉首字母p)
    belowList[k] = getPokerFace(pokerId);
    k++;
});

將兩個(gè)撲克牌數(shù)組的類型進(jìn)行比較并確定大小

//pkObj.data.before為true表示誰(shuí)拿到?3 或者 對(duì)方放棄我可以出任意牌,同時(shí)我出的牌必須符合規(guī)則劝枣,即type != ERROR
var myPoker = getPokerType(belowList);

//compare(aboveList, belowList)用于比較相同類型的牌的大小
if(compare(aboveList, belowList) || (pkObj.data.before && myPoker.type != ERROR))

//將選擇出的牌和對(duì)方出的牌進(jìn)行比較
function compare(list1, list2) {
    var check = false;
    var data1 = getPokerType(list1); //對(duì)方的牌類型
    var data2 = getPokerType(list2);  //我的牌類型

    //1.類型相同的情況下再比較數(shù)組第一個(gè)元素大小;
    //2.4表示炸汤踏,對(duì)方不是炸,我出炸則check為true
    //3.天王炸
    if((data1.type == data2.type && (data1.length == data2.length) && list2[0] > list1[0]) || (data1.type != FOUR && data2.type == FOUR) || (data2.type == KING)) {
        check = true;
    }
    //check為true可出牌舔腾,否則不能出牌
    return check;
}

總結(jié)

  1. jquery設(shè)置按鈕的disabled屬性
$('#button').attr('disabled',"true");  //添加disabled屬性 
$('#button').removeAttr("disabled");  //移除disabled屬性 
  1. replace()
pokerId = pokerId.replace(/[p]([0-9]+)/g, "$1"); //$1獲取]([0-9]+)的值

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末溪胶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子稳诚,更是在濱河造成了極大的恐慌哗脖,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扳还,死亡現(xiàn)場(chǎng)離奇詭異才避,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)氨距,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)桑逝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人俏让,你說(shuō)我怎么就攤上這事楞遏。” “怎么了首昔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵寡喝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我勒奇,道長(zhǎng)预鬓,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任赊颠,我火速辦了婚禮格二,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘巨税。我一直安慰自己蟋定,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布草添。 她就那樣靜靜地躺著驶兜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抄淑,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天屠凶,我揣著相機(jī)與錄音,去河邊找鬼肆资。 笑死矗愧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的郑原。 我是一名探鬼主播唉韭,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼犯犁!你這毒婦竟也來(lái)了属愤?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤酸役,失蹤者是張志新(化名)和其女友劉穎住诸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體涣澡,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贱呐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了入桂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奄薇。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖事格,靈堂內(nèi)的尸體忽然破棺而出惕艳,到底是詐尸還是另有隱情,我是刑警寧澤驹愚,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站劣纲,受9級(jí)特大地震影響逢捺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜癞季,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一劫瞳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧绷柒,春花似錦志于、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春奈应,著一層夾襖步出監(jiān)牢的瞬間澜掩,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工杖挣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肩榕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓惩妇,卻偏偏與公主長(zhǎng)得像株汉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子歌殃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 目錄: 1. 體系結(jié)構(gòu) 2. 服務(wù)器-客戶端通訊圖 客戶端處理 用戶點(diǎn)擊登錄按鈕進(jìn)入排隊(duì)郎逃,并發(fā)給服務(wù)器隨機(jī) id,...
    淡就加點(diǎn)鹽閱讀 1,073評(píng)論 1 3
  • 1.JQuery 基礎(chǔ) 改變web開(kāi)發(fā)人員創(chuàng)造搞交互性界面的方式挺份。設(shè)計(jì)者無(wú)需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性褒翰。 1....
    LaBaby_閱讀 1,336評(píng)論 0 2
  • 1.JQuery 基礎(chǔ) 改變web開(kāi)發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計(jì)者無(wú)需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級(jí)特性匀泊。 1....
    LaBaby_閱讀 1,174評(píng)論 0 1
  • 這是兩個(gè)人間的簡(jiǎn)單撲克游戲优训,每人27張牌,由服務(wù)器隨機(jī)分成兩組不同的數(shù)組傳遞給客戶端各聘。 基本邏輯已實(shí)現(xiàn)揣非,剩下?lián)淇伺?..
    淡就加點(diǎn)鹽閱讀 1,235評(píng)論 1 3
  • 這深情一片 等待誰(shuí)收留默默的又想起了李健的歌 總是恰到好處 符合心情 讓人留戀忘返好快呀!一年一...
    playxy閱讀 139評(píng)論 0 1