PHP怎么做斗地主,JavaScript实现斗地主游戏的思路_javascript技巧
本文知识给大家分享一下使用js写斗地主的思路,代码写的不好,还请见谅。
这里说说斗地主主要包含的功能:洗牌,发牌,玩家出牌、电脑出牌,出牌规则的验证,输赢啥的没有判断,只是实现了这几个主要功能,下面依次说说几个功能的实现:
1.洗牌:
var pukes=this.manage.pukes;//存放扑克牌的数组
//洗牌
for(var i=;i
2.发牌(简版默认是玩家自己为地主,电脑为农民),由于前面洗牌时已经将牌的顺序打乱,所以发牌只是简单的循环把pukes中的元素添加到每个玩家实例中的pukes字段中。
//发牌
var start=;
for(var i=;i
3.玩家出牌,玩家出牌分为电脑和玩家自己两个步骤,电脑出牌是非常傻瓜的出牌方式(有牌就出):
//出牌
if(this.options.playerIndex==this.manage.curPlayerIndex) {
var spks = [],gz=false;
if (this.manage.curMaxPlayerIndex == this.options.playerIndex) {
this.manage.deskPukes = [];
}
if (this.isCompute) {
//电脑自动出牌
var start = ;
var len=this.manage.deskPukes.length||;
while (start < this.pukes.length) {
spks = [];
for (var i = ,j=start; i
4.出牌规则的验证,是很多函数组合起来,然后循环调用,如果遇到返回ture的即为出牌符合规则:
//以下为出牌规则
var rules={
_rules:[
new danzRule(),
new duiRule(),
new sandRule(),
new zandRule(),
new shunzRule(),
new liandRule()
],
valids:function(_pukes,_curPukes){
for(var i=;icurPukes[].dians;
}
return false;
}
function duiRule(_pukes,_curPukes){
//两张规则
}
duiRule.prototype.valid=function(_pukes,_curPukes){
//校验
var pukes=_pukes;//玩家的牌
var curPukes=_curPukes;//左面的牌
if(pukes&&pukes.length==){
//比较牌面值
if(pukes[].dians>&&pukes[].dians>){
return true;
}
if(pukes[].dians!=pukes[].dians){
return false;
}
if(!curPukes||!curPukes.length){
return true;
}else {
if(curPukes.length!=){
return false;
}
if (curPukes[].dians > && curPukes[].dians > ) {
return false;
}
if (curPukes[].dians != curPukes[].dians) {
return false;
}
if (curPukes[].dians == ) {
return false;
}
}
if(pukes[].dians==){
return true;
}
return pukes[].dians>curPukes[].dians;
}
return false;
}
function sandRule(){
//三带
}
sandRule.prototype.valid=function(_pukes,_curPukes){
//校验
var pukes=_pukes;//玩家的牌
var curPukes=_curPukes;//左面的牌
if(pukes&&(pukes.length>=)){
//比较牌面值
var books=getBooks(pukes);
if(!valid(books))return false;
if(!curPukes||!curPukes.length)return true;
if(curPukes.length!=books.length)return false;
var books=getBooks(curPukes);
if(!valid(books))return false;
return getSum(books)>getSum(books);
}
return false;
function getSum(books){
var sum=;
for(var i=;i&&counts==countsd;
}
function getBooks(pukes){
//返回三带的每个点数的个数
var books=[];
for(var i=;i&&curPukes.length!=)||!allEqual(curPukes)){
return true;
}
else{
if(pukes[].dians==){
return true;
}
if(curPukes[].dians==){
return false;
}
return pukes[].dians>curPukes[].dians;
}
}
return false;
function allEqual(pukes){
if(!pukes||!pukes.length)return false;
var base=pukes[].dians;
for(var i=;i=) {
if(!verificationCoherence(pukes)){
return false;
}
if(!curPukes||curPukes.length<=){
return true;
}
if(!verificationCoherence(curPukes)){
return false;
}
if(pukes.length!=curPukes.length){
return false;
}
return getSumDians(pukes)>getSumDians(curPukes);
}
return false;
function getSumDians(pukes){
var sum=;
for(var i=;i){
return false;
}
if(!books[pukes[i].dians]){
books[pukes[i].dians]=;
}else{
books[pukes[i].dians]++;
}
if(books[pukes[i].dians]>){
return false;
}
}
var start=false;
for(var i=;i=) {
if(!verificationCoherence(pukes)){
return false;
}
if(!curPukes||curPukes.length<=){
return true;
}
if(!verificationCoherence(curPukes)){
return false;
}
if(pukes.length!=curPukes.length){
return false;
}
return getSumDians(pukes)>getSumDians(curPukes);
}
return false;
function getSumDians(pukes){
var sum=;
for(var i=;i){
return false;
}
if(!books[pukes[i].dians]){
books[pukes[i].dians]=;
}else{
return false;
}
}
var start=false;
for(var i=;i
以上4步,是我认为的主要的4个函数,其他的函数,如初始化,事件注册等,在源码已有注释,写的不好勿喷。
JavaScript实现斗地主游戏的思路就给大家介绍这么多,希望对大家有所帮助!
相关标签:js斗地主
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
PHP怎么做斗地主,JavaScript实现斗地主游戏的思路_javascript技巧相关推荐
- javascript php xmlhttp file,xmlHTTP实例_javascript技巧
其实也没有什么特别的地方,主要是看了微软VBA对象手册,发现可以直接用adodbStream转charSet, 以前看到的例子都是用VBScript来转的,所以就写了一个纯Javascript的例子 ...
- php js漂浮,基于javascript实现全屏漂浮广告_javascript技巧
本文实例为大家分享javascript实现全屏漂浮广告,供大家参考,具体内容如下 主要使用方法 网页可见区域宽:document.body.clientWidth; 网页可见区域高:document. ...
- php util.js,javascript中一些util方法汇总_javascript技巧
/***************原生对象工类方法****************/ /** * 判断非空 * @param obj * @returns {boolean} */ function i ...
- javascript开发HTML5游戏--斗地主(单机模式part3)
最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务 ...
- javascript开发HTML5游戏--斗地主(单机模式part2)
最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务 ...
- html+css+javascript实现小游戏2048(详解,附源代码)
html+css+javascript实现小游戏2048(详解,附源代码) 1.上下左右的移动原理相同,这里只详细说明向上移动的方法 2.这里的上下左右由wasd四个键控制 3-小方块空的意思就是没数 ...
- 纯JavaScript入门级小游戏:兔子抢金币(附演示地址+源码)
Hello,大家好,我是兔哥,我又来分享好玩的入门级项目啦. 今天给大家带来的是一个纯JavaScript入门级小游戏:兔子抢金币,规则非常简单,控制屏幕上的兔子去接天上掉下来的金币,接满20个就可以 ...
- JavaScript打字小游戏
上半年自学了JavaScript,然后就做了个打字小游戏玩玩. 功能模块: 程序设计: 1.可选择游戏时间,显示倒计时 ...
- 原生JavaScript实现弹球游戏
原生JavaScript实现弹球游戏.游戏源码请到http://download.csdn.net/detail/zhangjinpeng66/6276567下载.点击图中央的三角图形开始. 开始后的 ...
- 渡一教育公开课web前端开发JavaScript精英课学习笔记(三十一)JavaScript消灭小星星游戏
JavaScript消灭小星星游戏 <!DOCTYPE html> <html lang="en"><head><meta charset ...
最新文章
- 技术图文:如何利用 C# 爬取 ONE 的交易数据?
- P3项目全球模板狗血设置之一 --- 发货到成本中心需要输入Customer
- php 返回数组 键名,php array_keys 返回数组的键名
- django模板导入js,css等外部文件
- 剪切粘贴时总是上次的内容_【Procreate 迷你课堂】#4 三指快速拷贝及粘贴
- 应该在什么时候使用Hadoop
- java内存模型---学习笔记
- 华为P40 Pro将搭载索尼IMX 700传感器:支持十六像素合一
- 添加简单的linux内核模块,操作系统实践 第12章-添加最简单的Linux内核模块.ppt
- 数据库系统工程师5天修炼_程序员逆袭之路,5年IT人生从电脑装机到技术大神,人生不认输...
- Linux命令:tac
- 2008 r2 server sql 中文版补丁_Microsoft SQL Server 2008 R2 SP3补丁 64位 官方免费版
- qcc烧录工具/qcc全系列量产单个烧录工具烧录软件qcc3020/3040/5124/5126/5144
- ISODATA聚类分析算法原理与C++实现
- 工信部发布2015年中国软件业务收入百强发展报告(zz)
- VisionPro二次开发——C#计算旋转中心
- 51单片机直流电机PID速度控制正反转控制(红外光电测速)LCD1602 L298N
- 学校校园学生寝室管理查寝打分系统 毕业设计毕设源码毕业论文开题报告参考(4)网站和学生功能
- 一周热图|“惊鸿仙子”俞飞鸿代言日本高端美容仪品牌雅萌;“姐圈顶流”刘敏涛携手良品铺子总裁直播带货...
- 一个程序员去英国之申请ATAS
热门文章
- Junit4 initializationError初始化错误 终于解决了!!!
- Android常用控件-02
- DPDK初始化hugepages
- 九宫怎么排列和使用_奇门遁甲九宫数字 九宫数字的排列和算法
- IE提示“Internet Explorer无法打开站点XX,已终止操作”的解决办法
- 基于java的健身房管理系统的设计与实现
- 中国自动上弦手表市场趋势报告、技术动态创新及市场预测
- DataWhale-动手数据分析-Task01:数据加载及探索性数据分析
- 如何制作简单的日历html5,js+html制作简单日历的方法
- java获取上周和上上周的开始时间和结束时间