拼搏

拼搏

Java版斗地主代码免费复制

admin
public class Doudizhu {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        String[] huashe1 = {"♥", "♠", "♦", "♣"};        int[] daxiao1 = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};        String[] pai1 = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};        ArrayList<Pai> list = new ArrayList<>();        for (String s : huashe1) {            for (int i = 0; i < daxiao1.length; i++) {                list.add(new Pai(s, pai1[i], daxiao1[i]));            }        }        list.add(new Pai("", "大王", 50));        list.add(new Pai("", "小王", 20));        Collections.shuffle((List<?>) list);        ArrayList<Pai> player1 = new ArrayList<>();        ArrayList<Pai> player2 = new ArrayList<>();        ArrayList<Pai> player3 = new ArrayList<>();        ArrayList<Pai> under = new ArrayList<>();        for (int i = 0; i < list.size(); i++) {            if (i >= list.size() - 3) {                under.add(list.get(i));            } else {                if (i % 3 == 0) {                    player1.add(list.get(i));                } else if (i % 3 == 1) {                    player2.add(list.get(i));                } else {                    player3.add(list.get(i));                }            }        }        System.out.println(under);        int r = new Random().nextInt(51);        if (r % 3 == 0) {            player1.addAll(under);        } else if (r % 3 == 1) {            player2.addAll(under);        } else {            player3.addAll(under);        }        Collections.sort(player1);        Collections.sort(player2);        Collections.sort(player3);        System.out.println(player1);        System.out.println(player2);        System.out.println(player3);        ArrayList<Pai> paikuplayer1 = new ArrayList<>();        ArrayList<Pai> paikuplayer2 = new ArrayList<>();        ArrayList<Pai> paikuplayer3 = new ArrayList<>();        ArrayList<Pai> paikuunderp1 = new ArrayList<>();        ArrayList<Pai> paikuunderp2 = new ArrayList<>();        ArrayList<Pai> paikuunderp3 = new ArrayList<>();        ArrayList<Pai> paikuunder = new ArrayList<>();        String p1;        String p2;        String p3;        if (player1.size() == 20) {            p1 = "地主";            p2 = "玩家一";            p3 = "玩家二";        } else if (player2.size() == 20) {            p1 = "玩家二";            p2 = "地主";            p3 = "玩家一";        } else {            p1 = "玩家一";            p2 = "玩家二";            p3 = "地主";        }        if (player1.size() != 20) {        } else {            System.out.println("==================");            System.out.println(p1 + "的牌为" + player1);            System.out.println("请" + p1 + "出牌");            System.out.println("请输入想要出的牌,输入-1停止出牌");            while (true) {                if (paikuunderp2.size() == 0 && paikuunderp3.size() == 0) {                    paikuunderp1.clear();                } else {                    paikuunderp1.clear();                    System.out.println("请选择,1.出牌 2.要不起 3.过");                    if (sc.nextLine().equals("2")) {                        System.out.println("要不起");                        break;                    }else if(sc.nextLine().equals("3")){                        System.out.println("过");                        break;                    }                }                while (true) {                    System.out.println("请输入要出的牌");                    String a = sc.nextLine();                    if (a.equals("-1")) {                        break;                    } else {                        if (!isTrue(player1, a)) {                            System.out.println("您没有这张牌");                        } else {                            Pai pai = throwcard(player1, a);                            paikuplayer1.add(pai);                            player1.remove(pai);                        }                    }                }                System.out.println("出的牌为" + paikuplayer1);                if (chuPai(paikuplayer1)) {                    System.out.println("可以出牌");                    if (daNi(paikuplayer1, paikuunderp2) && daNi(paikuplayer1, paikuunderp3)) {                        paikuunderp1.addAll(paikuplayer1);                        paikuunder.addAll(paikuplayer1);                        paikuplayer1.clear();                        System.out.println(p1 + "出的牌为" + paikuunderp1);                        paikuunderp3.clear();                        break;                    }                }                System.out.println("不符合规则,请重新出牌");                player1.addAll(paikuplayer1);                Collections.sort(player1);                System.out.println("当前牌库为" + player1);                paikuplayer1.clear();            }            System.out.println("底库中牌为" + paikuunder);        }        if (player2.size() != 20 && paikuunderp1.size() == 0) {        } else {            System.out.println("==================");            System.out.println(p2 + "的牌为" + player2);            System.out.println("请" + p2 + "出牌");            System.out.println("请输入想要出的牌,输入-1停止出牌");            while (true) {                if (paikuunderp1.size() == 0 && paikuunderp3.size() == 0) {                    paikuunderp2.clear();                } else {                    paikuunderp2.clear();                    System.out.println("请出入选择,1.出牌 2.要不起 3.过");                    if (sc.nextLine().equals("2")) {                        System.out.println("要不起");                        break;                    }else if(sc.nextLine().equals("3")){                        System.out.println("过");                        break;                    }                }                while (true) {                    System.out.println("请输入要出的牌");                    String a = sc.nextLine();                    if (a.equals("-1")) {                        break;                    } else {                        if (!isTrue(player2, a)) {                            System.out.println("您没有这张牌");                        } else {                            Pai pai = throwcard(player2, a);                            paikuplayer2.add(pai);                            player2.remove(pai);                        }                    }                }                System.out.println("出的牌为" + paikuplayer2);                if (chuPai(paikuplayer2)) {                    System.out.println("可以出牌");                    if (daNi(paikuplayer2, paikuunderp1) && daNi(paikuplayer2, paikuunderp3)) {                        paikuunderp2.addAll(paikuplayer2);                        paikuunder.addAll(paikuplayer2);                        paikuplayer2.clear();                        System.out.println(p2 + "出的牌为" + paikuunderp2);                        paikuunderp1.clear();                        break;                    }                }                System.out.println("不符合规则,请重新出牌");                player2.addAll(paikuplayer2);                Collections.sort(player2);                System.out.println("当前牌库为" + player2);                paikuplayer2.clear();            }            System.out.println("底库中牌为" + paikuunder);        }        System.out.println("==================");        System.out.println(p3 + "的牌为" + player3);        System.out.println("请" + p3 + "出牌");        System.out.println("请输入想要出的牌,输入-1停止出牌");        while (true) {            if (paikuunderp1.size() == 0 && paikuunderp2.size() == 0) {                paikuunderp3.clear();            } else {                paikuunderp3.clear();                System.out.println("请出入选择,1.出牌 2.要不起 3.过");                if (sc.nextLine().equals("2")) {                    System.out.println("要不起");                    break;                }else if(sc.nextLine().equals("3")){                    System.out.println("过");                    break;                }            }            while (true) {                System.out.println("请输入要出的牌");                String a = sc.nextLine();                if (a.equals("-1")) {                    break;                } else {                    if (!isTrue(player3, a)) {                        System.out.println("您没有这张牌");                    } else {                        Pai pai = throwcard(player3, a);                        paikuplayer3.add(pai);                        player3.remove(pai);                    }                }            }            System.out.println("出的牌为" + paikuplayer3);            if (chuPai(paikuplayer3)) {                System.out.println("可以出牌");                if (daNi(paikuplayer3, paikuunderp2) && daNi(paikuplayer3, paikuunderp1)) {                    paikuunderp3.addAll(paikuplayer3);                    paikuunder.addAll(paikuplayer3);                    paikuplayer3.clear();                    System.out.println(p3 + "出的牌为" + paikuunderp3);                    paikuunderp2.clear();                    break;                }            }            System.out.println("不符合规则,请重新出牌");            player3.addAll(paikuplayer3);            Collections.sort(player3);            System.out.println("当前牌库为" + player3);            paikuplayer3.clear();        }        while (true) {            System.out.println("==================");            System.out.println(p1 + "的牌为" + player1);            System.out.println("请" + p1 + "出牌");            System.out.println("请输入想要出的牌,输入-1停止出牌");            while (true) {                if (paikuunderp2.size() == 0 && paikuunderp3.size() == 0) {                    paikuunderp1.clear();                } else {                    paikuunderp1.clear();                    System.out.println("请出入选择,1.出牌 2.要不起 3.过");                    if (sc.nextLine().equals("2")) {                        System.out.println("要不起");                        break;                    }else if(sc.nextLine().equals("3")){                        System.out.println("过");                        break;                    }                }                while (true) {                    System.out.println("请输入要出的牌");                    String a = sc.nextLine();                    if (a.equals("-1")) {                        break;                    } else {                        if (!isTrue(player1, a)) {                            System.out.println("您没有这张牌");                        } else {                            Pai pai = throwcard(player1, a);                            paikuplayer1.add(pai);                            player1.remove(pai);                        }                    }                }                System.out.println("出的牌为" + paikuplayer1);                if (chuPai(paikuplayer1)) {                    System.out.println("可以出牌");                    if (daNi(paikuplayer1, paikuunderp2) && daNi(paikuplayer1, paikuunderp3)) {                        paikuunderp1.addAll(paikuplayer1);                        paikuunder.addAll(paikuplayer1);                        paikuplayer1.clear();                        System.out.println(p1 + "出的牌为" + paikuunderp1);                        paikuunderp3.clear();                        break;                    } else {                        System.out.println("你的牌太小,管不上");                        break;                    }                }                System.out.println("不符合规则,请重新出牌");                player1.addAll(paikuplayer1);                Collections.sort(player1);                System.out.println("当前牌库为" + player1);                paikuplayer1.clear();            }            System.out.println("底库中牌为" + paikuunder);            if (player1.size() == 0 || player2.size() == 0 || player3.size() == 0) {                System.out.println("游戏结束");                break;            }            System.out.println("==================");            System.out.println(p2 + "的牌为" + player2);            System.out.println("请" + p2 + "出牌");            System.out.println("请输入想要出的牌,输入-1停止输出");            while (true) {                if (paikuunderp1.size() == 0 && paikuunderp3.size() == 0) {                    paikuunderp2.clear();                } else {                    paikuunderp2.clear();                    System.out.println("请出入选择,1.出牌 2.要不起 3.过");                    if (sc.nextLine().equals("2")) {                        System.out.println("要不起");                        break;                    }else if(sc.nextLine().equals("3")){                        System.out.println("过");                        break;                    }                }                while (true) {                    System.out.println("请输入要出的牌");                    String a = sc.nextLine();                    if (a.equals("-1")) {                        break;                    } else {                        if (!isTrue(player2, a)) {                            System.out.println("您没有这张牌");                        } else {                            Pai pai = throwcard(player2, a);                            paikuplayer2.add(pai);                            player2.remove(pai);                        }                    }                }                System.out.println("出的牌为" + paikuplayer2);                if (chuPai(paikuplayer2)) {                    System.out.println("可以出牌");                    if (daNi(paikuplayer2, paikuunderp1) && daNi(paikuplayer2, paikuunderp3)) {                        paikuunderp2.addAll(paikuplayer2);                        paikuunder.addAll(paikuplayer2);                        paikuplayer2.clear();                        System.out.println(p2 + "出的牌为" + paikuunderp2);                        paikuunderp1.clear();                        break;                    }                }                System.out.println("不符合规则,请重新出牌");                player2.addAll(paikuplayer2);                Collections.sort(player2);                System.out.println("当前牌库为" + player2);                paikuplayer2.clear();            }            System.out.println("底库中牌为" + paikuunder);            if (player1.size() == 0 || player2.size() == 0 || player3.size() == 0) {                System.out.println("游戏结束");                break;            }            System.out.println("==================");            System.out.println(p3 + "的牌为" + player3);            System.out.println("请" + p3 + "出牌");            System.out.println("请输入想要出的牌,输入-1停止出牌");            while (true) {                if (paikuunderp1.size() == 0 && paikuunderp2.size() == 0) {                    paikuunderp3.clear();                } else {                    paikuunderp3.clear();                    System.out.println("请出入选择,1.出牌 2.要不起 3.过");                    if (sc.nextLine().equals("2")) {                        System.out.println("要不起");                        break;                    }else if(sc.nextLine().equals("3")){                        System.out.println("过");                        break;                    }                }                while (true) {                    System.out.println("请输入要出的牌");                    String a = sc.nextLine();                    if (a.equals("-1")) {                        break;                    } else {                        if (!isTrue(player3, a)) {                            System.out.println("您没有这张牌");                        } else {                            Pai pai = throwcard(player3, a);                            paikuplayer3.add(pai);                            player3.remove(pai);                        }                    }                }                System.out.println("出的牌为" + paikuplayer3);                if (chuPai(paikuplayer3)) {                    System.out.println("可以出牌");                    if (daNi(paikuplayer3, paikuunderp2) && daNi(paikuplayer3, paikuunderp1)) {                        paikuunderp3.addAll(paikuplayer3);                        paikuunder.addAll(paikuplayer3);                        paikuplayer3.clear();                        System.out.println(p3 + "出的牌为" + paikuunderp3);                        paikuunderp2.clear();                        break;                    }                }                System.out.println("不符合规则,请重新出牌");                player3.addAll(paikuplayer3);                Collections.sort(player3);                System.out.println("当前牌库为" + player3);                paikuplayer3.clear();            }            System.out.println("当前的底牌池" + paikuunder);            if (player1.size() == 0 || player2.size() == 0 || player3.size() == 0) {                System.out.println("游戏结束");                break;            }        }    }
public static int sameNum(ArrayList<Pai> list) {    int max = 0;    for (int i = 0; i < list.size(); i++) {        int num = 0;        for (int j = 0; j < list.size(); j++) {            if (list.get(i).getId() == list.get(j).getId()) {                num++;            }        }        max = max >= num ? max : num;    }    return max;}
   public static boolean chuPai(ArrayList<Pai> list) {        switch (list.size()) {            case 1:                return true;            case 2:                if (list.get(0).getId() == list.get(1).getId()) {                    return true;                } else if (list.get(0).getId() + list.get(1).getId() == 70) {                    return true;                } else {                    return false;                }            case 3:                if (sameNum(list)==3) {                    return true;                } else return false;            case 4:                if (sameNum(list) == 4 || sameNum(list) == 3) {                    return true;                } else                    return false;            case 5:                if (sameNum(list) == 1 && (max(list) - min(list) == list.size() - 1)) {                    return true;                } else if (sameNum(list) == 3) {                    for (int i = 0; i < list.size(); i++) {                        if (theSameNum(list, list.get(i).getNum()) < 2) {                            return false;                        }                    }                    return true;                }            case 6:                if (sameNum(list) == 1 && (max(list) - min(list) == list.size() - 1)) {                    return true;                } else if (sameNum(list) == 4) {                    for (int i = 0; i < list.size(); i++) {                        if (theSameNum(list, list.get(i).getNum()) == 2) {                            return false;                        }                    }                    return true;                } else if (sameNum(list) == 2 && (max(list) - min(list)) * 2 + 2 == list.size() && max(list) != 15) {                    return true;                } else                    return false;            case 8:                if (sameNum(list) == 1 && (max(list) - min(list) == list.size() - 1)) {                    return true;                } else if (sameNum(list) == 4) {                    for (int i = 0; i < list.size(); i++) {                        if (theSameNum(list, list.get(i).getNum()) == 2) {                            return true;                        }                    }                    return false;                } else if (sameNum(list)==2 && (max(list) - min(list)) * 2 + 2 == list.size() && max(list) != 15) {                    return true;                } else if (sameNum(list) == 3 && noSameNum(list) == 4 &&                        (whichNumSame(list, 3).get(1) - whichNumSame(list, 3).get(0) == 1) && max(list) != 15) {                    for (int i = 0; i < list.size(); i++) {                        if (theSameNum(list, list.get(i).getNum()) == 2) {                            return false;                        }                    }                    return true;                } else if (sameNum(list) == 3 && noSameNum(list) == 3 &&                        (whichNumSame(list, 3).get(1) - whichNumSame(list, 3).get(0) == 1) && max(list) != 15) {                    return true;                } else return false;            default:                if (sameNum(list) == 1 && (max(list) - min(list) == list.size() - 1) && max(list) < 15) {                    return true;                } else if (list.size() % 2 == 0&&sameNum(list)==2 && (max(list) - min(list)) * 2 + 2 == list.size() && max(list) != 15) {                    return true;                } else if (list.size() == 10 && sameNum(list) == 3 && noSameNum(list) == 4 &&                        (whichNumSame(list, 3).get(1) - whichNumSame(list, 3).get(0) == 1) && max(list) != 15) {                    for (int i = 0; i < list.size(); i++) {                        if (theSameNum(list, list.get(i).getNum()) == 1) {                            return false;                        }                    }                    return true;                } else if (list.size() == 12 && sameNum(list) == 3 && noSameNum(list) == 6 &&                        (whichNumSame(list, 3).get(2) - whichNumSame(list, 3).get(0) == 2) && max(list) != 15) {                    for (int i = 0; i < list.size(); i++) {                        if (theSameNum(list, list.get(i).getNum()) == 2) {                            return false;                        }                    }                    return true;                } else if (list.size() == 15 && sameNum(list) == 3 && noSameNum(list) == 6 &&                        (whichNumSame(list, 3).get(2) - whichNumSame(list, 3).get(0) == 2) && max(list) != 15) {                    for (int i = 0; i < list.size(); i++) {                        if (theSameNum(list, list.get(i).getNum()) == 1) {                            return false;                        }                    }                    return true;                } else if (list.size() == 16 && sameNum(list) == 3 && noSameNum(list) == 8 &&                        (whichNumSame(list, 3).get(2) - whichNumSame(list, 3).get(0) == 2) && max(list) != 15) {                    for (int i = 0; i < list.size(); i++) {                        if (theSameNum(list, list.get(i).getNum()) == 1) {                            return false;                        }                    }                    return true;                }                return false;        }    }
