本文知识给大家分享一下使用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技巧相关推荐

  1. javascript php xmlhttp file,xmlHTTP实例_javascript技巧

    其实也没有什么特别的地方,主要是看了微软VBA对象手册,发现可以直接用adodbStream转charSet, 以前看到的例子都是用VBScript来转的,所以就写了一个纯Javascript的例子 ...

  2. php js漂浮,基于javascript实现全屏漂浮广告_javascript技巧

    本文实例为大家分享javascript实现全屏漂浮广告,供大家参考,具体内容如下 主要使用方法 网页可见区域宽:document.body.clientWidth; 网页可见区域高:document. ...

  3. php util.js,javascript中一些util方法汇总_javascript技巧

    /***************原生对象工类方法****************/ /** * 判断非空 * @param obj * @returns {boolean} */ function i ...

  4. javascript开发HTML5游戏--斗地主(单机模式part3)

    最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务 ...

  5. javascript开发HTML5游戏--斗地主(单机模式part2)

    最近学习使用了一款HTML5游戏引擎(青瓷引擎),并用它尝试做了一个斗地主的游戏,简单实现了单机对战和网络对战,代码可已放到github上,在此谈谈自己如何通过引擎来开发这款游戏的. 客户端代码 服务 ...

  6. html+css+javascript实现小游戏2048(详解,附源代码)

    html+css+javascript实现小游戏2048(详解,附源代码) 1.上下左右的移动原理相同,这里只详细说明向上移动的方法 2.这里的上下左右由wasd四个键控制 3-小方块空的意思就是没数 ...

  7. 纯JavaScript入门级小游戏:兔子抢金币(附演示地址+源码)

    Hello,大家好,我是兔哥,我又来分享好玩的入门级项目啦. 今天给大家带来的是一个纯JavaScript入门级小游戏:兔子抢金币,规则非常简单,控制屏幕上的兔子去接天上掉下来的金币,接满20个就可以 ...

  8. JavaScript打字小游戏

    上半年自学了JavaScript,然后就做了个打字小游戏玩玩. 功能模块:                                         程序设计: 1.可选择游戏时间,显示倒计时 ...

  9. 原生JavaScript实现弹球游戏

    原生JavaScript实现弹球游戏.游戏源码请到http://download.csdn.net/detail/zhangjinpeng66/6276567下载.点击图中央的三角图形开始. 开始后的 ...

  10. 渡一教育公开课web前端开发JavaScript精英课学习笔记(三十一)JavaScript消灭小星星游戏

    JavaScript消灭小星星游戏 <!DOCTYPE html> <html lang="en"><head><meta charset ...

最新文章

  1. 技术图文:如何利用 C# 爬取 ONE 的交易数据?
  2. P3项目全球模板狗血设置之一 --- 发货到成本中心需要输入Customer
  3. php 返回数组 键名,php array_keys 返回数组的键名
  4. django模板导入js,css等外部文件
  5. 剪切粘贴时总是上次的内容_【Procreate 迷你课堂】#4 三指快速拷贝及粘贴
  6. 应该在什么时候使用Hadoop
  7. java内存模型---学习笔记
  8. 华为P40 Pro将搭载索尼IMX 700传感器:支持十六像素合一
  9. 添加简单的linux内核模块,操作系统实践 第12章-添加最简单的Linux内核模块.ppt
  10. 数据库系统工程师5天修炼_程序员逆袭之路,5年IT人生从电脑装机到技术大神,人生不认输...
  11. Linux命令:tac
  12. 2008 r2 server sql 中文版补丁_Microsoft SQL Server 2008 R2 SP3补丁 64位 官方免费版
  13. qcc烧录工具/qcc全系列量产单个烧录工具烧录软件qcc3020/3040/5124/5126/5144
  14. ISODATA聚类分析算法原理与C++实现
  15. 工信部发布2015年中国软件业务收入百强发展报告(zz)
  16. VisionPro二次开发——C#计算旋转中心
  17. 51单片机直流电机PID速度控制正反转控制(红外光电测速)LCD1602 L298N
  18. 学校校园学生寝室管理查寝打分系统 毕业设计毕设源码毕业论文开题报告参考(4)网站和学生功能
  19. 一周热图|“惊鸿仙子”俞飞鸿代言日本高端美容仪品牌雅萌;“姐圈顶流”刘敏涛携手良品铺子总裁直播带货...
  20. 一个程序员去英国之申请ATAS

热门文章

  1. Junit4 initializationError初始化错误 终于解决了!!!
  2. Android常用控件-02
  3. DPDK初始化hugepages
  4. 九宫怎么排列和使用_奇门遁甲九宫数字 九宫数字的排列和算法
  5. IE提示“Internet Explorer无法打开站点XX,已终止操作”的解决办法
  6. 基于java的健身房管理系统的设计与实现
  7. 中国自动上弦手表市场趋势报告、技术动态创新及市场预测
  8. DataWhale-动手数据分析-Task01:数据加载及探索性数据分析
  9. 如何制作简单的日历html5,js+html制作简单日历的方法
  10. java获取上周和上上周的开始时间和结束时间