1随机发扑克,但没对玩家的扑克整理,代码如下:
//实现随机发牌,按斗地主的模式,实现步骤,创建List集合对象将54张扑克放入集合中,用集合工具类的shuffle方法,将List打乱
//将List集合的元素放入四份,三个玩家,一份底牌
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Poker {
public static void main(String[] args) {
String[] nums = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
String[] colors = { "黑桃", "红桃", "梅花", "方片" };
//创建List对象,将54张牌放入到List对象中
ArrayList<String> pokerList = new ArrayList<>();
for (String num : nums) {
for (String color : colors) {
pokerList.add(color + num);
}
}
pokerList.add("大鬼");
pokerList.add("小鬼");
//洗牌,将List集合的元素打乱顺序
Collections.shuffle(pokerList);
System.out.println(pokerList);
List<String> buttoms = new ArrayList<>();
List<String> player1 = new ArrayList<>();
List<String> player2 = new ArrayList<>();
List<String> player3 = new ArrayList<>();
for (int i = 0; i < pokerList.size(); i++) {
if (i >= pokerList.size() - 3) {
buttoms.add(pokerList.get(i));
} else if (i % 3 == 0) {
player1.add(pokerList.get(i));
} else if (i % 3 == 1) {
player2.add(pokerList.get(i));
} else {
player3.add(pokerList.get(i));
}
}
System.out.println(buttoms);
System.out.println(player1);
System.out.println(player2);
System.out.println(player3);
}
}
out:
[红桃2, 梅花3, 黑桃2, 黑桃5, 方片7, 方片10, 梅花A, 梅花2, 黑桃Q, 小鬼, 方片A, 梅花J, 红桃10, 方片8, 红桃3, 红桃8, 梅花Q, 梅花K, 红桃A, 黑桃9, 红桃5, 黑桃4, 方片Q, 方片9, 方片4, 红桃Q, 梅花5, 梅花10, 红桃4, 黑桃J, 红桃7, 梅花4, 方片K, 红桃K, 方片5, 黑桃10, 黑桃6, 黑桃A, 红桃9, 梅花8, 方片6, 黑桃3, 梅花6, 方片3, 方片J, 方片2, 黑桃K, 梅花7, 红桃J, 大鬼, 红桃6, 黑桃7, 黑桃8, 梅花9]
[黑桃7, 黑桃8, 梅花9]
[红桃2, 黑桃5, 梅花A, 小鬼, 红桃10, 红桃8, 红桃A, 黑桃4, 方片4, 梅花10, 红桃7, 红桃K, 黑桃6, 梅花8, 梅花6, 方片2, 红桃J]
[梅花3, 方片7, 梅花2, 方片A, 方片8, 梅花Q, 黑桃9, 方片Q, 红桃Q, 红桃4, 梅花4, 方片5, 黑桃A, 方片6, 方片3, 黑桃K, 大鬼]
[黑桃2, 方片10, 黑桃Q, 梅花J, 红桃3, 梅花K, 红桃5, 方片9, 梅花5, 黑桃J, 方片K, 黑桃10, 红桃9, 黑桃3, 方片J, 梅花7, 红桃6]
2随机发扑克,并对玩家手中的扑克进行整理,代码如下:
package exercise;
//初始化一副扑克的,创建集合对象将扑克放进去,要注意扑克与索引的对应,应该是先4张A,再4张2,......
//使用Collections的shuffle方法对集合进行洗牌
// 实现发牌,发三家牌
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.TreeSet;
public class Poker02 {
public static void main(String[] args) {
String[] nums = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
String[] colors = { "黑桃", "红桃", "梅花", "方片" };
HashMap<Integer, String> pokerMap = new HashMap<>();// 用来存放key索引value和牌
List<Integer> indexList = new ArrayList<>();// 存储扑克的索引0-53
TreeSet<Integer> buttoms = new TreeSet<>();
TreeSet<Integer> player1 = new TreeSet<>();
TreeSet<Integer> player2 = new TreeSet<>();
TreeSet<Integer> player3 = new TreeSet<>();
// 定义索引值变量
int index = 0;
// 将扑克牌与索引建立对应关系放入map和list中
for (String num : nums) {
for (String color : colors) {
pokerMap.put(index, color + num);
indexList.add(index);
index++;
}
}
pokerMap.put(index, "小鬼");
indexList.add(index++);
pokerMap.put(index, "大鬼");
indexList.add(index);
// 洗牌
Collections.shuffle(indexList);
// 发牌
for (int i = 0; i < indexList.size(); i++) {
if (i >= indexList.size() - 3) {
buttoms.add(indexList.get(i));
} else if (i % 3 == 0) {
player1.add(indexList.get(i));
} else if (i % 3 == 1) {
player2.add(indexList.get(i));
} else {
player3.add(indexList.get(i));
}
}
check(pokerMap, player1, "player1");
check(pokerMap, player2, "player2");
check(pokerMap, player3, "player3");
check(pokerMap, buttoms, "buttoms");
}
public static void check(HashMap<Integer, String> pokerMap, TreeSet<Integer> player1, String name) {
// 查看手中的牌
System.out.println(name + " :");
for (Integer i : player1) {
System.out.print(pokerMap.get(i) + " ");
}
System.out.println();
}
}
out:
player1 :
梅花A 梅花2 红桃3 黑桃4 梅花5 方片5 梅花6 红桃7 黑桃8 方片8 黑桃9 梅花9 黑桃J 梅花J 红桃K 小鬼 大鬼
player2 :
方片A 黑桃2 方片2 梅花3 方片3 方片4 黑桃5 红桃5 方片6 方片7 红桃8 梅花8 方片9 黑桃10 红桃10 黑桃Q 方片Q
player3 :
红桃A 红桃2 黑桃3 红桃4 梅花4 红桃6 黑桃7 红桃9 梅花10 方片10 红桃J 方片J 红桃Q 梅花Q 黑桃K 梅花K 方片K
buttoms :
黑桃A 黑桃6 梅花7
原文: