ArrayList模拟斗地主的洗牌,发牌和看牌

/*
* ArrayList模拟斗地主的洗牌,发牌和看牌
*
* 分析:
* 1.创建一个牌盒
* 2.装牌
* 3.洗牌
* 4.发牌
* 5.看牌
*/

代码:

import java.util.ArrayList;
import java.util.Collections;

/**
 *  ArrayList模拟斗地主的洗牌,发牌和看牌
 * @author TP
 *
 */
public class Doudizhu {
	/*
	 *  ArrayList模拟斗地主的洗牌,发牌和看牌
	 *
	 * 分析:
	 * 		1.创建一个牌盒
	 * 		2.装牌
	 * 		3.洗牌
	 * 		4.发牌
	 * 		5.看牌
	 */

	public static void main(String[] args) {

		//1.创建一个牌盒
		ArrayList<String> array = new ArrayList<String>();

		//2.装牌
		//牌的花色:红桃  ? ,黑桃 ? ,梅花 ? ,方块   ?
		//定义一个花色数组
		String[] colors = {"?","?","?","?"};

		//定义 一个大小数组
		String[] num = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

		//定义字符串来放大小王
		String smallBoss = "小王";
		String bigBoss = "大王";

		//把花色和大小放入集合中
		for(String color : colors){
			for(String num1 : num){
				array.add(color.concat(num1));
			}
		}

		//装入大小王
		array.add(smallBoss);
		array.add(bigBoss);

		//3.洗牌
		Collections.shuffle(array);

		//4.发牌
		ArrayList<String> zhangsan = new ArrayList<String>();
		ArrayList<String>  lisi= new ArrayList<String>();
		ArrayList<String> wangwu = new ArrayList<String>();
		ArrayList<String> dipei = new ArrayList<String>();

		for(int i = 0; i < array.size(); i++){
			//如索引大于等于array.size()-3,则是底牌
			if(i >= array.size()-3){
				dipei.add(array.get(i));
			}else if(i % 3 == 0){
				zhangsan.add(array.get(i));
			}else if(i % 3 == 1){
				lisi.add(array.get(i));
			}else if(i % 3 == 2){
				wangwu.add(array.get(i));
			}
		}

		//5.看牌
		System.out.println("array : "+array);
		System.out.println("张三 : "+zhangsan);
		System.out.println("李四 : "+lisi);
		System.out.println("王五 : "+wangwu);
		System.out.println("底牌 : "+dipei);
	}

}

  输出结果:

    

    array : [?4, ?K, ?A, ?J, ?3, ?2, ?J, ?7, ?4, ?Q, ?3, ?6, ?4, ?7, 大王, ?5, ?K, ?A, ?9, ?5, ?10, ?Q, ?A, ?10, ?6, ?Q, ?2, ?7, ?6, ?5, ?J, ?8, ?3, ?8, 小王, ?8, ?5, ?10, ?6, ?10, ?K, ?J, ?A, ?8, ?2, ?7, ?K, ?9, ?Q, ?2, ?9, ?9, ?4, ?3]

    张三 : [?4, ?J, ?J, ?Q, ?4, ?5, ?9, ?Q, ?6, ?7, ?J, ?8, ?5, ?10, ?A, ?7, ?Q]
    李四 : [?K, ?3, ?7, ?3, ?7, ?K, ?5, ?A, ?Q, ?6, ?8, 小王, ?10, ?K, ?8, ?K, ?2]
    王五 : [?A, ?2, ?4, ?6, 大王, ?A, ?10, ?10, ?2, ?5, ?3, ?8, ?6, ?J, ?2, ?9, ?9]
    底牌 : [?9, ?4, ?3]

原文地址:https://www.cnblogs.com/majingang/p/9031991.html

时间: 2024-08-10 14:39:15

ArrayList模拟斗地主的洗牌,发牌和看牌的相关文章

Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)

