黑马程序员技术交流社区
标题:
有没有人做那个斗地主程序
[打印本页]
作者:
曹亚辉
时间:
2016-9-12 21:54
标题:
有没有人做那个斗地主程序
关于里面说随机亮一张牌,然后再看看那个人抽到牌,就是地主添加底牌.这个查找那个地主而且添加底牌这一段程序会写吗.
作者:
zhangjingxian
时间:
2016-9-12 22:01
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); } }
作者:
zhangjingxian
时间:
2016-9-12 22:02
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);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2