这篇文章主要为大家展示了“java如何实现麻将和牌程序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java如何实现麻将和牌程序”这篇文章吧。
以下是Java编写的麻将和牌程序:
public class MaJiang2 { private boolean jiang=false;//是否找到将 public MaJiang2(){} //花色,判断这个花色是否被减完了(如果没有减完自然没有和) private int huase(int[] hua) { if (hua.length==7) { //判断字,自比较特殊,没有顺 for (int i=0;i<HUA.LENGTH ;i++ ) { if (hua[i]==3||hua[i]==4) { hua[i]=0; huase(hua); } //如果字有两个,肯定是将 if (hua[i]==2&&!jiang) { hua[i]=0; jiang=true; huase(hua); } } } else { for (int i=0;i<HUA.LENGTH ;i++ ) { //如果没有将,先把将减出去 if (!jiang&&hua[i]>=2) { hua[i]=hua[i]-2; jiang=true; int fanhui=huase(hua); //如果递归回来依旧没有减完,则把将加回去 if (fanhui!=0) { hua[i]=hua[i]+2; jiang=false; } } if (hua[i]!=0&&i<7&&hua[i+1]!=0&&hua[i+2]!=0) { hua[i]--; hua[i+1]--; hua[i+2]--; huase(hua); int fanhui=huase(hua); //如果递归回来依旧没有减完,减去的加回去 if (fanhui!=0) { hua[i]++; hua[i+1]++; hua[i+2]++; } } if (hua[i]==3||hua[i]==4) { int temp=hua[i]; hua[i]=0; huase(hua); int fanhui=huase(hua); //如果递归回来依旧没有减完,减去的加回去 if (fanhui!=0) { hua[i]++; hua[i]=temp; } } } } int re=0; //最后判断减没减完 for (int i=0;i<HUA.LENGTH ;i++ ) { re=re+hua[i]; } return re; } public void Hu(int[] aWan,int[] aTiao,int[] aTong,int[] aZi) { //先从字开始,如果某一花色计算完之后依旧不为0,则肯定不和。如果所有的花色全部减完了,就和了,呵呵:-〉 int jieguo=huase(aZi); if (jieguo!=0) { System.out.println("没和"); } else if ((jieguo=huase(aWan))!=0) { System.out.println("没和"); } else if ((jieguo=huase(aTiao))!=0) { System.out.println("没和"); } else if ((jieguo=huase(aTong))!=0) { System.out.println("没和"); } else { System.out.println("和了,真不容易,一脑门子汉"); } } public static void main(String[] args) { MaJiang2 mj=new MaJiang2(); int[] w={3,1,1,2,1,1,1,1,3}; int[] ti={0,0,0,0,0,0,0,0,0}; int[] to={0,0,0,0,0,0,0,0,0}; int[] z={0,0,0,0,0,0,0}; mj.Hu(w,ti,to,z); } } |
以上是“java如何实现麻将和牌程序”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。