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
原创粉丝点击