规则: 1.54张扑克牌,有花色 2.顺序打乱,一人一张依次发牌,一人17张,留三张作为底牌 3.看牌:按大小王2A....43的序排列打印 示例: package demo; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class DouDiZhu { public static void main(String[] args) { // 创建Map集合,键

模拟斗地主洗牌、发牌(含有排序和不排序的)

不排序的: package cn.idcast5; import java.util.ArrayList; import java.util.Collections; //模拟斗地主洗牌发牌 //分析 //A 创建一个牌盒 //B 装牌 //C 洗牌 //D 发牌 //E 看牌 public class Shiyue31 { public static void main(String[] args) { // 创建一个牌盒 ArrayList<String> array = new Arra

代码实现:模拟斗地主洗牌和发牌并对牌进行排序的代码实现

package com.loaderman.test; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet; public class Test{ /** * * A:案例演示 * 模拟斗地主洗牌和发牌并对牌进行排序的代码实现 * * 分析: * 1,买一副扑克,其实就是自己创建一个集合对象,将扑克牌存储进去 * 2,洗牌 * 3,

代码实现:模拟斗地主洗牌和发牌,牌没有排序

package com.loaderman.test; import java.util.ArrayList; import java.util.Collections; public class Test { /** * * A:案例演示 * 模拟斗地主洗牌和发牌,牌没有排序 * * 分析: * 1,买一副扑克,其实就是自己创建一个集合对象,将扑克牌存储进去 * 2,洗牌 * 3,发牌 * 4,看牌 */ public static void main(String[] args) { //1

模拟斗地主

(1)无序import java.util.ArrayList;import java.util.Collections; /*模拟斗地主的洗牌和发牌 *思路: 1)创建一个牌盒(容器:集合) ArrayList<String> 2)装牌 定义花色数组和点数数组(A,K) 红桃A 黑桃A 梅花A 方片A .... 3)洗牌 Collections中的随机置换的功能 4)发牌 遍历集合(获取集合中的具体的牌) 需要判断:选择结构语句 1--->A 2--->B 3----C 4---

java 18 - 12 模拟斗地主洗牌、发牌,并对发的牌进行排序

1 /* 2 模拟斗地主的发牌功能(发牌完毕后发到手上的牌是有顺序的) 3 分析: 4 A:创建一个HashMap集合 5 B:创建一个ArrayList集合 6 C:创建两个字符串,一个是花色,一个是牌的数字 (发牌得有一盒牌) 7 为了方便以后的排序,创建这两个字符串的时候,按照大小顺序排列(斗地主中的大小顺序) 8 大小王除外 9 D:把这两个字符串放进HashMap集合中(拼接一起 花色+牌号) 同时给每个放进去牌进行编码0--52并存储 10 同时也给ArrayList集合中存储编码,

Map集合、HashMap集合、LinkedHashMap集合、Hashtable集合、Collections工具类和模拟斗地主洗牌和发牌

1.Map集合概述和特点 * A:Map接口概述  * 查看API可以知道:  * 将键映射到值的对象  * 一个映射不能包含重复的键  * 每个键最多只能映射到一个值 * B:Map接口和Collection接口的不同  * Map是双列的,Collection是单列的  * Map的键唯一,Collection的子体系Set是唯一的  * Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效 2.Map集合的功能概述 * A:Map集合的功能概述  *

模拟斗地主洗牌发牌

(一)案例介绍: 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1.组装54张扑克牌 2.将54张扑克牌的顺序打乱 3.三个玩家参与游戏,三人交替摸牌,没人17张牌,最后三张留作底牌. 4.查看三人各自手中的牌(按照牌的大小排序).底牌 手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3 (二)案例需求分析 1.准备牌 完成数字与牌的映射关系 使用双列Map(HashMap)集合,完成一个数字与字符串字牌的对应关系(相当于一个字典). 2.洗牌

18.29_集合框架(模拟斗地主洗牌和发牌并对牌进行排序的代码实现)

1 package dou_di_zhu; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 import java.util.Collections; 6 import java.util.HashMap; 7 import java.util.TreeSet; 8 9 /** 10 * 思路: 11 * A:创建一个HashMap集合 12 * B:创建一个ArrayList集合 13 * C:创建花色数组和点数