Java 模拟斗地主(升级版/普通版)(集合综合运用)

普通版

需求:
    .通过程序实现斗地主过程中的洗牌
思路:
    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();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

看到我,请让我去学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值