js模拟斗地主

阅读: 评论:0

js模拟斗地主

js模拟斗地主

目录

步骤:

1.生成扑克牌

2. 洗牌

3.发牌

4.排序


步骤:

1.生成扑克牌

  1. 首先定义一个空数组 cardArray,用来存储生成出来的扑克牌。
  2. 定义了两个数组 numbercolor,分别存储扑克牌的数字和花色
  3. 使用两个 for 循环嵌套,将每个数字和每个花色组合起来,生成一张扑克牌对象 card
  4. 将生成的扑克牌对象 card 添加到 cardArray 数组中
  5. 最后,添加两张大小王,也加入到 cardArray 数组中
<script>cardArray=[];number=["3","4","5","6","7","8","9","10","J","Q","K","A","2"];color=["♠","♥","♣","♦"];for (let i=0;i<number.length;i++){for (let j=0;j<color.length;j++){let card={number:number[i],color:color[j],numWeight:i,colWeight:j}cardArray.push(card);}}cardArray.push({number:"大王",numWeight:15},{number:"小王",numWeight:14});
</script>

2. 洗牌

  1. 使用 for 循环遍历 cardArray 数组,用随机数(注意转成整数)生成随机下标 iRand
  2. 使用解构赋值,将当前牌和随机下标对应的牌交换位置,从而实现洗牌的效果
<script>for (let i = 0; i < cardArray.length; i++) {let iRand = parseInt(Math.random()*cardArray.length );[cardArray[i],cardArray[iRand]]=[cardArray[iRand],cardArray[i]];}
</script>

 3.发牌

  1. 首先定义了三个空数组 player1player2player3,用来分别存储三个玩家手中的牌
  2. 使用 for 循环,每次循环都将 cardArray 数组中的前三张牌分别发给三个玩家
  3. 发牌的同时,将已经分配出去的牌从 cardArray 数组中移除,使用 shift() 方法可以将数组的第一个元素删除并返回该元素的值
<script>let player1=[];let player2=[];let player3=[];for (let i=0;i<17;i++){player1.push(cardArray[0]);cardArray.shift();player2.push(cardArray[0]);cardArray.shift();player3.push(cardArray[0]);cardArray.shift();}
</script>

4.排序

  1. 定义一个比较函数 compareWeight,用来比较两张牌的权重。该函数首先比较两张牌的数字权重,如果相等则比较花色权重,最后返回比较结果
  2. 使用数组的 sort() 方法,对三个玩家手中的牌进行排序。sort() 方法接受一个比较函数作为参数,该函数用来指定排序的规则
  3. 对于每个玩家的牌,使用箭头函数 (a,b) => compareWeight(a,b) 作为比较函数,对牌按照权重进行升序排序
<script>function compareWeight(a,b) {let rs1=a.numWeight-b.numWeight;let rs2&#lWeight;return rs1===0?rs2:rs1;}player1.sort( (a,b) => compareWeight(a,b));player2.sort( (a,b) => compareWeight(a,b));player3.sort( (a,b) => compareWeight(a,b));console.log( player1,player2,player3,"地主牌:",cardArray);
</script>

本文发布于:2024-01-30 16:56:27,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170660499121486.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:模拟斗地主
标签:斗地主   js
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23