java斗地主发牌

需求:斗地主发牌
一副扑克一共54张牌,花色四种,分别是"红桃",“黑桃”,“方块”,“草花”,序号分别是"A",“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”
三个角色玩牌,分别是张三,李四,王五
1:请输出洗牌后的随机扑克展示
2:张三、李四和王五每人随机获得17张牌展示
3:留下的3张地主扑克底牌展示
在这里插入图片描述

import java.util.List;

public class Huase {
	String hua;// 定义花色

	public Huase() {

	}

	public Huase(String hua) {
		this.hua = hua;
	}

	public void hua(List list, String hua) {
		// 定义花色0到花色12,13张牌,将字符串(花色)和字符串(数字)结合
		for (int j = 0; j < 13; j++) {
			Integer a = new Integer(j);
			String b = a.toString();
			String huaPai = hua.concat(b);
			list.add(huaPai);// 结合后先添加到集合中
			// 在集合中挑选出花色1,花色11,花色12,花色13,得到他们的索引值,然后按照索引值替换成花色A,花色j,花色Q,花色K
			switch (j) {
			case 0:
				String gaiA = hua.concat("A");
				int in0 = list.indexOf(huaPai);
				list.set(in0, gaiA);
				break;
			case 10:
				String gaiJ = hua.concat("J");
				int in1 = list.indexOf(huaPai);
				list.set(in1, gaiJ);
				break;
			case 11:
				String gaiQ = hua.concat("Q");
				int in2 = list.indexOf(huaPai);
				list.set(in2, gaiQ);
				break;
			case 12:
				String gaiK = hua.concat("K");
				int in3 = list.indexOf(huaPai);
				list.set(in3, gaiK);
				break;

			default:
				break;
			}
		}

	}
}

import java.util.List;

public class Person {
private String name;

public Person() {

}

public Person(String name) {
	this.name = name;
}

// 摸牌并且遍历,输入每个人平均分配27张
public void mopai(List list, int begin, int limit) {
	for (int i = begin; i < limit; i++) {
		System.out.print(list.get(i).toString() + "\t");
	}
}

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

}

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class Pai {

	public static void main(String[] args) {
		// 做牌
		List list = new ArrayList();
		zuopai(list);
		list.add("大王");
		list.add("小王");
		// 遍历所有牌,并且洗牌
		xipaihebianli(list);
		// 人抓牌,创建对象,调用摸牌方法,并且输入摸牌的范围
		Person p1 = new Person("张三");
		Person p2 = new Person("李四");
		Person p3 = new Person("王五");
		System.out.print("张三:");
		p1.mopai(list, 0, (list.size() - 3) / 3);// 摸0到16张
		System.out.println();
		System.out.print("李四:");
		p2.mopai(list, (list.size() - 3) / 3, 2 * (list.size() - 3) / 3);// 17到33张
		System.out.println();
		System.out.print("王五:");
		p3.mopai(list, 2 * (list.size() - 3) / 3, (list.size() - 3));// 34到51张
		System.out.println();
		System.out.println("~~~~~~保留牌~~~~~~~~");
		// 遍历最后保留的3张牌 52到54
		for (int i = list.size() - 3; i < list.size(); i++) {
			System.out.println(list.get(i).toString());
		}

	}

	/*
	 * 
	 * 洗牌并且遍历
	 */
	private static void xipaihebianli(List list) {
		// 把之前集合中的牌都遍历出来
		for (Object object : list) {
			System.out.print(object + "\t");
		}
		System.out.println();
		System.out.println("总牌数目为:" + list.size());
		System.out.println("~~~~~~洗牌后~~~~~~~~~");
		// 随机挑选0到53之间的两个数字,将他们的值互换,重复多次,进行洗牌
		for (int i = 0; i < 500; i++) {
			int num1 = (int) (Math.random() * 54);
			int num2 = (int) (Math.random() * 54);
			String emp = (String) list.get(num1);
			list.set(num1, list.get(num2));
			list.set(num2, emp);
		}
		// 洗牌后遍历
		for (Object object : list) {
			System.out.print(object + "\t");
		}
		System.out.println();
		System.out.println("总牌数目为:" + list.size());
	}

	/*
	 * 
	 * 将所有牌添加到集合中
	 */
	private static void zuopai(List list) {
		// 创建花色对象,并且把他们所有的元素都添加到集合中
		Huase hongtao = new Huase();
		Huase heitao = new Huase();
		Huase fangkuai = new Huase();
		Huase caohua = new Huase();
		hongtao.hua(list, "红桃");
		;
		heitao.hua(list, "黑桃");
		fangkuai.hua(list, "方块");
		caohua.hua(list, "草花");
	}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值