求j2me 棋牌游戏-斗地主 的算法?

问题描述

求j2me棋牌游戏-斗地主的算法?

解决方案

解决方案二:
算法
解决方案三:
代码例子
解决方案四:
首先是,判断牌的大小然后,电脑AI,出牌,跟牌,再,出牌的AI,放下家?正常出牌,按照手上牌优先出的顺序出跟牌的AI,有的比他大的,判断是否要打,还是不打
解决方案五:
要源代码例子
解决方案六:
竹木一瓜;看过你的回复,首先谢谢。如果、你能贴出点,实现方法的代码更好。
解决方案七:
这玩意儿要收费的
解决方案八:
/***规则判断**@authorzg.shi*/publicinterfaceRule{publicbooleanvalid(int[]cards);/***单牌*/publicstaticfinalRuleSingleRule=newRule(){publicbooleanvalid(int[]cards){returncards.length==1;}};/***对牌*/publicstaticfinalRuleDoubleRule=newRule(){publicbooleanvalid(int[]cards){if(cards.length==2){return(cards[0]/4==cards[1]/4);}returnfalse;}};/***三张*/publicstaticfinalRuleTripleRule=newRule(){publicbooleanvalid(int[]cards){if(cards.length==3){if(cards[0]/4==cards[1]/4){return(cards[0]/4==cards[2]/4);}}returnfalse;}};/***炸弹*/publicstaticfinalRuleFourRule=newRule(){publicbooleanvalid(int[]cards){if(cards.length==3){if(cards[0]/4==cards[1]/4){if(cards[0]/4==cards[2]/4){return(cards[0]/4==cards[3]/4);}}}returnfalse;}};/***顺子*/publicstaticfinalRuleIncreaseRule=newRule(){publicbooleanvalid(int[]cards){if(cards.length>=5){intm=cards[0]/4;for(inti=1;i<cards.length;++i){if(cards[i]/4!=m+i){returnfalse;}}returntrue;}returnfalse;}};}

