• Java纸牌拖拉机简单模拟


      有天跟前任玩纸牌的拖拉机,来来回回玩了好长时间,分不出胜负,当时就在想,这玩意能分出胜负吗?于是心血来潮就想写一个程序模拟一下,看到底能不能分出胜负,写出来了,能分出胜负,但貌似哪里还有点问题,总共52张牌,到最后游戏结束,有时候剩四十多牌,有时候剩53、52张牌,不知道其牌去哪了哈哈,先扔着吧,有时间再看看。

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    
    /**
     * ClassName:Test <br/>
     * Date: 2018年9月24日 上午9:51:37 <br/>
     * 
     * @author Plum
     */
    public class Tractor {
        public static void main(String[] args) {
            // 模拟去除两张王的52张扑克牌
            List<Integer> puke = new ArrayList<Integer>();
            for (int i = 1; i < 14; i++) {
                for (int j = 0; j < 4; j++) {
                    puke.add(i);
                }
            }
            System.out.println("扑克牌模拟完毕。。。。。。。。");
            // 洗牌
            Collections.shuffle(puke);
            List<Integer> person1 = new ArrayList<Integer>();
            List<Integer> person2 = new ArrayList<Integer>();
            for (int i = 0; i < puke.size(); i++) {
                if (i < puke.size() / 2) {
                    person1.add(puke.get(i));
                } else {
                    person2.add(puke.get(i));
                }
            }
            List<Integer> pub = new ArrayList<Integer>();
            do {
                // 第一个人先出牌
                int t = person2.get(0);
                pub.add(t);
                person2.remove(0);
                System.out.println("甲出牌:" + t);
                // 判断最后一张牌和前面的每一张是否相等,相等则拿走
                // 拿到最后一张牌
                if (pub.size() > 1) {
                    int first = -1;
                    int l = pub.get(pub.size() - 1);
                    for (int i = 0; i < pub.size(); i++) {
                        System.out.println("池子中的牌分别为:" + pub.get(i));
                    }
                    for (int i = 0; i < pub.size() - 1; i++) {
                        if (l == pub.get(i)) {
                            System.out.println("第" + (i + 1) + "张牌和刚打入的一致,收进去!");
                            first = i;
                            break;
                        }
                    }
                    // 将牌收入
                    if (first != -1) {
                        for (int i = pub.size() - 1; i > first - 1; i--) {
                            person2.add(pub.get(i));
                            pub.remove(i);
                        }
                    }
                }
                System.out.println("甲总共" + person2.size() + "张牌:" + person2.toString());
                // 第二个人出牌
                if (person1.size() != 0) {
                    t = person1.get(0);
                    pub.add(t);
                    person1.remove(0);
                    System.out.println("乙出牌:" + t);
                    if (pub.size() > 1) {
                        int first = -1;
                        int l = pub.get(pub.size() - 1);
                        for (int i = 0; i < pub.size(); i++) {
                            System.out.println("池子中的牌分别为:" + pub.get(i));
                        }
                        for (int i = 0; i < pub.size() - 1; i++) {
                            if (l == pub.get(i)) {
                                System.out.println("第" + (i + 1) + "张牌和刚打入的一致,收进去!");
                                first = i;
                                break;
                            }
                        }
                        // 将牌收入
                        if (first != -1) {
                            for (int i = pub.size() - 1; i > first - 1; i--) {
                                person1.add(pub.get(i));
                                pub.remove(i);
                            }
                        }
                    }
                }
                System.out.println("乙总共" + person1.size() + "张牌:" + person1.toString());
            } while (person1.size() != 0 && person2.size() != 0);
            System.out.println("==========游戏结束==========");
            System.out.println("乙剩余" + person1.size() + "张牌!");
            System.out.println("甲剩余" + person2.size() + "张牌!");
        }
    }
  • 相关阅读:
    makefile 中 $@ $^ %< 使用
    makefile中的自动化变量$@,$%,$
    linux grep命令
    wc命令
    linux下echo命令
    winscp和putty提取固件教程
    WinSCP和PuTTY在刷openwrt固件的使用教程
    OPENWRT学习笔记入门篇
    第五章 并发性:互斥和同步
    getCurrentSession()和getOpenSession()的区别
  • 原文地址:https://www.cnblogs.com/plumsq/p/10715323.html
Copyright © 2020-2023  润新知