普通版
需求:
.通过程序实现斗地主过程中的洗牌
思路:
1.创建一个牌盒,也就是定义一个集合对象,用arraylist实现
2.往牌盒里面装牌
3.洗牌,用collections 的 shuffle函数实现
4.发牌,也就是遍历集合 ,给三个玩家发牌
5.看牌,也就是三个玩家分别遍历自己的牌
package collections模拟斗地主升级版_集合综合案例;
import java.util.ArrayList;
import java.util.Collections;
import ArrayList存储学生对象并遍历.student;
public class pokerdemo简单版本 {
/*
需求:
.通过程序实现斗地主过程中的洗牌
思路:
1.创建一个牌盒,也就是定义一个集合对象,用arraylist实现
2.往牌盒里面装牌
3.洗牌,用collections 的 shuffle函数实现
4.发牌,也就是遍历集合 ,给三个玩家发牌
5.看牌,也就是三个玩家分别遍历自己的牌
*/
public static void main(String[] args) {
// 1.创建一个牌盒,也就是定义一个集合对象,用arraylist实现
ArrayList<String> array = new ArrayList<String>();
// 2.往牌盒里面装牌
/* ♣A....♣k
* ♦A....♦K
* ♥A....♥K
* ♠A....♠K
* 大王,小王
*/
String colors []= {"♣","♦","♥","♠"};
// 定义一个点数数组
String numbers []= {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
// 拼接
for (String color : colors) {
for (String number : numbers) {
array.add(color+number);
}
}
array.add("大boss");
array.add("小boss");
// 3.洗牌,用collections 的 shuffle函数实现
Collections.shuffle(array);
// 4.发牌,也就是遍历集合 ,给三个玩家发牌
ArrayList<String> 刘德华 = new ArrayList<String>();
ArrayList<String> 林青霞 = new ArrayList<String>();
ArrayList<String> 王祖贤 = new ArrayList<String>();
ArrayList<String> 三张底牌 = new ArrayList<String>();
// .public E get(int index)返回指定索引处的元素
for (int i = 0; i <array.size(); i++) {
if(i>=array.size()-3) {
三张底牌.add(array.get(i));
}if(i%3==0) {
刘德华.add(array.get(i));
}if(i%3==1) {
林青霞.add(array.get(i));
}if(i%3==2) {
王祖贤.add(array.get(i));
}
}
// 5.看牌,也就是三个玩家分别遍历自己的牌
System.out.println("刘德华的牌是"+刘德华);
System.out.println("林青霞的牌是"+林青霞);
System.out.println("王祖贤的牌是"+王祖贤);
System.out.println("三张底牌是"+三张底牌);
}
}
升级版
需求:
.通过程序实现斗地主过程中的洗牌,发牌和看牌,要求对牌进行排序
思路:
1.创建HashMap,键是编号,值是牌
2.创建arraylist,存储编号
3.创建花色数组和点数数组
4.从0开始,往hashmap里面储存编号,同时往arraylist里面储存编号
5.洗牌,洗的是编号,用collections的shuffle方法实现
6.发牌(发的也是编号,为了保证编号是排序的,创建treeSet集合实现)
7.定义方法看牌(遍历treeset集合,获取编号,到hashmap集合找对应的牌)
8.调用看牌方法
package collections模拟斗地主升级版_集合综合案例;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeSet;
import Hashmap存储学生对象并遍历.student;
public class pokerdemo升级版 {
/*
需求:
.通过程序实现斗地主过程中的洗牌,发牌和看牌,要求对牌进行排序
思路:
1.创建HashMap,键是编号,值是牌
2.创建arraylist,存储编号
3.创建花色数组和点数数组
4.从0开始,往hashmap里面储存编号,同时往arraylist里面储存编号
5.洗牌,洗的是编号,用collections的shuffle方法实现
6.发牌(发的也是编号,为了保证编号是排序的,创建treeSet集合实现)
7.定义方法看牌(遍历treeset集合,获取编号,到hashmap集合找对应的牌)
8.调用看牌方法
*/
public static void main(String[] args) {
// 1.创建HashMap,键是编号,值是牌
// 2.创建arraylist,存储编号
Map<Integer,String> hm = new HashMap<Integer,String>();
ArrayList<Integer> array = new ArrayList<Integer>();
// 3.创建花色数组和点数数组
String colors []= {"♣","♦","♥","♠"};
String numbers []= {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
// 4.从0开始,往hashmap里面储存编号,同时往arraylist里面储存编号
int index = 0 ;
for (String color : colors) {
for (String number : numbers) {
hm.put(index, color+number);
array.add(index);
index++;
}
}
hm.put(index,"小王");
array.add(index);
index++;
hm.put(index,"大王");
array.add(index);
// 5.洗牌,洗的是编号,用collections的shuffle方法实现
Collections.shuffle(array);
// 6.发牌(发的也是编号,为了保证编号是排序的,创建treeSet集合实现)
TreeSet<Integer> 林青霞 =new TreeSet<Integer>();
TreeSet<Integer> 周杰伦 =new TreeSet<Integer>();
TreeSet<Integer> 王祖贤 =new TreeSet<Integer>();
TreeSet<Integer> 三底牌 =new TreeSet<Integer>();
for (int i = 0; i <array.size(); i++) {
if(i>=array.size()-3){
三底牌.add(array.get(i));
}if(i%3==0) {
林青霞.add(array.get(i));
}if(i%3==1) {
周杰伦.add(array.get(i));
}if(i%3==2) {
王祖贤.add(array.get(i));
}
}
// 8.调用看牌方法
lookPoker("三底牌", 三底牌, hm);
lookPoker("林青霞", 林青霞, hm);
lookPoker("周杰伦", 周杰伦, hm);
lookPoker("王祖贤", 王祖贤, hm);
}
// 7.定义方法看牌(遍历treeset集合,获取编号,到hashmap集合找对应的牌)
public static void lookPoker(String name,TreeSet<Integer> ts,Map<Integer, String> hm) {
System.out.print(name+"的牌是");
for (Integer key : ts) {
String poker = hm.get(key);
System.out.print(poker+" ");
}
System.out.println();
}
}