public static int max(ArrayList<Pai> list) {    int max = 0;    for (int i = 0; i < list.size(); i++) {        max = max >= list.get(i).getId() ? max : list.get(i).getId();    }    return max;}
public static int min(ArrayList<Pai> list) {    int min = list.get(0).getId();    for (int i = 0; i < list.size(); i++) {        min = min <= list.get(i).getId() ? min : list.get(i).getId();    }    return min;}
public static int theSameNum(ArrayList<Pai> list, String a) {    int num = 0;    for (int i = 0; i < list.size(); i++) {        if (list.get(i).getNum().equals(a)) {            num++;        }    }    return num;}
 public static Pai throwcard(ArrayList<Pai> list, String a) {        for (int i = 0; i < list.size(); i++) {            if (list.get(i).getNum().equals(a)) {                return list.get(i);            }        }        System.out.println("您手中没有" + a );        return null;    }
   public static boolean daNi(ArrayList<Pai> list, ArrayList<Pai> list1) {        if ((list.size() >= 2 && list.get(0).getId() + list.get(1).getId() == 70) || list1.size() == 0)            return true;        if (list1.size() == 2 && list1.get(0).getId() + list1.get(1).getId() == 70)            return false;        if (list.size() == list1.size()) {            switch (list1.size()) {                case 1:                    return max(list) > max(list1);                case 2:                    return max(list) > max(list1);                case 3:                    return max(list) > max(list1);                case 4:                    if (sameNum(list) == 4 && sameNum(list1) == 4 && max(list) > max(list1)) {                        return true;                    } else if (sameNum(list) == 4) {                        return true;                    } else if (sameNum(list) == 3 && sameNum(list1) == 3) {                        return (list.get(0).getId() == list.get(1).getId() ?                                list.get(0).getId() : list.get(2).getId()) >                                (list1.get(0).getId() == list1.get(1).getId() ?                                        list1.get(0).getId() : list1.get(2).getId());                    }                    return false;                case 5:                    if (sameNum(list) == sameNum(list1) && sameNum(list) == 1) {                        return max(list) > max(list1);                    } else {                        return (theSameNum(list, idtoNum(list, max(list))) == 3 ? max(list) : min(list))                                > (theSameNum(list1, idtoNum(list1, max(list1))) == 3 ? max(list1) : min(list1));                    }                case 6:                    if (sameNum(list) == sameNum(list1) && sameNum(list) == 1) {                        return max(list) > max(list1);                    } else if (sameNum(list) == sameNum(list1) && sameNum(list) == 2) {                        return max(list) > max(list1);                    } else {                        return (theSameNum(list, idtoNum(list, max(list))) == 4 ? max(list) : min(list))                                > (theSameNum(list1, idtoNum(list1, max(list1))) == 4 ? max(list1) : min(list1));                    }                default:                    if (sameNum(list) == sameNum(list1) && sameNum(list) == 1) {                        return max(list) > max(list1);                    } else if (sameNum(list) == sameNum(list1) && sameNum(list) == 2) {                        return max(list) > max(list1);                    } else if (sameNum(list) == sameNum(list1) && sameNum(list) == 3) {                        return whichNumSame(list, 3).get(0) > whichNumSame(list1, 3).get(1);                    } else if (list.size() == 10 && sameNum(list) == 3) {                        return whichNumSame(list, 3).get(0) > whichNumSame(list1, 3).get(1);                    } else if (list.size() == 12 && sameNum(list) == 3) {                        return whichNumSame(list, 3).get(0) > whichNumSame(list1, 3).get(2);                    } else if (list.size() == 15 && sameNum(list) == 3) {                        return whichNumSame(list, 3).get(0) > whichNumSame(list1, 3).get(3);                    } else if (list.size() == 16 && sameNum(list) == 3) {                        return whichNumSame(list, 3).get(0) > whichNumSame(list1, 3).get(3);                    } else return false;            }        } else {            if (list.size() == 4 && sameNum(list) == 4) {                return true;            } else if (list1.size() == 4 && sameNum(list1) == 4) {                return false;            } else                return false;        }    }
   public static boolean isTrue(ArrayList<Pai> list, String a) {        for (int i = 0; i < list.size(); i++) {            if (list.get(i).getNum().equals(a)) {                return true;            }        }        return false;    }
   public static String idtoNum(ArrayList<Pai> list, int id) {        for (int i = 0; i < list.size(); i++) {            if (list.get(i).getId() == id) {                return list.get(i).getNum();            }        }        return "";    }
  public static int noSameNum(ArrayList<Pai> list) {        HashSet<Integer> set = new HashSet<>();        for (int i = 0; i < list.size(); i++) {            set.add(list.get(i).getId());        }        return set.size();    }
public static ArrayList<Integer> whichNumSame(ArrayList<Pai> list, int a) {    ArrayList<Integer> li = new ArrayList<>();    for (int i = 0; i < list.size(); i++) {        if (theSameNum(list, list.get(i).getNum()) == a && !li.contains(list.get(i).getId())) {            li.add(list.get(i).getId());        }    }    return li;}
Java版斗地主代码免费复制-第1张-游戏-拼搏

实体类

public class Pai  implements Comparable<Pai>{    private String name ;    private String num ;    private int id ;    public Pai(String name, String num, int id) {        this.name = name;        this.num = num;        this.id = id;    }    public Pai() {    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getNum() {        return num;    }    public void setNum(String num) {        this.num = num;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    @Override    public String toString() {        return name+num;    }    @Override    public int compareTo(Pai o) {        return this.getId()-o.getId();    }}

原文链接:https://blog.csdn.net/qq_33007465/article/details/114838384

标签 qq游戏斗地主免费