需求:斗地主发牌
一副扑克一共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, "草花");
}
}