import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;
/*
- 需求:
模拟斗地主(3人玩,留3张底牌)
完成功能如下:
1,有牌 A,2~K(黑红梅方四种牌)以及小王,大王54张牌。
2, 集合中存好一副牌之后进行洗牌(讲牌打乱顺序)、发牌(3人每人17张,地主要3张底牌)操作。
3,将每人手中的牌进行排序
4,看牌。(也就是打印输出牌人手中的牌)
打牌人:赌神、赌圣、我 ♣ ♦ ♥ ♠
*/
public class Brand {
public static void main(String[] args) {
// TODO 自动生成的方法存根
BrandList brand = new BrandList();
brand.addBrand();
}
}
// 牌的集合
class BrandList {
// 有牌 A,2~K(黑红梅方四种牌)以及小王,大王54张牌
String str[] = { “3”, “4”, “5”, “6”, “7”, “8”, “9”, “10”, “J”, “Q”,
“K”, “A”, “2” };
// String str1 [] = {“大王”,“小王”};
char car[] = { ‘♣’, ‘♦’, ‘♥’, ‘♠’ };
public void addBrand() {// 将牌加入到集合里面
LinkedList list = new LinkedList<>();
// 添加大王和小王
list.add(“大王”);
list.add(“小王”);
// 添加牌 A,2~K(黑红梅方四种牌)
int index = 0;
for (int i = index; i < str.length; i++) {
for (int j = index; j < car.length; j++) {
list.add(car[j] + str[i]);
}
}
// 打乱牌
Collections.shuffle(list);
// 定义三个打牌的人
LinkedList<Object> link = new LinkedList<>();
LinkedList<Object> linke = new LinkedList<>();
LinkedList<Object> linked = new LinkedList<>();
// 遍历集合发牌,每人发17张
int listsize = list.size();//54张牌
while(listsize>3){//给玩家一发牌
if (listsize % 3 == 0) {
link.add(list.get(0));
list.remove(0);
listsize--;
} else if (listsize % 3 == 1) {//给玩家二发牌
linke.add(list.get(0));
list.remove(0);
listsize--;
} else {//给玩家三发牌
linked.add(list.get(0));
list.remove(0);
listsize--;
}
}
/*
* 随机生成一名地主
* 将三名玩家装进一个玩家集合,并在其中抽取一位地主
*/
Vector<Object> vector = new Vector<>();
vector.add(link);
vector.add(linke);
vector.add(linked);
//随机生成0、1、2三个数,0代表link为地主,1代表linke为地主,2代表linked为地主
int luck = (int)(Math.random()*3);
//System.out.println(luck);
switch (luck) {
case 0:
System.out.println("地主是:"+"赌神");
link.add(list.get(0));
link.add(list.get(1));
link.add(list.get(2));
break;
case 1:
System.out.println("地主是:"+"赌圣");
linke.add(list.get(0));
linke.add(list.get(1));
linke.add(list.get(2));
break;
default:
System.out.println("地主是:"+"我");
linked.add(list.get(0));
linked.add(list.get(1));
linked.add(list.get(2));
break;
}
System.out.println("赌神:");
Licensing(link);
System.out.println("");
System.out.println("赌圣:");
Licensing(linke);
System.out.println("");
System.out.println("我:");
Licensing(linked);
System.out.println("");
}
//给牌排序
@SuppressWarnings({ "rawtypes", "unchecked" })
public void Licensing(LinkedList l){
for(int i=0;i<str.length;i++){
for(int j=0;j<car.length;j++){
if(l.contains(car[j]+str[i])){
l.addFirst(car[j]+str[i]);
}
}
}
if(l.contains("大王")){
l.addFirst("大王");
}
if(l.contains("小王")){
l.addFirst("小王");
}
List subList = l.subList(0, (l.size()/2));
System.out.print("[");
for (Object object : subList) {
System.out.print(object+",");
}
System.out.print("]");
}
}