JAVA学习--扎金花
来源:互联网 发布:五分钟动量 源码 编辑:程序博客网 时间:2024/06/11 08:09
JAVA编写扎金花
import java.util.ArrayList;import java.util.Random;/** * 砸金花游戏 程序开始时要用户输入赌注,并在一副牌中随机发两手牌, 每手牌三张,然后比较这两手牌的大小,若A比B大, 则用户赢得赌注,反之,则输掉赌注。 * 每手牌的大小比较规则: * 1 三条>同花顺>同花>顺子>对子>单张 * 2 处于一级别的两手牌比较最大的一张牌的大小 * 3 若两手牌同为同一级别且最大的一张牌一样,则比较剩下的牌 */public class Cards { static Random random = new Random(); /** * 所有的牌13*4=52 第一位1表示黑桃,2表示红桃,3表示草花,4表示方块 后两位表示大小14表示A,13表示K。。。。02表示2 */ static ArrayList<Integer> allCards = new ArrayList<Integer>() { { add(114); add(113); add(112); add(111); add(110); add(109); add(108); add(107); add(106); add(105); add(104); add(103); add(102); add(214); add(213); add(212); add(211); add(210); add(209); add(208); add(207); add(206); add(205); add(204); add(203); add(202); add(314); add(313); add(312); add(311); add(310); add(309); add(308); add(307); add(306); add(305); add(304); add(303); add(302); add(414); add(413); add(412); add(411); add(410); add(409); add(408); add(407); add(406); add(405); add(404); add(403); add(402); } }; static int personOne[] = new int[3]; static int personTwo[] = new int[3]; public static void main(String[] args) { // 发牌 deal(); // 判断级别 int i = rank(personOne); int j = rank(personTwo); // 判断大小 determine(i, j); } // 随机发牌 public static void deal() { for (int i = 0; i < 3; i++) { int k = random.nextInt(allCards.size()); personOne[i] = allCards.get(k); allCards.remove(k); } // System.out.println(personOne[0] + " " + personOne[1] + " "+ // personOne[2] + " "); System.out.print("玩家1的牌:"); change(personOne); for (int i = 0; i < 3; i++) { int k = random.nextInt(allCards.size()); personTwo[i] = allCards.get(k); allCards.remove(k); } // System.out.println(personTwo[0] + " " + personTwo[1] + " "+ // personTwo[2] + " "); System.out.print("玩家2的牌:"); change(personTwo); } // 所发的牌所属的级别 public static int rank(int person[]) { // 用i的大小表示豹子(i=6)>同花顺(5)>同花(4)>顺子(3)>对子(2)>单张(1) int i = 0; // 三张牌的花色 int huase1 = person[0] / 100; int huase2 = person[1] / 100; int huase3 = person[2] / 100; // 三张牌的大小 int daxiao1 = person[0] - person[0] / 100 * 100; int daxiao2 = person[1] - person[1] / 100 * 100; int daxiao3 = person[2] - person[2] / 100 * 100; // 三张牌中最大的 int big = daxiao1 > daxiao2 ? daxiao1 : daxiao2; int max = big > daxiao3 ? big : daxiao3; // 三张牌中最小的 int small = daxiao1 < daxiao2 ? daxiao1 : daxiao2; int min = small < daxiao3 ? small : daxiao3; // 三张牌中处于中间的 int mid; if (daxiao1 != max && daxiao1 != min) { mid = daxiao1; } else if (daxiao2 != max && daxiao2 != min) { mid = daxiao2; } else { mid = daxiao3; } if (daxiao1 == daxiao2 && daxiao2 == daxiao3) {// 豹子 i = 6; System.out.println("豹子!"); } else if ((huase1 == huase2 && huase2 == huase3) && (max - min == 2 && daxiao1 != daxiao3 && daxiao2 != daxiao3 && daxiao1 != daxiao2)) {// 同花顺 i = 5; System.out.println("同花顺!"); } else if (huase1 == huase2 && huase2 == huase3) {// 同花 i = 4; System.out.println("同花!"); } else if (max - min == 2 && daxiao1 != daxiao3 && daxiao2 != daxiao3 && daxiao1 != daxiao2) {// 顺子 i = 3; System.out.println("顺子!"); } else if ((daxiao1 == daxiao2) || (daxiao3 == daxiao2) || (daxiao1 == daxiao3)) {// 对子 i = 2; System.out.println("对子!"); } else {// 单张 i = 1; System.out.println("单张!"); } return i; } // 判断两人牌面的大小 public static int determine(int i, int j) { if (i > j) { System.out.println("玩家1获胜!"); } else if (i < j) { System.out.println("玩家2获胜!"); } else if (i == j) { // 玩家1三张牌的大小 int Onedaxiao1 = personOne[0] - personOne[0] / 100 * 100; int Onedaxiao2 = personOne[1] - personOne[1] / 100 * 100; int Onedaxiao3 = personOne[2] - personOne[2] / 100 * 100; // 玩家1三张牌中最大的 int Onebig = Onedaxiao1 > Onedaxiao2 ? Onedaxiao1 : Onedaxiao2; int Onemax = Onebig > Onedaxiao3 ? Onebig : Onedaxiao3; // 玩家1三张牌中最小的 int Onesmall = Onedaxiao1 < Onedaxiao2 ? Onedaxiao1 : Onedaxiao2; int Onemin = Onesmall < Onedaxiao3 ? Onesmall : Onedaxiao3; // 玩家1三张牌中处于中间的 int Onemid; if (Onedaxiao1 != Onemax && Onedaxiao1 != Onemin) { Onemid = Onedaxiao1; } else if (Onedaxiao2 != Onemax && Onedaxiao2 != Onemin) { Onemid = Onedaxiao2; } else { Onemid = Onedaxiao3; } // 玩家2三张牌的大小 int Twodaxiao1 = personTwo[0] - personTwo[0] / 100 * 100; int Twodaxiao2 = personTwo[1] - personTwo[1] / 100 * 100; int Twodaxiao3 = personTwo[2] - personTwo[2] / 100 * 100; // 玩家2三张牌中最大的 int Twobig = Twodaxiao1 > Twodaxiao2 ? Twodaxiao1 : Twodaxiao2; int Twomax = Twobig > Twodaxiao3 ? Twobig : Twodaxiao3; // 玩家2三张牌中最小的 int Twosmall = Twodaxiao1 < Twodaxiao2 ? Twodaxiao1 : Twodaxiao2; int Twomin = Twosmall < Twodaxiao3 ? Twosmall : Twodaxiao3; // 玩家2三张牌中处于中间的 int Twomid; if (Twodaxiao1 != Twomax && Twodaxiao1 != Twomin) { Twomid = Twodaxiao1; } else if (Twodaxiao2 != Twomax && Twodaxiao2 != Twomin) { Twomid = Twodaxiao2; } else { Twomid = Twodaxiao3; } if (Onemax > Twomax) { System.out.println("玩家1获胜!"); } else if (Onemax < Twomax) { System.out.println("玩家2获胜!"); } else if (Onemax == Twomax && Onemid > Twomid) { System.out.println("玩家1获胜!"); } else if (Onemax == Twomax && Onemid < Twomid) { System.out.println("玩家2获胜!"); } else if (Onemax == Twomax && Onemid == Twomid && Onemin > Twomin) { System.out.println("玩家1获胜!"); } else if (Onemax == Twomax && Onemid == Twomid && Onemin < Twomin) { System.out.println("玩家2获胜!"); } else { System.out.println("玩家1和玩家2牌一样大!"); } } return 0; } // 将牌以数组转换为字符串表示 public static void change(int person[]) { String huase = null; String daxiao = null; for (int i = 0; i < 3; i++) { int huaSe = person[i] / 100; int daXiao = person[i] - person[i] / 100 * 100; // System.out.println(huaSe + " " + daXiao); switch (huaSe) { case 1: huase = "黑桃"; break; case 2: huase = "红桃"; break; case 3: huase = "草花"; break; case 4: huase = "方块"; break; } switch (daXiao) { case 14: daxiao = "A"; break; case 13: daxiao = "K"; break; case 12: daxiao = "Q"; break; case 11: daxiao = "J"; break; case 10: daxiao = "10"; break; case 9: daxiao = "9"; break; case 8: daxiao = "8"; break; case 7: daxiao = "7"; break; case 6: daxiao = "6"; break; case 5: daxiao = "5"; break; case 4: daxiao = "4"; break; case 3: daxiao = "3"; break; case 2: daxiao = "2"; break; } System.out.print(huase + daxiao + " "); } System.out.println(); }}
0 0
- JAVA学习--扎金花
- JAVA学习练习(扎金花与21点)
- 简易扎金花java程序
- 扎金花
- 扎金花
- 扎金花赌博小程序JAVA源码
- 扎金花大小比较算法(Java版)
- javase扎金花程序
- 扎金花概率详解
- 搜狐 扎金花
- 扎金花扑克牌逻辑判定
- 搜狐笔试题:扎金花
- 牛客网---2016---搜狐扎金花
- 扑克游戏-砸金花--java语言--骆昊
- java简易炸金花的实现
- 用JAVA语言编写诈金花程序代码
- 写一个《扎金花》程序自己玩。
- 扎金花,单人,局域网均可 Delphi7
- C#入门6.12——字符串的复制
- 关于log4j.xml发送邮件
- VC++动态链接库(DLL)编程深入浅出
- 树状数组,模板 注意事项
- CPU阿甘之烦恼
- JAVA学习--扎金花
- vs2010 DirectShow(windows sdk v7.1)配置
- 异步加载框架AsyncTask简易版
- Rocketmq生产者和push消费者demo
- 生活中碰到各种违法行为,恶人行为,怎么做可以有好效果?
- Java中汉字乱码问题
- Android之制作短信发送器
- Java中的final关键字详解
- Java文件操作(File类)