//调用随机数,在我上一篇博文讲过这一个函数。
function roundNum(min = 0, max = 0) {
if (!isNaN(min) && !isNaN(max) && min >= 0 && max >= 0) {
min > max ? [min, max] = [max, min] : [min, max] = [min, max];
return parseInt((max - min + 1) * Math.random() + min);
} else {
return `您输入的有误,请重新输入!!!`;
}
}
//洗牌
function shuffle() {
// 牌组
let pukeCards = ['♠3', '♥3', '♣3', '♦3',
'♠4', '♥4', '♣4', '♦4', '♠5', '♥5', '♣5', '♦5',
'♠6', '♥6', '♣6', '♦6', '♠7', '♥7', '♣7', '♦7',
'♠8', '♥8', '♣8', '♦8', '♠9', '♥9', '♣9', '♦9',
'♠10', '♥10', '♣10', '♦10', '♠J', '♥J', '♣J',
'♦J', '♠Q', '♥Q', '♣Q', '♦Q', '♠K', '♥K', '♣K', '♦K',
'♠A', '♥A', '♣A', '♦A', '♠2', '♥2', '♣2', '♦2',
'small joker', 'big joker'];
let i = 53;
while (i) {
let roundCord = roundNum(0, i );
pukeCards.push(pukeCards[roundCord]);
pukeCards.splice(roundCord, 1);
i--;
}
return pukeCards;
}
//发牌
function deal(puke) {
let player1 = puke.splice(0, 17);
let player2 = puke.splice(0, 17);
let player3 = puke.splice(0, 17);
let bottomCardS = puke.splice(0, 3);
console.log(`玩家1:${player1}`);
console.log(`玩家2:${player2}`);
console.log(`玩家3:${player3}`);
console.log(`底牌:${bottomCardS}`);
}
// 拿到洗过的牌
let account = shuffle();
// 运行发牌实现斗地主自动发牌
deal(account);
想法就是先把整副牌的顺序打乱然后再依次发牌,留下三张为底牌。
用的方法是push()和splice(),首先利用随机数0-53(因为是下标从0开始的)随机到一个下标,使用方法push()将随机的牌添加到数组的最后一项然后使用方法splice()删除该牌,完成过后随机的下标范围减1。因此,在进行循环的时候并不会影响到后面已经随机排序的牌。
当牌洗好过后就可以进行发牌了,使用的还是方法splice();虽然splice是删除,但是它能用变量接收,接收的东西就是删除的东西,因此就实现了发牌的功能。三个玩家一人17张牌,最后三张牌是底牌。
讲道理来说斗地主发牌的话会给你进行排序,但我目前还不知道怎么排序,等我实现了排序过后我会再更新的。

用JS实现一个斗地主发牌器的更多相关文章

  1. 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

    这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...

  2. AudioPlayer.js,一个响应式且支持触摸操作的jquery音频插件

    AudioPlayer.js是一个响应式.支持触摸操作的HTML5 的音乐播放器.本文是对其官网的说用说明文档得翻译,博主第一次翻译外文.不到之处还请谅解.之处. JS文件地址:http://osva ...

  3. Unity NGUI 网络斗地主 -发牌 脚本交互

    Unity NGUI 网络斗地主 -发牌 脚本交互 @By 灰太龙 Unity4.2.1f4 NGUI 3.0.4 本篇说的问题是脚本与控件的交互! 现在对界面进行了改进,先看副图! 1.制作发牌效果 ...

  4. 用 EPWA 写一个 图片播放器 PicturePlayer

    用 EPWA 写一个 图片播放器  PicturePlayer  . 有关 EPWA,见 <我发起并创立了一个 EPWA 的 开源项目>   https://www.cnblogs.com ...

  5. Python+Flask+Gunicorn 项目实战(一) 从零开始,写一个Markdown解析器 —— 初体验

    (一)前言 在开始学习之前,你需要确保你对Python, JavaScript, HTML, Markdown语法有非常基础的了解.项目的源码你可以在 https://github.com/zhu-y ...

  6. Java练习——扑克牌发牌器

    Java练习——扑克牌发牌器声明:学习自其他博主,感谢分享,这里自己也写了一下.实现思路 - 构建一张扑克牌 - 构建一套扑克牌 - 测试  构建一张扑克牌 /** * @author 冬冬 * 定义 ...

  7. 前端与编译原理——用JS写一个JS解释器

    说起编译原理,印象往往只停留在本科时那些枯燥的课程和晦涩的概念.作为前端开发者,编译原理似乎离我们很远,对它的理解很可能仅仅局限于"抽象语法树(AST)".但这仅仅是个开头而已.编 ...

  8. Java 用集合实现简单的斗地主发牌

    创建数组.集合,存放数据 public class FightAgainstLandlords { /** * poker集合,存储54张牌 */ private ArrayList<Strin ...

  9. 手把手从零开始---封装一个vue视频播放器组件

    现在,在网页上播放视频已经越来越流行,但是网上的资料鱼龙混杂,很难找到自己想要的,今天小编就自己的亲身开发体验,手把手从零开始---封装一个vue视频播放器组件. 作为一个老道的前端搬砖师,怎么可能会 ...

随机推荐

  1. IDEA把spring-boot项目打包成jar

    1.打开项目,然后右击项目选中‘Open Module Settings’进入project Structure( 快捷键 Ctrl+Shift+Alt+S或者File->Project Str ...

  2. 回顾idea快捷键

    F9            resume programe 恢复程序 Alt+F10       show execution point 显示执行断点 F8            Step Over ...

  3. PostgreSQL体系架构与内存结构

    PostgreSQL体系架构 PostgreSQL的内存结构

  4. auto-sklearn

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  5. Microsoft OLE DB Provider for Oracle 在哪个安装包中

    http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-098155.html oracle odbc downlo ...

  6. LODOP中的RightMargin右边距和BottomMargin下边距

    LODOP中的打印项,例如ADD_PRINT_HTM,参数分别为顶边距,左边距,宽,高,打印项内容.第三四参数宽高,除了可以用值和百分比,还可以用RightMargin和BottomMargin变相控 ...

  7. javascript中this、new、apply和call详解

    如果在javascript语言里没有通过new(包括对象字面量定义).call和apply改变函数的this指针,函数的this指针都是指向window的,重要的话要说三遍.... 讲解this指针的 ...

  8. vagrant报错处理

    vagrant up报错 Warning: Authentication failure. Retrying...解决方案 http://www.cnblogs.com/zqifa/p/vagrant ...

  9. Windows 7安装Service Pack 1失败问题

    问题 很多朋友在电脑上安装某些软件时,会发现安装不了,提示信息大多是"本软件只支持 Windows 7 SP1 及更新版本"等等.这说明,你的电脑仍然在运行最早的Windows7版 ...

  10. LVS的基础使用

    LVS的基础使用 LVS的介绍 A:什么是LVS B:cluster(集群的概念) C:LVS的介绍 LVS的使用 A:ipvsadm命令的使用 ♣一:LVS的介绍 A:什么是lvs LVS的英文全称 ...