解决方案九:
还有他们大小的比较
解决方案十:
下文还有吗,关注中
解决方案十一:
以前C#写过一个月,后来果断放弃,总觉得顾此失彼。下面是一个牌型检查,和是否可以接版。用了大量的LINQ,但代码依然相当可观usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespace欢乐斗地主.GameRule{publicclassRule{#region检查指定的扑克牌是否符合一手牌规则///<summary>///检查指定的扑克牌是否符合一手牌规则///</summary>///<paramname="cards">要检查的牌[按个数排序]</param>///<returns>是/否</returns>publicstaticboolIsMatch(List<CardStruct>cards){if(CheckCardType(cards)==AllowCardType.非法牌型)returnfalse;elsereturntrue;}#endregion#region检查指定的扑克牌是否符合接牌规则///<summary>///检查指定的扑克牌是否符合接牌规则///</summary>///<paramname="lastCards">上一手牌</param>///<paramname="thisCards">要检查的牌[按个数排序]</param>///<returns>是/否</returns>publicstaticboolIsMatch(List<CardStruct>lastCards,List<CardStruct>thisCards){AllowCardTypeafter=CheckCardType(thisCards);//不为0if(thisCards.Count==0)returnfalse;//不能为非法牌型if(after==AllowCardType.非法牌型)returnfalse;//王炸可以接任何牌型if(after==AllowCardType.王炸)returntrue;AllowCardTypebefore=CheckCardType(lastCards);//炸弹可接非炸弹牌型if(after==AllowCardType.炸弹&&before!=AllowCardType.炸弹)returntrue;//除以上情况外,要求扑克牌的张数必须相等if(lastCards.Count!=thisCards.Count)returnfalse;//类型必须相等if(after!=before)returnfalse;//类型、张数都相等,则只需比较第一张牌的大小即可if(lastCards[0].Value<thisCards[0].Value)returntrue;returnfalse;}#endregion#region检查一组牌的类型CheckCardType///<summary>///检查一组牌的类型///</summary>///<paramname="cards">想要检查的牌的泛型集合[按个数排序]</param>///<returns>该牌的类型</returns>publicstaticAllowCardTypeCheckCardType(List<CardStruct>cards){AllowCardTyperesult;switch(cards.Count){case0:result=AllowCardType.非法牌型;break;case1:result=AllowCardType.单张;break;case2://对子if(cards[0]==cards[1])result=AllowCardType.对子;//王炸elseif(cards[0].Value+cards[1].Value==33)result=AllowCardType.王炸;elseresult=AllowCardType.非法牌型;break;case3:if(cards[0]==cards[1]&&cards[0]==cards[2])result=AllowCardType.三个;elseresult=AllowCardType.非法牌型;break;case4://3带1result=Check3With1(cards);//炸弹if(cards.All(c=>c==cards[0]))result=AllowCardType.炸弹;break;case5://3带一对result=Check3With1(cards);if(result!=AllowCardType.非法牌型)break;//顺子elseresult=ChenckStaight(cards);break;case6://顺子result=ChenckStaight(cards);if(result!=AllowCardType.非法牌型)break;//连对result=CheckDoubleStaight(cards);if(result!=AllowCardType.非法牌型)break;//飞机三顺result=CheckPlane(cards);if(result!=AllowCardType.非法牌型)break;//4带2或4带一对result=Check4With2(cards);break;default://顺子result=ChenckStaight(cards);if(result!=AllowCardType.非法牌型)break;//连对result=CheckDoubleStaight(cards);if(result!=AllowCardType.非法牌型)break;//飞机result=CheckPlane(cards);break;}returnresult;}#endregion#region检查三带一或三带一对privatestaticAllowCardTypeCheck3With1(List<CardStruct>tenkaiCards){//牌值只能有两种if(tenkaiCards.Distinct(newSortValue()).Count()!=2)returnAllowCardType.非法牌型;//其中一种的数量有三个varcardValueGroup=tenkaiCards.Any(c=>tenkaiCards.Where(d=>d==c).Count()==3);if(!cardValueGroup)returnAllowCardType.非法牌型;//分析具体类型if(tenkaiCards.Count==4){returnAllowCardType.三带一;}else{returnAllowCardType.三带一对;}}#endregion#region检查四带2,四带两对privatestaticAllowCardTypeCheck4With2(List<CardStruct>tenkaiCards){//牌值只能有两种或三种varcardValueCount=tenkaiCards.Distinct(newSortValue()).Count();if(cardValueCount!=2&&cardValueCount!=3)returnAllowCardType.非法牌型;//其中一种的数量有四个varcardValueGroup=tenkaiCards.Any(c=>tenkaiCards.Where(d=>d==c).Count()==4);if(!cardValueGroup)returnAllowCardType.非法牌型;if(tenkaiCards.Count==6){returnAllowCardType.四带二;}else{returnAllowCardType.四带两对;}}#endregion#region检查顺子privatestaticAllowCardTypeChenckStaight(List<CardStruct>tenkaiCards){//牌面值与牌的数量相等varvalueCount=tenkaiCards.Distinct(newSortValue()).Count();if(valueCount!=tenkaiCards.Count)returnAllowCardType.非法牌型;//不包含2,小王,大王if(tenkaiCards.Any(c=>c.Value==15))returnAllowCardType.非法牌型;if(tenkaiCards.Any(c=>c.Value==16))returnAllowCardType.非法牌型;if(tenkaiCards.Any(c=>c.Value==17))returnAllowCardType.非法牌型;//排序后字面值递减tenkaiCards=tenkaiCards.OrderByDescending(c=>c).ToList();for(inti=0;i<tenkaiCards.Count-1;i++){if(tenkaiCards[i].Value-1!=tenkaiCards[i+1].Value){returnAllowCardType.非法牌型;}}returnAllowCardType.顺子;}#endregion#region检查连对privatestaticAllowCardTypeCheckDoubleStaight(List<CardStruct>tenkaiCards){//牌面值正好是总数的一半vardoubleDistinct=tenkaiCards.Distinct(newSortValue());if(doubleDistinct.Count()*2!=tenkaiCards.Count)returnAllowCardType.非法牌型;//对子去重复后是顺子if(ChenckStaight(doubleDistinct.ToList())!=AllowCardType.非法牌型)returnAllowCardType.连对;elsereturnAllowCardType.非法牌型;}#endregion#region检查是否为飞机privatestaticAllowCardTypeCheckPlane(List<CardStruct>tenkaiCards){//牌面值3个的个数vartrebleDictinct=tenkaiCards.Where(c=>tenkaiCards.Count(d=>d==c)==3).Distinct(newSortValue());//检查飞机是否为顺子if(ChenckStaight(trebleDictinct.ToList())==AllowCardType.非法牌型)returnAllowCardType.非法牌型;if(trebleDictinct.Count()*3==tenkaiCards.Count){returnAllowCardType.飞机三顺;}elseif(trebleDictinct.Count()*4==tenkaiCards.Count){returnAllowCardType.飞机带单张;}elseif(trebleDictinct.Count()*5==tenkaiCards.Count){//检查其他的牌是否都为对子varotherDoubleCards=tenkaiCards.Where(c=>tenkaiCards.Count(d=>d==c)==2).Count();if(otherDoubleCards+trebleDictinct.Count()*3==tenkaiCards.Count)returnAllowCardType.飞机带一对;}returnAllowCardType.非法牌型;}#endregion}}

