黑马程序员技术交流社区

标题: 模拟斗地主发牌 [打印本页]

作者: wx_J25HxI5W    时间: 2015-6-23 22:56
标题: 模拟斗地主发牌
有更好方法的大神,分享一下思路,或者代码,非常感谢。
代码如下,仅供参考。觉得注释少了的童鞋可以提问。

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
/**
* 需求:创建一副扑克牌,洗牌,发牌
* 思路:扑克牌一共54张,留下3张地主牌,将剩下的51张牌等分给3个对象。
* @author
*/
public class qqDouDiZhu {

        public static void main(String[] args) {
                /**定义一个集合,用于接收一整副扑克牌*/
                LinkedList<String> ld = new LinkedList<String>();
                /**定义三个字符串,用于接收发完后的三份扑克牌*/
                LinkedList<String> str1 = new LinkedList<String>();
                LinkedList<String> str2 = new LinkedList<String>();
                LinkedList<String> str3 = new LinkedList<String>();
               
                while(true){
                        Scanner sn = new Scanner(System.in);
                        System.out.println("1:开始斗地主");
                        System.out.println("2:退出斗地主");
                        System.out.println("请输入数字");
                        String st = sn.nextLine();
                        switch(st){
                        case "1":
                        /**定义两个数组,用来创建一副扑克牌*/
                        String[] colors = {"黑桃","红桃","梅花","方片"};
                        String[] numbers = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
                        /**循环装牌*/
                        for(String co : colors){
                                for(String nb : numbers){
                                        ld.add(co.concat(nb));
                                }
                        }
                        ld.add("大鬼");
                        ld.add("小鬼");
                        /**洗牌*/
                        Collections.shuffle((LinkedList<String>) ld);
                        /**打印洗牌之后的顺序,用于验证发牌的顺序是否正确*/
                        System.out.println("洗牌之后的顺序:"+ld);
                        /**发牌*/
                        for(int x=1; x<18; x++){
                                str1.add(ld.removeFirst());
                                str2.add(ld.removeFirst());
                                str3.add(ld.removeFirst());
                        }
                        System.out.println("地主str1的牌是:"+ str1);
                        System.out.println("农民str2的牌是:"+ str2);
                        System.out.println("农民str3的牌是:"+ str3);
                        System.out.println("地主底牌:"+ld);
                        case"2":
                                break;
                        }
                }
        }
}
作者: 陈小林    时间: 2015-6-23 22:58
表示现在还看不懂呀
作者: 遗失丨美好    时间: 2015-6-23 23:43
支持一个   大半夜还在为了技术分而奋斗着  加油  骚年  我看好你
作者: 牛奋    时间: 2015-6-23 23:50
牛逼啊,大神带我飞。
作者: lizhi1817    时间: 2015-6-24 00:06
学习了
作者: 马也keyboard    时间: 2015-6-24 00:09
挺有意思的   学习了
作者: hellotaomi    时间: 2015-6-24 17:04
楼主,为什么要在主函数类的前面加public(public class qqDouDiZhu)呢?我运行的时按Ctrl+C退出运行时会报错:Exception in thread "main" java.lang.NoClassDefFoundError,将public删除后就OK了。求解释
作者: fanxin_meng    时间: 2015-6-24 17:21
支持 ,支持
作者: 八戒    时间: 2015-6-24 17:51
学习ing................................
作者: tinibuzhi    时间: 2015-6-24 18:33
学习一下                    
作者: 王冲6060    时间: 2015-6-24 18:47
学习了!
作者: Foundmoon    时间: 2015-6-24 21:05
最好搞个出牌规则
作者: 一口老郭    时间: 2015-6-24 21:37
表示看不懂啊
作者: liming_heima    时间: 2015-6-24 21:47
主思路挺不错的。
作者: 贾森    时间: 2015-6-24 22:52
这个有点意思
作者: 小朱    时间: 2015-6-24 23:05
挺不错的额
作者: 金亮0602    时间: 2015-6-24 23:09
还需要好好琢磨,刚接触集合




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