一、案例介绍
按照斗地主的规则,完成洗牌发牌的动作。
具体规则:
1. 组装54张扑克牌
2. 将54张牌顺序打乱
3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
4. 查看三人各自手中的牌(按照牌的大小排序)、底牌
- 手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3
二、案例需求分析
- 准备一副扑克牌,使用Map,完成数字与字符串的映射
- 洗牌和发牌,操作的都是Map集合的键
- 3张底牌放在一个ArrayList<String>
- 发牌就是发数字
- 看牌:就是遍历集合,查询键值对
三、实现代码步骤
- 首先修改eclips的默认编码为UTF-8
- 代码展示
package stu.demo1;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Set;
/**
* @author Mr.GE
* @date 创建时间:2018-4-2 下午7:09:22
* @version 1.0
* @parameter
* @since
* @return
*/
public class PokerCards {
public static void main(String[] args) {
//准备花色
ArrayList<String> color = new ArrayList<String>();
color.add("♠");
color.add("♥");
color.add("♣");
color.add("♦");
//准备数字
ArrayList<String> number = new ArrayList<String>();
Collections.addAll(number,"3","4","5","6","7","8","9","10","J","Q","K","A","2");
//准备扑克牌序号
//ArrayList<String>
//准备扑克牌
LinkedHashMap <Integer,String> poker = new LinkedHashMap<Integer, String>();
int index = 0;
for (String num : number) {
for (String cor : color) {
poker.put(index++, cor+num);
}
}
//增加大小王
poker.put(index++, "小王");
poker.put(index++, "大王");
//数牌
Set<Integer> str = poker.keySet();
for (Integer integer : str) {
System.out.println(integer+poker.get(integer) );
}
//洗牌
ArrayList<Integer> array = new ArrayList<Integer>();
for (int i = 0; i < 54; i++) {
array.add(i);
}
Collections.shuffle(array);
//准备玩家
ArrayList<String> player1 = new ArrayList<String>();
ArrayList<String> player2 = new ArrayList<String>();
ArrayList<String> player3 = new ArrayList<String>();
ArrayList<String> dipai = new ArrayList<String>();
//发牌
for (int i = 0; i < array.size(); i++) {
if(i>50)
{
dipai.add(poker.get(array.get(i)));
}
else
{
if(i % 3 == 0)
{
player1.add(poker.get(array.get(i)));
}
else if(i % 3 == 1)
{
player2.add(poker.get(array.get(i)));
}
else if(i % 3 == 2)
{
player3.add(poker.get(array.get(i)));
}
}
}
//看牌
System.out.print("底牌");
for (String string : dipai) {
System.out.print(string);
}
System.out.println();
System.out.println("玩家1");
for (String string : player1) {
System.out.print(string);
}
System.out.println();
System.out.println("玩家2");
for (String string : player2) {
System.out.print(string);
}
System.out.println();
System.out.println("玩家3");
for (String string : player3) {
System.out.print(string);
}
System.out.println();
}
}
全文完!