解决方案十二:
我觉得规则比较容易搞定比如哪种结合可以出牌哪种比哪种厉害关键是怎么出的问题其实可以做到电脑玩家完全知道人类玩家的全牌的关键是能压的过时候是否电脑一定要出会不会AI到像人一样有些放牌欲擒故纵的思维这个比较难了就如果是一位的能压的过就出牌这就是QQ斗地主中的自动托管真是2到家了
解决方案十三:
电脑有思维。。。楼上你想的太远了
解决方案十四:
我发现大家都好强大,向各位前辈们学习了
解决方案十五:
涉及到人工智能的东西,就不是一会儿搞的好的了~~~

时间: 2024-10-23 05:54:47

求j2me 棋牌游戏-斗地主 的算法?的相关文章

求j2me小游戏源代码

问题描述 本人急需一个j2me小游戏源代码,希望可以共享一下 解决方案 解决方案二:importjava.util.*;importjavax.microedition.lcdui.*;/***贪吃蛇游戏*/publicclassSnakeCanvasextendsCanvasimplementsRunnable{/**存储贪吃蛇节点坐标,其中第二维下标为0的代表x坐标,第二维下标是1的代表y坐标*/int[][]snake=newint[200][2];/**已经使用的节点数量*/intsna

棋牌游戏网站变相赌博:巨型产业链浮现

一家正规棋牌游戏网站变相赌博,一年竟然获利7.5亿元.近日浙江省温州市一家棋牌网站,被有关部门查处.而实际上,上述棋牌网站被查只不过是揭开了网络赌博的冰山一角,在目前国内大大小小的棋牌游戏平台上,每一天,都在通过虚拟货币产生巨大的交易额度.输钱速度比打麻将还快北京白领莫岩工作闲暇之余曾经玩过一家大型网站的在线棋牌游戏--斗地主."可是没有成为会员的普通玩家,无论怎么用心地玩,只有负分一直在增加.仿佛发牌规则被一只无形的手在操控,即使你把牌算得多么精确,如果不付费成为网站会员的话,你根本无法得到积

mfc-MFC 棋牌游戏 执行文件说是被病毒感染,求大神帮忙

问题描述 MFC 棋牌游戏 执行文件说是被病毒感染,求大神帮忙 解决方案 程序是你写的么?有源代码么?这个提示说明程序中有判断自身文件是否被修改的逻辑. 解决方案二: 代码中是不是有一些可疑操作.

棋牌游戏PC端格局已定 联众等企业圈地移动

中新网11月21日电 据CNNIC统计数据显示,截止去年,网络棋牌游戏用户2.59亿,占游戏用户80%.已有十四年运营经验的联众公司,在棋牌类网游方面的用户和经验积累使其稳坐行业顶尖位置.今年,联众公司在PC端表现卓然,增势迅猛.据数据统计,联众游戏目前有近300款,月活跃用户已达1500万. 近期,移动互联娱乐产业日渐壮大,吸引了不少游戏厂商转型和投资.2012年上半年,手游市场实际销售收入已经达到12.6亿人民币,同比增长在5成以上.腾讯.完美.盛大等传统端游厂商已经开始拓展移动端业务.在功

J2ME手机游戏开发日记1

J2ME新手,做了一个游戏的项目,其中有些体会,觉得有些东西还是可以拿出来和大家分享.说错了还请包涵. 开发环境: windows2000+JBuilder X+semc_j2me_sdk_2_1_4_beta 从来没有接触过这个方面,因为小组一个项目要开始学J2ME,看了两天的书,发现其实JDK还是很简单的.总共也就那几个类.只是如果要考虑到资源和性能的最佳优化的话,算法和数据结构的要求比较高. 先说环境的搭建:1.windows2000(这个不用说了)2.JBuilder X(其他版本的JB

求手机版的斗地主源码

问题描述 求手机版的斗地主源码 求单机版Cocos2dX的斗地主源码一份,做毕业设计用的,万分感谢啊急求啊 有的话可以发份吗吗??毕业狗急求分毕业设计,万分感谢啊 解决方案 Android版手机斗地主游戏源码 解决方案二:

棋牌游戏服务器架构: 总体设计

      首先要说明的是, 这个棋牌游戏的服务器架构参考了网狐棋牌的架构.网狐棋牌最令人印象深刻的是其稳定性和高网络负载.它的一份压力测试报告上指出:一台双核r的INTEL Xeon 2.8CPU加上2G内存和使用共享100M光纤的机子能够支持5000人同时在线游戏.       在研究其服务器框架后发现,它的网络部分确实是比较优化的.它主要采用了Windows提供的IO完成端口来实现其网络组件.本服务器虽然参考了其设计,但是还是有很大的不同,因为这个服务器框架主要是用在Linux系统之上,而

c++-关于一个游戏中拦截算法的简单疑问

问题描述 关于一个游戏中拦截算法的简单疑问 在一本人工智能书上看到一个拦截算法 主要代码如图. 书中所述大概过程是: 用追击者和猎物的速度算出相对追击者的速度 然后算出两者之间的位移 再通过位移除以速度求出拦截所需要的时间 最后用猎物速度乘以时间加上它的位置算出即将拦截的位置 最后再通过其他方法让追击者朝着这个拦截的位置去拦截 然而个人理解就是: 追击者要实现拦截 根本问题就是求追击者的速度(准确来说是速度的方向) 然而要实现拦截则需要追击者本身的速度 这成了个矛盾 然后我把这原理用代码在uni

网络创富新形式 棋牌游戏居榜首

硅谷网10月22日消息 网络游戏自诞生以来,便打造了 大量百万富翁.网络中的棋牌游戏更是使 众多中小投资者跨入百万.甚至千万富豪的行列,它对我国的经济贡献起到了不可替代的作用.2011年底召开的"十七届六中全会",在 2016年的发展规划中将文化产业发展确定为国民经济支柱产业,为网络游戏带来了更为广阔的发展前景. 网络游戏,尤其是网络棋牌游戏具有巨大的造富能力,是中小投资者发家致富的捷径,但只有少数人才能从事网络棋牌的经营活动,人们不禁对这种现象产生质疑.这种情况既有主观原因,也有客观