JAVA实现斗地主洗牌?[Collections类对集合的操作]

导读:本篇文章讲解 JAVA实现斗地主洗牌?[Collections类对集合的操作],希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

设计思路(实现原理)

  1. 创建两个String类型数组,其中一个用于存储牌的花色,一个用于存储牌的数字
  2. 创建一个ArrayList集合作为牌盒,将大小王和不同花色不同数字的牌循环添加到集合中
  3. 用Collections工具类的shuffle()方法洗牌
  4. 创建三个ArrayList集合作为三个人的牌的集合,并循环发牌,要留三张底牌
  5. 打印出三个人的牌和集合中留的三张底牌

代码分析

               1. 创建存取四种花色和牌数字的两个数组

// 表示花色的数组
String[] colors = { "黑桃", "红桃", "梅花", "方块" };
// 表示点数的数组
String[] numbers = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
					"J", "Q", "K" };

              2.创建一个ArrayList集合作为牌盒,将大小王和不同花色不同数字的牌循环添加到集合中 

// 找一个牌盒
ArrayList<String> array = new ArrayList<String>();
array.add("大王");//添加大小王
array.add("小王");
// 循环装牌,外层循环四种花色,内层数字牌(这也是大小王先添加的原因)。组成一副扑克
for (String c : colors) {
	for (String n : numbers) {
		    array.add(c.concat(n));
		}
	}

 

                3.用Collections工具类的shuffle()方法洗牌

// 洗牌,对List集合中的元素进行随机排序
Collections.shuffle(array);

 

                4.创建三个ArrayList集合作为三个人的牌的集合,并循环发牌,要留三张底牌 

            // 发牌
            ArrayList<String> linString = new ArrayList<String>();
			ArrayList<String> zhouString = new ArrayList<String>();
			ArrayList<String> meString = new ArrayList<String>();
			// 用普通for循环发牌
			for (int x = 0; x < array.size() - 3; x++) {
				if (x % 3 == 0) {//0表示要给linString发牌
					linString.add(array.get(x));
				} else if (x % 3 == 1) {//1表示要给zhouString发牌
					zhouString.add(array.get(x));
				} else if (x % 3 == 2) {//2表示要给meString发牌
					meString.add(array.get(x));
				}
			}
			// 看牌
			System.out.println("linString:" + linString);
			System.out.println("zhouString:" + zhouString);
			System.out.println("meString:" + meString);

 

        注意:为什么要留3张这个玩斗地主都应该知道吧,我就不多说了哦。 

                5.打印出三个人的牌和集合中留的三张底牌(底牌)

 

            // 看底牌
			System.out.print("三张底牌:");
			for (int x = array.size() - 3; x < array.size(); x++) {
				System.out.print(array.get(x) + "  ");
			}

 完整代码

        import java.util.*;
        public class Example18 {
		public static void main(String[] args) {
			// 表示花色的数组
			String[] colors = { "黑桃", "红桃", "梅花", "方块" };
			// 表示点数的数组
			String[] numbers = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
					"J", "Q", "K" };
			// 找一个牌盒
			ArrayList<String> array = new ArrayList<String>();
			array.add("大王");
			array.add("小王");
			// 循环装牌
			for (String c : colors) {
				for (String n : numbers) {
					array.add(c.concat(n));
				}
			}
			// 洗牌
			Collections.shuffle(array);
			// 发牌
			ArrayList<String> linString = new ArrayList<String>();
			ArrayList<String> zhouString = new ArrayList<String>();
			ArrayList<String> meString = new ArrayList<String>();
			// 用普通for
			for (int x = 0; x < array.size() - 3; x++) {
				if (x % 3 == 0) {
					linString.add(array.get(x));
				} else if (x % 3 == 1) {
					zhouString.add(array.get(x));
				} else if (x % 3 == 2) {
					meString.add(array.get(x));
				}
			}
			// 看牌
			System.out.println("linString:" + linString);
			System.out.println("zhouString:" + zhouString);
			System.out.println("meString:" + meString);
			// 看底牌
			System.out.print("三张底牌:");
			for (int x = array.size() - 3; x < array.size(); x++) {
				System.out.print(array.get(x) + "  ");
			}
		}
}

运行结果

                随机的随机的,仅供参考

JAVA实现斗地主洗牌?[Collections类对集合的操作]

 

总结 

                 我认为这是一个比较有意思的案例,大家可以自己写一个打大A的案例来吸收知识点。多了解怎样用Collections类对集合进行操作。有哪些方法。。。自己查文档去吧。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/114676.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!