[Java] 纯文本查看 复制代码 import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
public class Test {
/*
* 成龙,甄子丹,李连杰三个人打斗地主,三人约定,洗牌后,随机抽取一张"明牌"并夹在中间;然后依次抓牌, 谁抓到这张便自动作为地主,并收取最后三张。
* 要求:请用程序实现这一过程,最后打印地主名,以及三个人的牌(要求排序);
*/
public static void main(String[] args) {
String[] color = { "♠", "♥", "♣", "♦" };
String[] num = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2" };
// 创建map存储牌
Map<Integer, String> poker = new HashMap<Integer, String>();
// list存储map的key值
List<Integer> list = new ArrayList<Integer>();
poker.put(52, "小王");
poker.put(53, "大王");
list.add(52);
list.add(53);
int count = 0;
for (String stringN : num) {
for (String stringC : color) {
poker.put(count, stringC + stringN);
list.add(count);
count++;
}
}
// 定义一个随机牌,拿到这张牌就是地主,只能是前51张牌,要不然谁都拿不到,或者在随机数,制定随机的人是地主
int number = new Random().nextInt(51);
System.out.println("明牌为" + poker.get(number));
// 定义四个集合,用来存储随机的牌
ArrayList<Integer> player01 = new ArrayList<Integer>();
ArrayList<Integer> player02 = new ArrayList<Integer>();
ArrayList<Integer> player03 = new ArrayList<Integer>();
ArrayList<Integer> bottom = new ArrayList<Integer>();
// 模拟洗牌过程
Collections.shuffle(list);
// 模拟发牌过程
for (int i = 0; i < list.size(); i++) {
// 将最前面的3张牌拿出来,留作底牌
if (i >= 51) {
// 根据索引找到对应的整数
bottom.add(list.get(i));
} else if (i % 3 == 0) {
player01.add(list.get(i));
} else if (i % 3 == 1) {
player02.add(list.get(i));
} else if (i % 3 == 2) {
player03.add(list.get(i));
}
}
// 判断明牌的那张牌在谁手里,然后底牌全是他的
if (player01.contains(number)) {
player01.addAll(bottom);
} else if (player02.contains(number)) {
player02.addAll(bottom);
} else if (player03.contains(number)) {
player03.addAll(bottom);
}
// 将牌排序
Collections.sort(player01);
Collections.sort(player02);
Collections.sort(player03);
Collections.sort(bottom);
System.out.println("底牌为:");
for (Integer integer : bottom) {
System.out.print(poker.get(integer) + " ");
}
System.out.println();
prtinPoker("成龙", poker, player01);
prtinPoker("甄子丹", poker, player02);
prtinPoker("李连杰", poker, player03);
}
private static void prtinPoker(String name, Map<Integer, String> poker, ArrayList<Integer> player) {
if (player.size() == 20) {
System.out.println("☆☆☆" + name + "是地主☆☆☆");
} else {
System.out.println(name + "的牌为:");
}
for (Integer integer : player) {
System.out.print(poker.get(integer) + " ");
}
System.out.println();
}
}
|