1. 程式人生 > >棋牌源碼開發-牛牛算法思路

棋牌源碼開發-牛牛算法思路

麻將 胡牌 算法

1、牌型大小 本牌型依次大小為: K、Q、J、10、9、8、7、6、5、4、3、2 、A

2、出牌順序 每位玩家將牌型編排好之後可以出牌,莊家是最後一個亮牌的。

3、牌型,特殊牌型 J、Q、K都是當10點,然後A是當1點,其他的牌型當自身的點數。

4、牌型組合 牌局開始每個人手中都有五張牌,然後玩家需要將手中任意三張牌湊成10點或20點或30點都可以,這樣是被稱之為牛。接下來在將其余的兩張的點數相加得出幾點。去掉十位數,只留個位數來進行比較,如果接下來兩張的相加點數也正好是整數的話,那就是最大的牌型:“牛牛”。

5、牌型大小比較 當莊家與閑家同時出現相同點數時,系統自動將兩家手中牌的最大那一張進行比較,誰大就由誰獲得勝利。如果出現牌也相同大的話,就按花色來進行比較,花色的比較與梭哈的花色比較類同。(以下代碼僅供參考,不足之處歡迎點評QQ2189563389 棋牌源碼開發 www.yasewl.com)


[javascript] view plain copy 技術分享技術分享


  1. function getRandom() {

  2. return parseInt(2 + (9 - 2 + 1) * Math.random());

  3. }

  4. function getCards() {

  5. var arr = [];

  6. var count = 5;

  7. while (count--) {

  8. arr.push(getRandom());

  9. }

  10. return arr;

  11. }

  12. function cal(cards) {

  13. console.log(cards);

  14. var s = 0;

  15. var

    dict = {};

  16. for (var i = 0; i < cards.length; i++) {

  17. var ci = cards[i];

  18. s += ci;

  19. dict[ci] = dict[ci] === undefined ? 1 : dict[ci] + 1;

  20. };

  21. var point = s % 10;

  22. var exists = false;

  23. for (var i in dict) {

  24. var other = (10 + point - i) % 10;

  25. if (dict[other]) {

  26. if ((other == i && dict[other] >= 2) || (other!=i&&dict[other] >= 1)) {

  27. exists = true;

  28. break;

  29. }

  30. }

  31. }

  32. return exists ? point : -1;

  33. }

  34. console.log(cal(getCards()));

  35. // console.log(cal([6, 6, 9, 3, 9]));


本文出自 “棋牌源碼搭建教程” 博客,請務必保留此出處http://13114207.blog.51cto.com/13104207/1945232

棋牌源碼開發-牛牛算法思路