使用javascript随机生成斗地主玩家手牌
学习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随机生成斗地主玩家手牌的更多相关文章
- JavaScript随机生成信用卡卡号的方法
这段JS代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用途,否则后果自负. var visaPrefixList = new Array( "4 ...
- JavaScript随机生成颜色以及十六进制颜色 与RGB颜色值的相互转换
/** * 随机生成颜色 * @return 随机生成的十六进制颜色 */ function randomColor(){ var colorStr=Math.floor(Math.random()* ...
- 使用JavaScript随机生成数字混合字母的验证码
<script> // 封装一个随机生成数字的函数 function random(a, b) { var n = Math.round(Math.random() * (a - b) ...
- 【JavaScript随机生成验证码及其颜色】
css样式: <style type="text/css"> /*给验证码设一个盒子*/ #yzm{ width: 120px; height: 50px; text- ...
- JavaScript随机生成布尔值
//方法一 var rand = Boolean(Math.round(Math.random())); conosole.log(rand) // 方法二: var arr = [true,fals ...
- js 随机生成信用卡号
本文实例讲述了JavaScript随机生成信用卡卡号的方法.分享给大家供大家参考.具体分析如下: 这段JS代码根据信用卡卡号产生规则随机生成信用卡卡号,是可以通过验证的,仅供学习参考,请不要用于非法用 ...
- JavaScript通过正则随机生成电话号码
没有接口,就只能自己模拟Json数据了 恰好需要模拟一些电话号码,我又懒得自己随便写, 不如写一个小功能就用来实现随机生成电话号码 <!DOCTYPE html> <html lan ...
- 【JavaScript】随机生成10个0~100的数字
随机生成10个0~100不重复的数字(包含0和100): 需要用到的知识点:随机数 去重 下面放代码 <!DOCTYPE html> <html> <head> & ...
- selenium + python自动化测试unittest框架学习(七)随机生成姓名
在自动化测试过程中经常要测试到添加用户的操作,每次都要输入中文,原本是找了十几个中文写成了列表,然后从列表中随机取出填入用户名文本框中,随着测试的增加,发现同名的人搜索出来一大堆,最后在网上找了个随机 ...
随机推荐
- delphi 选择文件夹,路径选择,浏览文件夹
选择文件夹,路径选择, 文件夹 资源管理器 推荐 SelectDirectory http://docwiki.embarcadero.com/Libraries/Seattle/en/Vcl.Fi ...
- ELK-Stack 最后一次全篇文档
简介: ELK-Stack 日志收集系统.最后一次全篇记录的笔记,之后关于 ELK 的笔记都将是片段型.针对性的. 环境介绍: ELK-Stack:192.168.1.25 ( Redis.LogS ...
- MyBatis3 用log4j在控制台输出 SQL
用log4j在控制台输出 SQL 在spring-mybatis.xml中配置 <bean id="sqlSessionFactory" class="org.my ...
- 如何设置tomcat,直接通过IP 访问
找到tomcat的主目录,进入conf文件夹,找到server.xml文件,并打开: 修改tomcat的监听端口为80端口: 在server.xml文件中找到: <Connector por ...
- Java中的class为什么要设置访问控制?和C++比较的感悟
Java中的class为什么要设置访问控制?和C++比较的感悟 在Java中package解决了class的名字空间问题,class的成员都有各自的访问控制符,而class还有两种访问控制符,分别是p ...
- linux下connect超时时间探究
最近在linux做服务器开发的时候,发现了一个现象:服务器在启动的时候调用了 connect 函数,因为连接了一个不可用的端口,导致connect最后报出了 “Connection timed out ...
- 你不知道的高性能Javascript
想必大家都知道,JavaScrip是全栈开发语言,浏览器,手机,服务器端都可以看到JS的身影. 本文会分享一些高效的JavaScript的最佳实践,提高大家对JS的底层和实现原理的理解. 数据存储 计 ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第十三周
java学习第十三周 本周,进行了对前六章知识点的小测试,在测试中我也发现了许多自己学习上存在的隐患,对一些知识点理解的太过粗略,没有很好的去记忆那些重要的小细节,把注意力过多的放在了 ...
- go_指针
值传递:相当于在内存中拷贝一分变量出来,拷贝变量的改变对原变量不影响 引用传递:直接引用内存中的变量,会被改变 c,c++值传递和引用传递都有 Java,python多用引用传递 go语言指针简单之处 ...
- 网站转为https协议,苹果商店应用转为https协议总结
log_format www.44755.com '$remote_addr - $remote_user [$time_local] "$request" ' '$status ...