实现斗地主案例

java案例-实现斗地主游戏案例

1.需求分析:

模拟斗地主游戏,利用集合存储,可以看分派好的牌

2.具体实现:

(1)在牌盒(字符串数组)存储四个花色:

String color[] = {"♠","♥","♣","♦"};

(2)按照斗地主游戏规则由大到小:

String number[] = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};

(3)在Map中存储键值对,键是索引值,值是花色和点数组成的字符串,索引用来指定派,利用索引进行洗牌操作

(4)把索引值存储到ArrayList集合中,以便进行洗牌操作

(5)利用集合工具类Collections的shuffle()方法实现洗牌功能

(6)按照斗地主的发牌规则发牌,这里发的是洗牌操作之后的索引值

(7)看牌

public class Doudizu {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		ArrayList<String> arr = new ArrayList<>();
		String color[] = {"♠","♥","♣","♦"};
		String number[] = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
		
		//放入大王小王
		arr.add("大王");
		arr.add("小王");
		
		//生成牌
		for( String c : color) {
			for(String s : number) {
				arr.add(s+c);	
			}
		}
		
		//洗牌
		Collections.shuffle(arr);
		//System.out.println(arr);
		
		//发牌
		
		ArrayList<String> user1 = new ArrayList<>();
		ArrayList<String> user2 = new ArrayList<>();
		ArrayList<String> user3 = new ArrayList<>();
		ArrayList<String> dipai= new ArrayList<>();
		
		for (int i = 0; i < arr.size(); i++) {
				String s =arr.get(i);
				//底牌设置
				if(i>=51) {
					dipai.add(s);
				//轮流发牌
				}else if(i%3==1) {
					user1.add(s);
				}else if(i%3==2) {
					user2.add(s);
				}else if(i%3==0) {
					user3.add(s);
				}		
		}
		//看牌
		System.out.println("陈志朋: "+user1);
		System.out.println("金庸: "+user2);
		System.out.println("马云: "+user3);
		System.out.println("底牌: "+dipai);
	}
}

输出结果为:

陈志朋: [Q♦, K♥, 4♥, 9♥, 8♠, 7♥, 6♣, J♥, A♣, K♦, 2♠, A♠, 10♥, 6♠, 4♦, Q♣, 5♦]
金庸: [2♣, 6♥, 4♠, Q♠, 3♦, A♥, 9♦, 6♦, 8♥, J♦, 10♠, 2♥, J♠, 小王, 5♠, 5♣, 3♥]
马云: [3♣, 10♦, 8♦, 5♥, 4♣, 9♠, 7♦, 大王, 8♣, J♣, A♦, 7♣, K♣, K♠, Q♥, 7♠, 10♣]
底牌: [9♣, 3♠, 2♦]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值