JAVA集合摸拟斗地主发牌程序

分析

流程:

1.造一个牌盒

2.造牌

3.洗牌

4.发牌

5.看牌

程序分析:

1.创建一个ArrayList集合对象

2.新建两个数组(花色,点数),将两个进行拼接

3.用Collections.shuffle();

5.发牌

6.看牌

代码如下:

public class PokerTest {
  public static void main(String[] args) {
//创建一个牌盒
    ArrayList arrayList = new ArrayList<>();
    //装牌
    /**
     * 黑桃A,....黑桃K
     * 红桃A,....
     * 梅花A,....
     * 方块A,....
     */
    //定义一个花色数组
    String[] colors = {"♠", "♥", "♣", "♦"};
    //定义一个点数数组
    String[] numbers = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "K"};
    for (String color : colors) {
      for (String number : numbers) {
        arrayList.add(color.concat(number));
      }
    }
    arrayList.add("大王");
    arrayList.add("小王");
    //洗牌
    Collections.shuffle(arrayList);
    //发牌
    ArrayList cmeizu = new ArrayList<>();
    ArrayList lwy = new ArrayList<>();
    ArrayList huangfeng = new ArrayList<>();
    ArrayList diPai = new ArrayList<>();
    for (int x = 0; x < arrayList.size(); x++) {
      if (x >= arrayList.size() - 3) {
        diPai.add(arrayList.get(x));
      } else if (x % 3 == 0) {
        cmeizu.add(arrayList.get(x));
      } else if (x % 3 == 1) {
        lwy.add(arrayList.get(x));
      } else if (x % 3 == 2) {
        huangfeng.add(arrayList.get(x));
      }
    }
    System.out.println(arrayList);
    lookPoker("农民1:", cmeizu);
    lookPoker("农民2:", lwy);
    lookPoker("地主:", huangfeng);
    lookPoker("底牌:", diPai);

  }

  public static void lookPoker(String name, ArrayList array) {
    System.out.println(name + "的牌是:");
    for (String s : array) {
      System.out.print(s + " ");
    }
    System.out.println();
  }
}

这种做法有一个问题就是没有排序

所以第二种做法:

步骤:

1,创建一个HashMap,String>集合

2.创建两个数组String类型(花色,点数),然后拼接numbers.concat(colors)

3.洗牌

4.发牌

5.看牌

具体实现如下:

import java.util.ArrayList;

import java.util.Collections;


public class PokerDemo {
  public static void main(String[] args) {

//创建一个牌盒

    ArrayList arrayList = new ArrayList<>();

    //装牌

    /**
     * 黑桃A,....黑桃K
     * 红桃A,....
     * 梅花A,....
     * 方块A,....
     */
    //定义一个花色数组
    String[] colors = {"♠", "♥", "♣", "♦"};
    //定义一个点数数组
    String[] numbers = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "K"};
    for (String color : colors) {
      for (String number : numbers) {
        arrayList.add(color.concat(number));
      }
    }
    arrayList.add("大王");
    arrayList.add("小王");
    //洗牌
    Collections.shuffle(arrayList);
    //发牌
    ArrayList cmeizu = new ArrayList<>();

    ArrayList lwy = new ArrayList<>();

    ArrayList huangfeng = new ArrayList<>();

    ArrayList diPai = new ArrayList<>();

    for (int x = 0; x < arrayList.size(); x++) {
      if (x >= arrayList.size() - 3) {
        diPai.add(arrayList.get(x));
      } else if (x % 3 == 0) {
        cmeizu.add(arrayList.get(x));
      } else if (x % 3 == 1) {
        lwy.add(arrayList.get(x));
      } else if (x % 3 == 2) {
        huangfeng.add(arrayList.get(x));
      }

    }
    System.out.println(arrayList);
    lookPoker("农民1:", cmeizu);
    lookPoker("农民2:", lwy);
    lookPoker("地主:", huangfeng);
    lookPoker("底牌:", diPai);
  }

  public static void lookPoker(String name, ArrayList array) {
    System.out.println(name + "的牌是:");
    for (String s : array) {
      System.out.print(s + " ");
    }
    System.out.println();
  }
}

你可能感兴趣的:(JAVA集合摸拟斗地主发牌程序)