A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© BlackTiger 中级黑马   /  2016-8-19 17:32  /  658 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package Demo2;

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

/*
* 斗地主程序
* 核心思想是把纸牌通过Map集合封装起来
* 思路
* 1,造纸牌.Map集合
* 2,发牌,给玩家分发数字(后期可以对应到牌)
* 3,匹配,通过玩家集合中的数字找到Map集合中的Value
*/
public class DouDemo {

        public static void main(String[] args) {
                //1.造牌
                //先造花色
                ArrayList<String> color=new ArrayList<String>();
                Collections.addAll(color, "♥","♣","♠","♦");
                //再造牌的点数
                ArrayList<String> number=new ArrayList<String>();
                Collections.addAll(number, "3","4","5","6","7","8","9","10","J","Q","K","A","2");
                //再造Map集合,真正的牌
                HashMap<Integer,String> map=new HashMap<>();
                //增强for循环
                int index=0;
                for(String key:number){
                        for(String value:color){
                                //Map集合中Key是数字,int类型;Value是字符串
                                map.put(index++, key+value);
                        }
                }
                map.put(index++,"小王");
                map.put(index++, "大王");
                //-----------------------扑克牌制造完毕.--------------------
                //2,发牌.创建一个包含54个元素的集合,把这54个数字分给3个玩家和底牌
                ArrayList<Integer> key=new ArrayList<Integer>();
                for (int i = 0; i < 54; i++) {
                        key.add(i);
                }
                //打乱顺序
                Collections.shuffle(key);
                //发给3个玩家和底牌
                ArrayList<Integer> keyPlay1=new ArrayList<Integer>();
                ArrayList<Integer> keyPlay2=new ArrayList<Integer>();
                ArrayList<Integer> keyPlay3=new ArrayList<Integer>();
                ArrayList<Integer> keyCards=new ArrayList<Integer>();
                //打乱顺序后的数字集合,角标对应的就不是里面的数字了,所以,循环把54个角标值赋值给玩家后,玩家集合里的数字也是乱的
                for(int i=0;i<key.size();i++){
                        if(i>=51){
                                keyCards.add(key.get(i));
                        }
                        else if(i%3==0){
                                keyPlay1.add(key.get(i));
                        }
                        else if(i%3==1){
                                keyPlay2.add(key.get(i));
                        }
                        else{
                                keyPlay3.add(key.get(i));
                        }
                }
                //对玩家的牌进行排序,符合常规玩法的码牌规则
                Collections.sort(keyPlay1);
                Collections.sort(keyPlay2);
                Collections.sort(keyPlay3);
                //让玩家集合中的数字(Key)与Map集合产生关系
                ArrayList<String> valuePlay1=new ArrayList<>();
                ArrayList<String> valuePlay2=new ArrayList<>();
                ArrayList<String> valuePlay3=new ArrayList<>();
                ArrayList<String> valueCards=new ArrayList<>();
                for(Integer key1:keyPlay1){
                        valuePlay1.add(map.get(key1));
                }
                for(Integer key1:keyPlay2){
                        valuePlay2.add(map.get(key1));
                }
                for(Integer key1:keyPlay3){
                        valuePlay3.add(map.get(key1));
                }
                for(Integer key1:keyCards){
                        valueCards.add(map.get(key1));
                }
                       
               
                System.out.println(valuePlay1);
                System.out.println(valuePlay2);
                System.out.println(valuePlay3);
                System.out.println(valueCards);
        }

}
[AppleScript] 纯文本查看 复制代码
package Demo2;

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

/*
 * 斗地主程序
 * 核心思想是把纸牌通过Map集合封装起来
 * 思路
 * 1,造纸牌.Map集合
 * 2,发牌,给玩家分发数字(后期可以对应到牌)
 * 3,匹配,通过玩家集合中的数字找到Map集合中的Value
 */
public class DouDemo {

	public static void main(String[] args) {
		//1.造牌
		//先造花色
		ArrayList<String> color=new ArrayList<String>();
		Collections.addAll(color, "♥","♣","♠","♦");
		//再造牌的点数
		ArrayList<String> number=new ArrayList<String>();
		Collections.addAll(number, "3","4","5","6","7","8","9","10","J","Q","K","A","2");
		//再造Map集合,真正的牌
		HashMap<Integer,String> map=new HashMap<>();
		//增强for循环
		int index=0;
		for(String key:number){
			for(String value:color){
				//Map集合中Key是数字,int类型;Value是字符串
				map.put(index++, key+value);
			}
		}
		map.put(index++,"小王");
		map.put(index++, "大王");
		//-----------------------扑克牌制造完毕.--------------------
		//2,发牌.创建一个包含54个元素的集合,把这54个数字分给3个玩家和底牌
		ArrayList<Integer> key=new ArrayList<Integer>();
		for (int i = 0; i < 54; i++) {
			key.add(i);
		}
		//打乱顺序
		Collections.shuffle(key);
		//发给3个玩家和底牌
		ArrayList<Integer> keyPlay1=new ArrayList<Integer>();
		ArrayList<Integer> keyPlay2=new ArrayList<Integer>();
		ArrayList<Integer> keyPlay3=new ArrayList<Integer>();
		ArrayList<Integer> keyCards=new ArrayList<Integer>();
		//打乱顺序后的数字集合,角标对应的就不是里面的数字了,所以,循环把54个角标值赋值给玩家后,玩家集合里的数字也是乱的
		for(int i=0;i<key.size();i++){
			if(i>=51){
				keyCards.add(key.get(i));
			}
			else if(i%3==0){
				keyPlay1.add(key.get(i));
			}
			else if(i%3==1){
				keyPlay2.add(key.get(i));
			}
			else{
				keyPlay3.add(key.get(i));
			}
		}
		//对玩家的牌进行排序,符合常规玩法的码牌规则
		Collections.sort(keyPlay1);
		Collections.sort(keyPlay2);
		Collections.sort(keyPlay3);
		//让玩家集合中的数字(Key)与Map集合产生关系
		ArrayList<String> valuePlay1=new ArrayList<>();
		ArrayList<String> valuePlay2=new ArrayList<>();
		ArrayList<String> valuePlay3=new ArrayList<>();
		ArrayList<String> valueCards=new ArrayList<>();
		for(Integer key1:keyPlay1){
			valuePlay1.add(map.get(key1));
		}
		for(Integer key1:keyPlay2){
			valuePlay2.add(map.get(key1));
		}
		for(Integer key1:keyPlay3){
			valuePlay3.add(map.get(key1));
		}
		for(Integer key1:keyCards){
			valueCards.add(map.get(key1));
		}
			
		
		System.out.println(valuePlay1);
		System.out.println(valuePlay2);
		System.out.println(valuePlay3);
		System.out.println(valueCards);
	}

}


6 个回复

倒序浏览
加油!加油!加油!加油!
回复 使用道具 举报
加油加油!!
回复 使用道具 举报
不错。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
回复 使用道具 举报
刚学过,嘻嘻
回复 使用道具 举报
66666666666666666
回复 使用道具 举报
顶顶顶顶顶顶顶顶顶顶顶
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马