//调用随机数,在我上一篇博文讲过这一个函数。
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. Java使用Jsoup之爬取博客数据应用实例

    导入Maven依赖 <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --> <dependency> <g ...

  2. 将lol人物模型导入到Unity3d

      接下来我打算将提取出来的lol人物模型导入到Unity3D中,这样会更加好玩!(不知道如何提取lol人物模型的话请看该链接)   首先我们已经把dae文件导入到c4d中了,可以看到这是一只吹笛子的 ...

  3. 在IDEA上对SpringBoot项目配置Devtools实现热部署

    spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. devtool ...

  4. Net core学习系列(一)——Net Core介绍

    一.什么是Net Core .NET Core是适用于 windows.linux 和 macos 操作系统的免费.开源托管的计算机软件框架,是微软开发的第一个官方版本,具有跨平台 (Windows. ...

  5. 浅谈SOA面向服务化编程架构(dubbo)

      dubbo 是阿里系的技术.并非淘宝系的技术啦,淘宝系的分布式服务治理框架式HSF啦 ,只闻其声,不能见其物.而dubbo是阿里开源的一个SOA服务治理解决方案,dubbo本身 集成了监控中心,注 ...

  6. Java基础 try...catch 处理ArithmeticException 除以零的异常

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  7. 必须要注意的 C++ 动态内存资源管理(一)——视资源为对象

    必须要注意的 C++ 动态内存资源管理(一)——视资源为对象 一.前言         所谓资源就是,一旦你用了它,将来必须还给系统.如果不这样,糟糕的事情就会发生.C++ 程序中最常见使用的资源就是 ...

  8. 数据分析入门——pandas数据处理

    1,处理重复数据 使用duplicated检测重复的行,返回一个series,如果不是第一次出现,也就是有重复行的时候,则为True: 对应的,可以使用drop_duplicates来删除重复的行: ...

  9. unittest中的TestLoader使用

    一:unittest中的TestLoader使用说明 第一步:unittest增加TestSuit() suite=unittest.TestSuite() 第二步:unittest增加Testloa ...

  10. 改进初学者的PID-测量的比例介绍

    最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助.作者Brett Beaure ...