package net.yajun.test;
import java.util.ArrayList;
import java.util.Collections;
/**
* @author yajun sir
* @version v1.0
*/
//先创建一个牌盒
//装牌
//洗牌
//发牌
//看牌
public class DouDiTest {
public static void main(String[] args) {
//come on baby 来我们先创建一个牌盒
//有序的集合 方便遍历发牌
ArrayList<String> poker = new ArrayList<String>();
//每个扑克有54张牌 四个花色 每个花色 有13张牌 另加两个大小王
//2他们分别装进牌和
String[] colors = {"♠","♥","♣","♦" };
String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K","A","2"};
for (int x = 0;x<colors.length; x++){
for (int y = 0; y < numbers.length; y++) {
poker.add(colors[x].concat(numbers[y]));
}
}
//把两个王牌加进去
poker.add("小王");
poker.add("大王");
//System.out.println(poker);
Collections.shuffle(poker);
//System.out.println(poker);
//发牌 创建四个数组对象 3个palyer 一个底牌
ArrayList<String> pipixia= new ArrayList<String>();
ArrayList<String> xiaohong= new ArrayList<String>();
ArrayList<String> xiaoming= new ArrayList<String>();
ArrayList<String> dipai= new ArrayList<String>();
//遍历这个poker 数组 根据数组的索引和长度的关系 发牌
//
for (int x= 0;x<poker.size();x++) {
if (x>=poker.size()-3) {
dipai.add(poker.get(x));
} else if (x % 3 == 1) {
pipixia.add(poker.get(x));
}else if(x%3==2){
xiaohong.add(poker.get(x));
}else{
xiaoming.add(poker.get(x));
}
}
// for(String s :dipai){
// System.out.print(s+" ");
//
// } System.out.println();
//这是直接输出的 下面是方法输出
// System.out.println(pipixia+"共有:"+pipixia.size()+"张");
// System.out.println(xiaohong+"共有:"+xiaoming.size()+"张");
// System.out.println(xiaoming+"共有:"+xiaohong.size()+"张");
// System.out.println(dipai+"共有:"+dipai.size()+"张");
lookPoker(pipixia,"皮皮虾");
lookPoker(xiaoming,"小明");
lookPoker(xiaohong,"小红");
lookPoker(dipai,"底牌");
}
/**
* 怎么写一个方法
* 1.有没有返回值
* 2.明确返回值类型:无返回值
* 3.参数的个数 和类型 一个 ArrayList() list
* 4.由与是在类中的方法 main静态方法中无法调用本类的非静态方法 所以加static
*/
public static <T> void lookPoker(ArrayList<T> list,String name){
System.out.print(name+"的牌是:");
for(T s :list){
System.out.print(s+" ");
} System.out.println("共有:"+list.size()+"张");
}
}
//输出的牌 顺序不好 所以选择 用其他方法改进
**运行结果**
皮皮虾的牌是:♣J ♥6 ♣4 ♦8 ♦3 ♣10 ♠K ♦9 ♦A ♦6 ♥A ♠6 ♠8 ♥7 ♣5 ♣K ♠3 共有:17张
小明的牌是:♣A ♠2 ♦10 ♦4 ♠Q ♣3 ♠4 ♦2 ♦5 小王 ♣2 ♣Q ♥3 ♥10 ♥8 ♦K ♠J 共有:17张
小红的牌是:♦Q ♠7 ♠5 ♣8 ♥Q ♥9 ♥K ♣9 ♦J ♠10 ♠A ♥J 大王 ♥4 ♣6 ♣7 ♦7 共有:17张
底牌的牌是:♥5 ♠9 ♥2 共有:3张
第二种方法
package net.yajun.test;
import java.util.*;
/**
* @author yajun
* @version v2.0
* 由于上次的方法,不能在牌后不能很清楚的看出牌的大小所以选择双序列的数组改进
* 思路
* 1.用HashMap() 双序列数组存储poker 用1-54做键值 标记扑克从小到大的顺序
* 2.用ArrayList 存储数字1-54 进行洗牌 发牌
* 3.然后用发到的数字 去HashMap中找健对应的值
* 4.找到之后把对应的健和值 从新装入TreeMap 中 ——>自然排序——> 看牌
*/
public class DouDiTest2 {
public static void main(String[] args) {
HashMap<Integer, String> poker = new HashMap<Integer, String>();
ArrayList<Integer> keys = new ArrayList<Integer>();
int key = 0;
String[] colors = {"♠", "♥", "♣", "♦"};
String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
//把扑克放到poker中 把int数放到keys中
for (int y = 0; y < numbers.length; y++) {
for (int x = 0; x < colors.length; x++) {
poker.put(key, colors[x].concat(numbers[y]));
keys.add(key);
key++;
}
}
// for (String c : colors) {
// for (String n : numbers) {
// poker.put(key, c.concat(n));
// keys.add(key);
// key++;
// }
// }
//添加大小王 和53 53 到poker数组 和keys 数组
poker.put(52, "小王");
poker.put(53, "大王");
keys.add(52);
keys.add(53);
// System.out.println(poker);
// for (Integer i : keys) {
// System.out.print(i+" ");
// }
//打乱数组
Collections.shuffle(keys);
//创建 3个玩家牌的 TreeMap 集合
TreeMap<Integer, String> pipixia = new TreeMap<Integer, String>();
TreeMap<Integer, String> xiaoming = new TreeMap<Integer, String>();
TreeMap<Integer, String> xiaohong = new TreeMap<Integer, String>();
TreeMap<Integer, String> dipai = new TreeMap<Integer, String>();
//发牌,存储到 TreeMap数组中
//因为定的是1-54 所以这里的x要+1 方便使用
for (int x = 0; x < keys.size(); x++) {
if (x >= keys.size() - 3) {
dipai.put(keys.get(x), poker.get(keys.get(x)));
} else if (x % 3 == 1) {
pipixia.put(keys.get(x), poker.get(keys.get(x)));
} else if (x % 3 == 2) {
xiaoming.put(keys.get(x), poker.get(keys.get(x)));
} else {
xiaohong.put(keys.get(x), poker.get(keys.get(x)));
}
}
lookPoker(pipixia, "皮皮虾");
lookPoker(xiaoming, "小明");
lookPoker(xiaohong, "小红");
lookPoker(dipai, "底牌");
// System.out.println(xiaoming);
}
public static <T > void lookPoker (TreeMap < Integer, String > list, String name){
System.out.print(name + "的牌是:");
Set<Integer> s = list.keySet();
for (Integer i : s) {
System.out.print(list.get(i) + " ");
}
System.out.println("共有:" + list.size() + "张");
}
}
**运行结果**
皮皮虾的牌是:♥3 ♦4 ♣5 ♣6 ♥7 ♦7 ♣8 ♥10 ♣10 ♦10 ♠Q ♣Q ♣K ♠A ♣A ♦A 小王 共有:17张
小明的牌是:♣3 ♠5 ♦5 ♠6 ♣7 ♠8 ♦8 ♠9 ♥9 ♦9 ♠J ♣J ♦J ♥Q ♦Q ♠K ♦K 共有:17张
小红的牌是:♠3 ♦3 ♥4 ♣4 ♥5 ♥6 ♦6 ♠7 ♥8 ♠10 ♥J ♥K ♥A ♠2 ♣2 ♦2 大王 共有:17张
底牌的牌是:♠4 ♣9 ♥2 共有:3张
Process finished with exit code 0
新手 感觉超级乱 看啦一下视频 自己捣鼓的