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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王际涛 中级黑马   /  2015-11-10 18:54  /  1426 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

第一个学会的扑克游戏,你一张我一张,玩到天黑…
import java.util.*;
class puketest {
        public static void main(String[] args) {
                Scanner in=new Scanner(System.in);
                LinkedList<String> a1=new LinkedList<String>();
                LinkedList<String> a2=new LinkedList<String>();
               
                fapai(a1,a2);
                fishing(a1,a2);
        }

        public static void fapai(LinkedList<String> a1,LinkedList<String> a2){ //洗牌_发牌
                List<String> a=new LinkedList<String>();
                a.add("A");a.add("2");a.add("3");a.add("4");a.add("5");a.add("6");a.add("7");
                a.add("8");a.add("9");a.add("10");a.add("J");a.add("Q");a.add("K");
                a.addAll(a);a.add("王");
                a.addAll(a);
                Collections.shuffle(a);//随机排序
                sop("<<<<<<<<<<<<<<<<<钩丁钓鱼>>>>>>>>>>>>>>>>>>");
                for(int i=0;i<a.size();i++){
                        if(i%2==0) a1.add(a.get(i));
                        else a2.add(a.get(i));
                }
                sop("你的牌:");
                printList(a1);
        }

        public static void fishing(LinkedList<String> a1,LinkedList<String> a2){// 游戏规则
                LinkedList<String> a3=new LinkedList<String>();
                int[] flag={1};
                buwanle:while(true){       
                                        while (check(a1,a3,flag)) {
                                                if(flag[0]==0)        break buwanle;                // 退出游戏
                                                if(flag[0]==2){                                                //  自动出牌
                                                        while(true){
                                                                while (check(a1,a3)) continue;                                                                                                                               
                                                                while (check(a2,a3)) continue;                                                                                                                                       
                                                                if(a1.size()==0){
                                                                        System.out.println("你失败了~");
                                                                        break buwanle;
                                                                }else if(a2.size()==0){
                                                                        System.out.println("恭喜你,又赢了~");
                                                                        break buwanle;
                                                                }
                                                        }
                                                }       
                                                continue;
                                        }
                                        while (check(a2,a3)) continue;
                                        if(a1.size()==0){
                                                System.out.println("你失败了~");
                                                break;
                                        }else if(a2.size()==0){
                                                System.out.println("恭喜你,又赢了~");
                                                break;
                                        }       
                }
        }
        //a2出一个元素,看a3中是否有同样元素(电脑出牌)
        public static boolean check(LinkedList<String> a2,LinkedList<String> a3){
                String r =a2.remove();
                if(a3.indexOf(r)!=-1){//如果有r元素,a1增加,a3减少
                        for(int i=a3.indexOf(r);i<a3.size();i++)
                                a2.add(a3.remove(i));
                        a2.add(r);
                        return true;
                }
                else{
                        a3.add(r);
                        return false;
                }
        }
        //a2出一个元素,看a3中是否有同样元素(人出牌)
        public static boolean check(LinkedList<String> a1,LinkedList<String> a3,int[] flag){
                Scanner in=new Scanner(System.in);
                while(true){
                        sop("1 出一张  2 全部自动出牌  3 不玩了");
                        int aa=in.nextInt();
                        switch (aa) {
                                case 1:
                                        String r =a1.remove();
                                        if(a3.indexOf(r)!=-1){//如果有r元素,a1增加,a3减少
                                                for(int i=a3.indexOf(r);i<a3.size();i++){
                                                        a1.add(a3.remove(i));
                                                }
                                                a1.add(r);
                                                sop("你的牌:");
                                                printList(a1);
                                                return true;
                                        }
                                        else{
                                                sop("你的牌:");
                                                printList(a1);
                                                a3.add(r);
                                                return false;
                                        }       
                                case 2:
                                        flag[0]=2;
                                        return true;
                                case 3:
                                        flag[0]=0;
                                        return true;
                                default :
                                        sop("你输错啦,重新输吧");
                                        continue;       
                        }       
                }
        }

        public static void sop(Object a){
                System.out.println(a);
        }
        public static void printList(LinkedList a){                //每行五个元素的方式打印一个集合
                for(int i=0;i<a.size();i++){
                        if(i!=0&&i%5==0){sop("\n");}
                        System.out.print(a.get(i)+" ");
                }
                sop("\n");
        }
}

评分

参与人数 2黑马币 +40 收起 理由
cc3441251 + 20
迷茫不堪的年纪 + 20 看的有点疲倦, 赏你点吧, 加油.

查看全部评分

2 个回复

正序浏览
确实很厉害  不过没看懂怎么玩的……
回复 使用道具 举报
加油!~~~~~~~~~~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马