1. 程式人生 > >使用javascript隨機生成鬥地主玩家手牌

使用javascript隨機生成鬥地主玩家手牌

相同 != brush ++ () span 卡牌 當前 進行

學習javascript估摸著有半個多月了,好歹自己有過編程基礎,學的還算輕松,不過js裏的面向對象是真的打腦殼,但都但不懂,和我以前學過的c#簡直相差太遠

今天寫了個隨機生成鬥地主玩家手牌的代碼,自己還蠻滿意的,一溜嘰滾下床,戳開電腦來分享一手

雖然這種東西根本沒啥用,哈哈

卡牌列表數組元素類型:

[1, "黑桃", 11, "K"]

  

每一張卡牌為一個數組,有4個元素,0號元素代表當前花色大小,2號元素代表當前卡片數值大小,1號和3號都是字符串,用來表示卡牌表面信息

比較大小分為兩種情況,卡片數值不同和卡片數值相同

卡片數值不同情況直接比較卡片數值大小來排序,卡片數值相同就需要比較花色大小來排序

難點就在於將手牌進行排序,有了思路以後就好做了,直接貼上代碼!

//創建卡牌
function CreatePoker() {
    let color = [[1, "黑桃",], [2, "紅桃"], [3, "梅花"], [4, "方塊"]];
    let number = [[1, "3"], [2, "4"], [3, "5"], [4, "6"], [5, "7"], [6, "8"], [7, "9"], [8, "10"], [9, "J"], [10, "Q"], [11, "K"], [12, "A"], [13, "2"]];
    //創建卡牌數組,每種顏色對應一種數值
let pokerList = []; for (let i = 0; i !== color.length; i++) { for (let j = 0; j !== number.length; j++) { pokerList.push([...color[i], ...number[j]]); } } //添加大小王 pokerList.push(["", "", 14, "小 王"]); pokerList.push(["", "", 15, "大 王"]); //將卡牌數組打亂,隨機返回-1或者是1就可以亂排序
pokerList.sort(() => { return Math.random() > 0.5 ? -1 : 1; }); return pokerList;//最後將得到的卡牌數組返回 } function GivePoker(pokerList) { //直接從亂序數組中剔除得到17項,然後排序 let sortArr = SortPoker(pokerList.splice(0, 17)); //格式化輸出 let str = ""; for (let poker of sortArr) { str += poker[1] + poker[3] + "\t"; } return str; } //排序數組 function SortPoker(pokerList) { pokerList.sort((poker1, poker2) => { //卡牌數值相同比較花色 if (poker1[2] === poker2[2]) { return poker1[0] - poker2[0]; } //卡牌數值不同比較數值 return poker1[2] - poker2[2]; }); return pokerList; } let pokerList = CreatePoker(); let player1Poker = GivePoker(pokerList); let player2Poker = GivePoker(pokerList); let player3Poker = GivePoker(pokerList); let lastPoker = GivePoker(pokerList); console.log("玩家1:" + player1Poker); console.log("玩家2:" + player2Poker); console.log("玩家3:" + player3Poker); console.log("底 牌:" + lastPoker);

下午的時候寫的代碼有足足80行,回家後又思考優化後只有40行了,個人感覺良好,哈哈,膨脹了膨脹了,睡覺!明天繼續努力學習!

使用javascript隨機生成鬥地主玩家手牌