首先来看步骤
/**
* 1. List集合存储 54个编号
* 2. Map <key,value> key 对应的是编号 , value 是 牌的花色(红方梅黑)+ 具体的一张牌 ,比如 黑桃2
*
* 3. 用2个数组 存放 花色+ 13张牌
*
* 4. 将牌的信息 存入到 list和map
*
* 5. 发牌了... (需要打乱顺序)
*
* 6. 看一下 自己是什么牌 (看牌)
*/
通过List Map集合 及数组 来完成
package com.gyx;
import java.util.*;
/**
* 1. List集合存储 54个编号
* 2. Map <key,value> key 对应的是编号 , value 是 牌的花色(红方梅黑)+ 具体的一张牌 ,比如 黑桃2
*
* 3. 用2个数组 存放 花色+ 13张牌
*
* 4. 将牌的信息 存入到 list和map
*
* 5. 发牌了... (需要打乱顺序)
*
* 6. 看一下 自己是什么牌 (看牌)
*/
public class Game {
public static void main(String[] args) {
//存储54个编号
List<Integer> list = new ArrayList<>();
//key对应的是编号,value对应的是花色
Map<Integer , String> map = new HashMap<>();
//存放13张牌
String[] number = new String[]{"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
//存放花色
String[] colour = new String[]{"♥", "♠", "♦", "♣"};
//设置下标
int index = 0;
for (String num:number) {
for (String colo: colour) {
map.put(index , num + colo);
list.add(index);
index++;
}
}
//放入大小王
map.put(52,"大王");
map.put(53,"小王");
list.add(52);
list.add(53);
Collections.shuffle(list);
//三位玩家
List<Integer> l1 =new ArrayList<>();
List<Integer> l2 =new ArrayList<>();
List<Integer> l3 =new ArrayList<>();
//d底牌
List<Integer> button =new ArrayList<>();
//开始发牌
for (int i = 0; i < list.size(); i++) {
if (i < 3 ){
button.add(list.get(i));
}else if(i % 3 == 0){
l1.add(list.get(i));
}else if(i % 3 == 1){
l2.add(list.get(i));
}else{
l3.add(list.get(i));
}
}
//将牌 排序
Collections.sort(l1);
Collections.sort(l2);
Collections.sort(l3);
Collections.sort(button);
show("郭郭郭呱",l1,map);
show("张三",l2,map);
show("李四",l3,map);
show("底牌",button,map);
}
/**
* 遍历手中的牌
* @param name 玩家姓名
* @param list 牌编号
* @param map 花色及牌
*/
private static void show(String name, List<Integer> list, Map<Integer, String> map) {
//先输出玩家名字且不必换行
System.out.print(name + " ");
//遍历玩家手中的牌
for (Integer in:list) {
String s = map.get(in);
System.out.print(s+" ");
}
//换行
System.out.println();
}
}
有关斗地主发牌功能到此便写好了
若有疑问,或者需要博主改进的地方,请尽管提出!