黑马程序员技术交流社区

标题: 斗地主游戏 [打印本页]

作者: BlackTiger    时间: 2016-8-19 17:32
标题: 斗地主游戏
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);
        }

}



作者: 胡eason    时间: 2016-8-19 21:23
加油!加油!加油!加油!
作者: Fightingdd    时间: 2016-8-19 21:37
加油加油!!
作者: 冯潜001    时间: 2016-8-19 21:40
不错。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
作者: li--yong    时间: 2016-8-19 22:10
刚学过,嘻嘻
作者: FunnyKing    时间: 2016-8-19 22:25
66666666666666666
作者: itcoder    时间: 2016-8-19 23:28
顶顶顶顶顶顶顶顶顶顶顶




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2