桌游Dobble程式码

桌游说明
https://blog.duduzui.com/2013/06/dobble.html

规则设计:任意两张牌都必有且仅有一种相同符号

该桌游共有55张卡牌、每张卡牌有8种图案
与现行程式码不符,再想想

其他整理方向:
将产生排组、洗乱花色、洗牌分开
删去第一轮、直接以第二轮的逻辑产製全部
写test

程式码如下

function newDobble(num) {  let pic = 0;  let dobble = new Array(num);  // let picNum=countPicNumber(num-1);  for (i = 0; i < num; i++) {    dobble[i] = new Array();  }  //第一轮  //从第一张牌开始跟下一张牌给予相同的花色  //直到倒数第二张牌结束  for (i = 0; i < num - 1; i++) {    dobble[Math.floor(i % num)].push(i);    dobble[Math.floor((i + 1) % num)].push(i);    pic++;    //每一次分配完就花色+1  }  // console.log('第一轮');  // console.log(dobble);  // console.log('第一轮pic:'+pic);  //第二轮  remained = num - 2;  //第一张牌剩下总数-自身-次张还没配对  //下一张牌开始每次扣除前次已配对的部分,所以逐次减一  for (j = 0; j < num - 2; j++) {    //从第一张牌开始比对除了下一张牌以外的牌    //分别给予相同的花色    //次张在第一轮分配过了,所以从+2那一张开始    //remained表示要逐次分配的次数,故每次减一    for (k = j; k < j + remained; k++) {      dobble[j].push(pic);      dobble[k + 2].push(pic);      pic++;    }    remained--;  }  return dobble;  //   // console.log('第二轮');  // for(i=0;i<num;i++){  // console.log(dobble[i]);  // }  // console.log('卡片总数:'+num);  // console.log('花色总数:'+pic);}//functionfunction countPicNumber(num) {  if (num == 1)    return 1  else    return (num + countPicNumber(num - 1))}function randomPics(arrOfArr) {//打乱花色的排序  for (m = 0; m < arrOfArr.length; m++) {    for (i = 0; i < arrOfArr[m].length; i++) {    j = Math.floor((Math.random() * arrOfArr[m].length));    k = Math.floor((Math.random() * arrOfArr[m].length));      temp=arrOfArr[m][j];      arrOfArr[m][j] = arrOfArr[m][k];      arrOfArr[m][k]=temp;    }  }}function randomCards(num) {//打乱牌的排序  dobble = newDobble(num);  for (i = 0; i < num; i++) {    j = Math.floor((Math.random() * num));    k = Math.floor((Math.random() * num));    // console.log(j+','+k);    temp=dobble[j]    dobble[j] = dobble[k];    dobble[k]=temp  }  randomPics(dobble);  for (i = 0; i < num; i++) {    console.log(dobble[i]);  }  console.log('卡片总数:' + num);}console.log();randomCards(5);randomCards(6);randomCards(7);//比对单一阵列中是否有重複值//比对阵列之间是否必有重複值//比对阵列之间的重複值是否为唯一

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章