1.斗地主程序
package homework3;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Random;
/*成龙,甄子丹,李连杰三个人打斗地主,三人约定,洗牌后,
* 随机抽取一张"明牌"并夹在中间;然后依次抓牌,谁抓到这张便自动作为地主,
* 并收取最后三张。
要求:请用程序实现这一过程,最后打印地主名,以及三个人的牌(要求排序);
思路:
1.定义一个Map集合存储一副扑克牌;List存储编号;
2.洗牌;
3.随机抽取一个索引(该值必须在倒数三张之前),用于表示"明牌",在发牌
时谁抓到这一张便作为"地主";
4.依次给三个人(成龙,甄子丹,李连杰)发牌,并监督谁作为地主;地主自
动收取最后三张。
5.打印地主名;
6.最后以排序后的方式打印每个人手里的牌;*/
public class Poker {
public static void main(String[] args) {
// 创建LinkedHashmap集合\一个list集合
LinkedHashMap<Integer, String> poker = new LinkedHashMap<>();
// 创建花色集合
ArrayList<String> colors = new ArrayList<>();
Collections.addAll(colors, "♥", "♠", "♦", "♣");
// System.out.println(colors);
// 创建序号集合
ArrayList<String> num = new ArrayList<>();
Collections.addAll(num, "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");
// System.out.println(num);
// 组装键和值,扑克牌创建完成
int i = 0;
poker.put(i++, "大王");
poker.put(i++, "小王");
for (String n : num) {
for (String c : colors) {
String pai = c + n;
poker.put(i++, pai);
}
}
// System.out.println(poker);
// 洗牌,打乱序号
ArrayList<Integer> xuhao = new ArrayList<>();
for (int x = 0; x < 54; x++) {
xuhao.add(x);
}
Collections.shuffle(xuhao);
System.out.println(xuhao);
Random r = new Random();
int mingpai = r.nextInt(50) + 1;
// 创建玩家集合,存储牌的编号
ArrayList<Integer> cl = new ArrayList<>();
ArrayList<Integer> zzd = new ArrayList<>();
ArrayList<Integer> llj = new ArrayList<>();
for (int a = 0; a < 51; a++) {
if (a % 3 == 0) {
cl.add(xuhao.get(a));
} else if (a % 3 == 1) {
zzd.add(xuhao.get(a));
} else {
llj.add(xuhao.get(a));
}
}
// 遍历最后三张牌序号
for (int a = 51; a < 54; a++) {
// 判断名牌被谁抓到,把最后三张牌给谁
if (mingpai % 3 == 0) {
cl.add(xuhao.get(a));
} else if (mingpai % 3 == 1) {
zzd.add(xuhao.get(a));
} else {
llj.add(xuhao.get(a));
}
}
// 打印谁是地主
if (mingpai % 3 == 0) {
System.out.println("地主是:成龙");
} else if (mingpai % 3 == 1) {
System.out.println("地主是:甄子丹");
} else {
System.out.println("地主是:李连杰");
}
// 玩家手中牌编号排序
Collections.sort(cl);
Collections.sort(zzd);
Collections.sort(llj);
// 看牌,创建玩家牌内容的集合
ArrayList<String> cl2 = new ArrayList<>();
ArrayList<String> zzd2 = new ArrayList<>();
ArrayList<String> llj2 = new ArrayList<>();
// 为集合添加元素
for (Integer nu : cl) {
String pai2 = poker.get(nu);
cl2.add(pai2);
}
for (Integer nu : zzd) {
String pai2 = poker.get(nu);
zzd2.add(pai2);
}
for (Integer nu : llj) {
String pai2 = poker.get(nu);
llj2.add(pai2);
}
System.out.println("成 龙的牌:" + cl2);
System.out.println("甄子丹的牌:" + zzd2);
System.out.println("李连杰的牌:" + llj2);
}
}
|