码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-10-31 22:10:25      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:for   highlight   cas   integer   ipa   static   分析   print   []   

不排序的:

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 ArrayList<String>();
//		装牌
//		黑桃A,黑桃2,黑桃3……
//		红桃A……
//		方块A……
//		梅花A……
//		定义一个花色数组
		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.concat(number));
			}
		}
		array.add("小王");
		array.add("大王");
//		洗牌
		Collections.shuffle(array);
//		发牌
		ArrayList<String> zengjiao = new ArrayList<String>();
		ArrayList<String> xiajiao = new ArrayList<String>();
		ArrayList<String> sb = new ArrayList<String>();
		ArrayList<String> dipai = new ArrayList<String>();
		for (int x = 0; x < array.size(); x++) {
			if (x>=array.size()-3) {
				dipai.add(array.get(x));
			} else if (x % 3 == 0) {
				zengjiao.add(array.get(x));
			} else if (x % 3 == 1) {
				xiajiao.add(array.get(x));
			} else if (x % 3 == 2) {
				sb.add(array.get(x));
			}
		}
//		看牌
		lookPoker("曾饺",zengjiao);
		lookPoker("虾饺",xiajiao);
		lookPoker("傻逼",sb);
		lookPoker("底牌",dipai);
		
	}
		public static void lookPoker(String name, ArrayList<String> array) {
			System.out.println(name+"的牌是:");
			for (String s :array) {
				System.out.print(s+" ");
			}
			System.out.println();
	}
}

  排序后的:

package cn.idcast5;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
/*思路
 * A 创建一个HashMap集合
 * B 创建一个ArrayList集合
 * C 创建花色数组和点数数组
 * D 从0开始往HashMap里面存储编号,并存储对应的牌
 *    同时往ArrayList里面存储编号
 * E 洗牌(洗的是编号)
 * F 发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
 * G 看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
*/public class Shiyue3102 {
public static void main(String[] args) {
	//创建一个HashMap集合
	HashMap<Integer, String> hm = new HashMap<Integer,String>();
	//创建一个ArrayList集合
	ArrayList<Integer> array = new ArrayList<Integer>();
	//创建花色数组和点数数组
	String[] colors = { "?", "?", "?", "□" };
	String[] numbers = {"3", "4", "5", "6", "7", "8", "9", "10",
			"J", "Q", "K","A", "2" };
	//从0开始
	int index = 0;
	for (String number :numbers) {
		for (String color :colors) {
			String poker = color.concat(number);
			//往HashMap里面存储编号,并存储对应的牌
			hm.put(index, poker);
			//同时往ArrayList里面存储编号
			array.add(index);
			index ++;
		}
	}
	hm.put(index, "小王");
	array.add(index);
	index++;
	hm.put(index, "大王");
	array.add(index);
	// 洗牌(洗的是编号)
	Collections.shuffle(array);
	//发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
	TreeSet<Integer> zengjiao = new TreeSet<Integer>();
	TreeSet<Integer> xiajiao = new TreeSet<Integer>();
	TreeSet<Integer> sb = new TreeSet<Integer>();
	TreeSet<Integer> dipai = new TreeSet<Integer>();
	for (int x=0;x<array.size();x++) {
		if (x>= array.size()-3) {
			dipai.add(array.get(x));
		} else if (x%3 ==0) {
			zengjiao.add(array.get(x));
		} else if (x%3 ==1) {
			xiajiao.add(array.get(x));
		} else if (x%3 == 2) {
			sb.add(array.get(x));
		}
	}
	//看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
	lookPoker("曾饺",zengjiao,hm);
	lookPoker("虾饺",xiajiao,hm);
	lookPoker("傻逼",sb,hm);
	lookPoker("底牌",dipai,hm);
	
}
// 这里要的是名字,牌的编号,编号对应的牌
	public static void lookPoker(String name,TreeSet<Integer> ts,
			HashMap<Integer, String> hm) {
		System.out.println(name+"的牌是:");
		for (Integer key : ts) {
			String value = hm.get(key);
			System.out.print(value +" ");
		}
		System.out.println();
	}
}

  

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

标签:for   highlight   cas   integer   ipa   static   分析   print   []   

原文地址:http://www.cnblogs.com/zengjiao/p/6017248.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!