基于Java集合的斗地主案例

基于Java集合的斗地主案例

一、案例需求分析
(1)准备牌:
牌可以设计为一个ArrayList,每个字符串为一张牌。
每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装。
牌由Collections类的shuffle方法进行随机排序。
(2)发牌:
将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。
(3)看牌:
直接打印每个集合。
(4)注意:修改文件编码由GBK修改为UTF-8,因为GBK没有我们要的梅花、方片、黑桃、红桃(♠♥♦♣)等字符。
代码演示:

public class Poker {
	public static void main(String[] args) {
		//♠♥♦♣
		//准备牌
		ArrayList<String> poker = new ArrayList<String>();
		//花色
		ArrayList<String> color = new ArrayList<String>();
		color.add("♠");
		color.add("♥");
		color.add("♦");
		color.add("♣");
		//数字
		ArrayList<String> number = new ArrayList<String>();
		for (int i = 2; i <= 10; i++) {
			number.add(i+"");
		}
		number.add("J");
		number.add("Q");
		number.add("K");
number.add("A");
		//完成新牌
		for (String thisColor : color) {
			for (String thisNumber : number) {
				String thisCard = thisColor + thisNumber;
				poker.add(thisCard);
			}
		}
		poker.add("小☺");
		poker.add("大☻");
		//洗牌
		Collections.shuffle(poker);
		//发牌
		//玩家1
		ArrayList<String> player1 = new ArrayList<String>();	
		//玩家2
		ArrayList<String> player2 = new ArrayList<String>();
		//玩家3
		ArrayList<String> player3 = new ArrayList<String>();
		//底牌
		ArrayList<String> secretCards = new ArrayList<String>();
		for (int i = 0; i < poker.size(); i++) {
			if(i>=51) {
				//最后三张发给底牌
				secretCards.add(poker.get(i));
			}else {
				//剩余牌通过对3取模依次摸牌
				if(i%3==0) {
					player1.add(poker.get(i));
				}else if(i%3==1) {
					player2.add(poker.get(i));
				}else {
					player3.add(poker.get(i));
				}
			}
		}		
		//看牌(牌序无序)
		System.out.println(player1);
		System.out.println(player2);
		System.out.println(player3);
		System.out.println(secretCards);
	}
}

猜你喜欢

转载自blog.csdn.net/shkstart/article/details/107283103
今日推荐