利用ArrayList实现斗地主发牌

package ArrayList;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


public class Poker {

	/**
	 * @param args
	 * 
	 * 模拟实现斗地主发牌的全过程
	 * 1.准备一副扑克牌
	 * a.定义一个ArrayList集合来存放54张牌
	 * b.定义一个String类型的数组 存放花色种类
	 * c.定义一个String类型的数组 存放扑克的值
	 * d.最后把大小王添加到ArrayList中去
	 * 2.洗牌
	 * 通过集合的一个操作类Collections提供的shuffle()方法进行随机打乱扑克牌的顺序
	 * 3.发牌
	 * a.定义三个玩家和一个底牌集合容器
	 * b.实现如何三个玩家轮流拿牌
	 * 发牌思路分析:
	 * 如果当前的下标大于51 剩下的拍留给第底牌。
	 * 下标小于51,下标对3求于 0%3=0 1%3=1 2%3=2 3%3=3 4%3=1 5%3=2 ...依次类推
	 * 4.看牌
	 * 遍历所有玩家的牌
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//创建一副扑克牌
		List<String> poker = new ArrayList<String>();
		String[] color = {"♥","♠","♦","♣"};
		String[] poks = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
		
		for(int i=0;i<color.length;i++){
			for(int j=0;j<poks.length;j++){
				poker.add(poks[j]+color[i]);
				//System.out.print(color[i]+poks[j]);
			}
		}
		//添加大小王
		poker.add("大王");
		poker.add("小王");
		
		/**
		 *查看所有的牌 
		for(String s : poker){
			System.out.print(s);
		}
		**/
		
		//洗牌
		Collections.shuffle(poker);
		
		//创建 三个玩家和一个底牌集合容器
		List<String> game1 = new ArrayList<String>();
		List<String> game2 = new ArrayList<String>();
		List<String> game3 = new ArrayList<String>();
		List<String> dipai = new ArrayList<String>();
		//发牌
		for(int i=0;i<poker.size();i++){
			if(i>=51){
				dipai.add(poker.get(i));
			}else if(i%3==0){
				game1.add(poker.get(i));
			}else if(i%3==1){
				game2.add(poker.get(i));
			}else if(i%3==2){
				game3.add(poker.get(i));
			}
		}
		
		//对每个人的牌进行排序(字符串不太好用)
		//Collections.sort(game1);
		//Collections.sort(game2);
		//Collections.sort(game3);
		//Collections.sort(dipai);
		
		
		//遍历打印玩家的牌
		System.out.println("玩家1:");
		for(String s : game1){
			System.out.print(s+" ");
		}
		System.out.println();
		
		System.out.println("玩家2:");
		for(String s : game2){
			System.out.print(s+" ");
		}
		System.out.println();
		
		System.out.println("玩家3:");
		for(String s : game3){
			System.out.print(s+" ");
		}
		System.out.println();
		
		System.out.println("底牌:");
		for(String s : dipai){
			System.out.print(s+" ");
		}
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码神附体

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值