黑马程序员技术交流社区

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

作者: @31415927    时间: 2016-4-27 22:48
标题: 斗地主
package com.heima.test;

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

public class T3 {
        // 模拟斗地主洗牌和发牌并对牌进行排序的代码实现
        public static void main(String[] args) {
                String[] s = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
                String[] color = {"黑桃","红桃","梅花","方片"};
                //买牌
                HashMap<Integer, String> hm = new HashMap<Integer, String>();
                ArrayList<Integer> list = new ArrayList<>();
                int index = 0;
                //整理牌
                for (String a1 : color) {
                        for (String a2 : s) {
                                String s1 = a1.concat(a2);
                                System.out.print(s1 + " ");
                                hm.put(index,s1);
                                list.add(index);
                                index++;
                        }
                        System.out.println();
                }
                hm.put(index, "小王");
                list.add(index);
                index++;
                hm.put(index, "大王");
                list.add(index);
               
                //洗牌
                Collections.shuffle(list);
               
                //发牌
                TreeSet<Integer> ts1 = new TreeSet<>();
                TreeSet<Integer> ts2 = new TreeSet<>();
                TreeSet<Integer> ts3 = new TreeSet<>();
                TreeSet<Integer> dipai = new TreeSet<>();
               
                for(int i = 0;i < list.size();i ++){
                if(i >= list.size()-3 && i < list.size())
                        dipai.add(list.get(i));
                else if(i % 3 == 0)
                                ts1.add(list.get(i));
                else if(i % 3 == 1)
                        ts2.add(i);
                else        ts3.add(list.get(i));
                }       
               
                //看牌
                look(hm,ts1,"阿辉");
                look(hm,ts2,"明辉");
                look(hm,ts3,"我");
                look(hm,dipai,"底牌");
               
        }

        private static void look(HashMap<Integer, String> hm, TreeSet<Integer> ts1,        String name) {
                System.out.print(name + "的牌" + "\t:");
                for (Integer i : ts1) {
                        System.out.print(hm.get(i) + "\t");
                }
                System.out.println();
        }
}



作者: viking    时间: 2016-4-27 22:52
好难啊,看不懂
作者: @31415927    时间: 2016-4-29 21:45
viking 发表于 2016-4-27 22:52
好难啊,看不懂

看不懂就对了
我的程序自己都看不懂
作者: leo_yang    时间: 2016-4-29 21:54
好难啊,我觉得你自己也看不懂
作者: @31415927    时间: 2016-4-29 21:56
leo_yang 发表于 2016-4-29 21:54
好难啊,我觉得你自己也看不懂

等你学了就会知道其实很好敲的了
作者: tongtian    时间: 2016-4-29 22:10
加油加油加油加油加油
作者: @31415927    时间: 2016-4-29 22:29
tongtian 发表于 2016-4-29 22:10
加油加油加油加油加油

just do it
作者: Master_Yu    时间: 2016-4-29 22:43
上课的代码
作者: @31415927    时间: 2016-4-29 22:47
Master_Yu 发表于 2016-4-29 22:43
上课的代码

对啊,但是自己敲就会各种错了,甚至有时候运行硬是没有大小王




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