(案例)模拟斗地主发牌洗牌看牌
需求:使用一个集合对象存储一副扑克牌。将所有扑克牌的顺序打乱,然后分发给用集合表示的三个玩家和底牌,并打印玩家和底牌的集合内容
步骤:1.买一副扑克牌
将花色和数字分别进行组合,生成所有的普通牌,手动添加“大王”、“小王”。
使用Collections工具类的shuffle()方法打乱牌的顺序
3.发牌
遍历牌堆,将每一张牌分发到三个玩家集合中
4.看牌
分别打印每个玩家集合的内容
步骤一 :买一副扑克牌
分析:
1.创建数字数组:
```java
String[] nums = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; ```
2.创建花色数组:
String[] colors = {"方块","梅花","红桃","黑桃"};
3.将每个花色分别和数字进行拼接
colors[i].concat(nums[j]);
package cn.itcast.demo17;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*
需求:模拟斗地主发牌
步骤:
1.买牌
2.洗牌
3.发牌
4.看牌
*/
public class SendPokerTest {
public static void main(String[] args) {
//1.买牌
//1.1定义一个双列集合,键:表示牌的编号,值:表示具体的牌。规则:编号越小。牌越小
Map<Integer,String> pokers = new HashMap<>();
//1.2定义一个单列集合,用来存储所有牌的编号
List<Integer> list = new ArrayList<>();
//1.3具体的买牌操作
//普通牌:52
String[] colors = {"红桃","黑桃","梅花","方块"};
String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
int num = 0;//表示牌的编号
//通过循环嵌套 造普通牌
//外循环一次,内循环一圈
for (String number:numbers){
//外循环获取所有的点数
for (String color:colors){
//内循环获取所有的花色
String poker = color + number;
//将牌的编号,具体的牌放到双列集合中
pokers.put(num,poker);
//将牌的编号放到单列集合中
list.add(num);
//每添加一张牌,编号要自增
num++;
}
}
//大小王
//添加小王
pokers.put(num,"小王");
list.add(num++);
//添加大王
pokers.put(num,"大王");
list.add(num++);
//打印牌
System.out.println("所有的牌:" + pokers);
System.out.println("牌的编号:" + list);
}
}
步骤二、三:洗牌和发牌
分析:
1.使用Collections工具类的shuffle()方法打乱牌堆集合的顺序
2.分别创建三个玩家集合对象和底牌集合对象
3.遍历牌堆的每一张牌,分别将索引对3取模的值为0,1,2的牌存放到三个玩家集合中,将最后三张存放到底牌集合中
package cn.itcast.demo17;
import java.util.*;
/*
需求:模拟斗地主发牌
步骤:
1.买牌
2.洗牌
3.发牌
4.看牌
*/
public class SendPokerTest {
public static void main(String[] args) {
//1.买牌
//1.1定义一个双列集合,键:表示牌的编号,值:表示具体的牌。规则:编号越小。牌越小
Map<Integer, String> pokers = new HashMap<>();
//1.2定义一个单列集合,用来存储所有牌的编号
List<Integer> list = new ArrayList<>();
//1.3具体的买牌操作
//普通牌:52
String[] colors = {"红桃", "黑桃", "梅花", "方块"};
String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
int num = 0;//表示牌的编号
//通过循环嵌套 造普通牌
//外循环一次,内循环一圈
for (String number : numbers) {
//外循环获取所有的点数
for (String color : colors) {
//内循环获取所有的花色
String poker = color + number;
//将牌的编号,具体的牌放到双列集合中
pokers.put(num, poker);
//将牌的编号放到单列集合中
list.add(num);
//每添加一张牌,编号要自增
num++;
}
}
//大小王
//添加小王
pokers.put(num, "小王");
list.add(num++);
//添加大王
pokers.put(num, "大王");//添加完大王就是最后一张牌了不需要加加
list.add(num);
//打印牌
System.out.println("所有的牌:" + pokers);
System.out.println("牌的编号:" + list);
//2.洗牌
Collections.shuffle(list);
System.out.println("洗好牌后,编号为:" + list);
//3.发牌
//3.1定义4个集合,分别表示3个玩家,底牌
List<Integer> qiaofeng = new ArrayList<>();
List<Integer> xuzhu = new ArrayList<>();
List<Integer> duanyu
