📚 知識家圖書館 奇摩知識+ 紀念館

關於撲克牌程式(不限語言)

發問者 目標鹿丸的愛書狂 (Lv.2) ・2010 年 12 月 14 日 ・程式設計

我想寫一個撲克牌程式 發牌給4個人 從每一家13張牌中由程式挑出5張牌,組成最佳牌型 且考慮最強數字、花色組合 最後輸出贏家 牌型大小順序1同花順 2鐵支 3葫蘆 4同花 5順子 6三條 7兩對 同牌型比數字(A > K > Q > J > 10 > 9 > 8 > 7 > 6 > 5 > 4 > 3 >2), 數字同樣比花色(黑桃 >紅心 > 磚塊 >梅花); 順子順序:最大A、10、J、Q、K 第二大A、2、3、4、5。

2 則回答

最佳解答
你可以用 enum 來表示花色跟數字: enum CARDS { NUMBER_2 = 0x01, NUMBER_3 = 0x02, NUMBER_4 = 0x03, NUMBER_5 = 0x04, NUMBER_6 = 0x05, NUMBER_7 = 0x06, NUMBER_8 = 0x07, NUMBER_9 = 0x08, NUMBER_10 = 0x09, NUMBER_J = 0x0A, NUMBER_Q = 0x0B, NUMBER_K = 0x0C, NUMBER_A = 0x0D, TYPE_SPADE = 0x0400, TYPE_HEART = 0x0300, TYPE_DIAMOND = 0x0200, TYPE_CLUB = 0x0100 }; 這麼一來 TYPE + NUMBER 就等於牌, 例如黑桃五 = 0x0104, 梅花 J = 0x040A. 遊戲一開始先 "準備一副牌", 可以用雙層迴圈去跑, 或是直接寫死... 再來是洗牌, 就把每張牌隨機與另一張牌交換: for (int i = 0;i < 52;++i) swap(cards[i], cards[rand()%52]); 那麼前 0~12 張就是第一家的牌, 13~25 第二家, 26~38 第三家, 39~51 第四家. 然後牌型的判斷就工人智慧努力刻程式就是了... - 取花色: card[i] & 0x0f00 - 取數字: card[i] & 0x000f 牌型也是弄個 enum: enum SIGN { SIGN_NOTHING = 0x010000, // 無賴 SIGN_PAIR = 0x020000, // 一對 SIGN_TWO_PAIR = 0x030000, // 兩對 SIGN_THREE_OF_A_KIND = 0x040000, // 三條 SIGN_STRAIGHT = 0x050000, // 順子 SIGN_FLUSH = 0x060000, // 同花 SIGN_FULL_HOUSE = 0x070000, // 葫蘆 SIGN_FOUR_OF_A_KIND = 0x080000, // 鐵支 SIGN_ROYAL_FLUSH = 0x090000, // 同花順 }; 1. 同花順: 針對每種花色去找是否有順子 (順子的判斷方法看 5) 2. 鐵隻: 同數字的牌有四張 3. 葫蘆: 同數字的牌三張, 另一個數字的牌兩張 (先找 A, 再從 K 找回 2) 4. 同花: 全部的牌花色相同 5. 順子: 有 連續的數字五張 (先找 A K Q J 10, 再找 5 4 3 2 A, 然後從 K Q J 10 9 開始找到 6 5 4 3 2) 6. 三條: 同樣數字的牌三張 7. 兩對: 一個數字的牌兩張, 另一個數字的牌也兩張 (先找 A, 再從 K 找回 2) 8. 一對: 同樣數字的牌兩張 9. 無賴: 先找 A, 然後從 K 找回 2 這麼一來, 最先找到的五張牌就是手上最大的. 每種牌型只要記最大的那張牌即可. 例如 - Q 鐵支 = 0x08000B (花色不重要所以不記), - 最大的牌是紅心 A 的順子 (10 J Q K A) = 0x05030D - 葫蘆 Q Q Q 3 3 記三條的數字 = 0x04000B... 其他請自己發揮. 四個人裡面數字最大的就是贏家.
?(Lv.7) 2010 年 12 月 14 日
推薦您前往黃金俱樂部遊戲網! 提供您詳盡的說明 您可以先進行遊戲下載: 網址:http://99點5888th點net 誠心服務!會員溫馨!永久服務! 第一:全程直播遊戲的公平與公正性【亞洲唯一直屬會員代理】 第二:點數儲值和託售皆在十分鐘之內完成【全台娛樂城速度最快24小時不分周末】 第三:二十四小時專業客服務線上服務全年無休【大大小小問題都可以馬上做詳細解答喔】 電子機台.真人遊戲和你一同玩樂 麻將 百家樂 5PK 德州撲克 水果盤 賓果 輪盤 21點 10點半 骰盅 牌九 鬥地主 13支 全年網站優惠活動不間斷! 快去註冊會員!免費:http://99點5888th點net
小連(Lv.1) 2014 年 8 月 3 日

電腦與網際網路的其他問題