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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹亚辉 中级黑马   /  2016-9-12 21:54  /  520 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于里面说随机亮一张牌,然后再看看那个人抽到牌,就是地主添加底牌.这个查找那个地主而且添加底牌这一段程序会写吗.

2 个回复

正序浏览
1.斗地主程序
package homework3;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Random;
/*成龙,甄子丹,李连杰三个人打斗地主,三人约定,洗牌后,
* 随机抽取一张"明牌"并夹在中间;然后依次抓牌,谁抓到这张便自动作为地主,
* 并收取最后三张。
要求:请用程序实现这一过程,最后打印地主名,以及三个人的牌(要求排序);
思路:
  1.定义一个Map集合存储一副扑克牌;List存储编号;
  2.洗牌;
  3.随机抽取一个索引(该值必须在倒数三张之前),用于表示"明牌",在发牌
    时谁抓到这一张便作为"地主";
  4.依次给三个人(成龙,甄子丹,李连杰)发牌,并监督谁作为地主;地主自
     动收取最后三张。
  5.打印地主名;
  6.最后以排序后的方式打印每个人手里的牌;*/
public class Poker {
    public static void main(String[] args) {
        // 创建LinkedHashmap集合\一个list集合
        LinkedHashMap<Integer, String> poker = new LinkedHashMap<>();
        // 创建花色集合
        ArrayList<String> colors = new ArrayList<>();
        Collections.addAll(colors, "♥", "♠", "♦", "♣");
        // System.out.println(colors);
        // 创建序号集合
        ArrayList<String> num = new ArrayList<>();
        Collections.addAll(num, "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");
        // System.out.println(num);
        // 组装键和值,扑克牌创建完成
        int i = 0;
        poker.put(i++, "大王");
        poker.put(i++, "小王");
        for (String n : num) {
            for (String c : colors) {
                String pai = c + n;
                poker.put(i++, pai);
            }
        }
        // System.out.println(poker);
        // 洗牌,打乱序号
        ArrayList<Integer> xuhao = new ArrayList<>();
        for (int x = 0; x < 54; x++) {
            xuhao.add(x);
        }
        Collections.shuffle(xuhao);
        System.out.println(xuhao);
        Random r = new Random();
        int mingpai = r.nextInt(50) + 1;
        // 创建玩家集合,存储牌的编号
        ArrayList<Integer> cl = new ArrayList<>();
        ArrayList<Integer> zzd = new ArrayList<>();
        ArrayList<Integer> llj = new ArrayList<>();
        for (int a = 0; a < 51; a++) {
            if (a % 3 == 0) {
                cl.add(xuhao.get(a));
            } else if (a % 3 == 1) {
                zzd.add(xuhao.get(a));
            } else {
                llj.add(xuhao.get(a));
            }
        }
        // 遍历最后三张牌序号
        for (int a = 51; a < 54; a++) {
            // 判断名牌被谁抓到,把最后三张牌给谁
            if (mingpai % 3 == 0) {
                cl.add(xuhao.get(a));
            } else if (mingpai % 3 == 1) {
                zzd.add(xuhao.get(a));
            } else {
                llj.add(xuhao.get(a));
            }
        }
        // 打印谁是地主
        if (mingpai % 3 == 0) {
            System.out.println("地主是:成龙");
        } else if (mingpai % 3 == 1) {
            System.out.println("地主是:甄子丹");
        } else {
            System.out.println("地主是:李连杰");
        }
        // 玩家手中牌编号排序
        Collections.sort(cl);
        Collections.sort(zzd);
        Collections.sort(llj);
        // 看牌,创建玩家牌内容的集合
        ArrayList<String> cl2 = new ArrayList<>();
        ArrayList<String> zzd2 = new ArrayList<>();
        ArrayList<String> llj2 = new ArrayList<>();
        // 为集合添加元素
        for (Integer nu : cl) {
            String pai2 = poker.get(nu);
            cl2.add(pai2);
        }
        for (Integer nu : zzd) {
            String pai2 = poker.get(nu);
            zzd2.add(pai2);
        }
        for (Integer nu : llj) {
            String pai2 = poker.get(nu);
            llj2.add(pai2);
        }
        System.out.println("成   龙的牌:" + cl2);
        System.out.println("甄子丹的牌:" + zzd2);
        System.out.println("李连杰的牌:" + llj2);
    }
}
回复 使用道具 举报
1.斗地主程序 package homework3; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.LinkedHashMap; import java.util.Random; /*成龙,甄子丹,李连杰三个人打斗地主,三人约定,洗牌后,  * 随机抽取一张"明牌"并夹在中间;然后依次抓牌,谁抓到这张便自动作为地主,  * 并收取最后三张。 要求:请用程序实现这一过程,最后打印地主名,以及三个人的牌(要求排序);  思路:   1.定义一个Map集合存储一副扑克牌;List存储编号;   2.洗牌;   3.随机抽取一个索引(该值必须在倒数三张之前),用于表示"明牌",在发牌     时谁抓到这一张便作为"地主";   4.依次给三个人(成龙,甄子丹,李连杰)发牌,并监督谁作为地主;地主自      动收取最后三张。   5.打印地主名;   6.最后以排序后的方式打印每个人手里的牌;*/ public class Poker {     public static void main(String[] args) {         // 创建LinkedHashmap集合\一个list集合         LinkedHashMap<Integer, String> poker = new LinkedHashMap<>();         // 创建花色集合         ArrayList<String> colors = new ArrayList<>();         Collections.addAll(colors, "♥", "♠", "♦", "♣");         // System.out.println(colors);         // 创建序号集合         ArrayList<String> num = new ArrayList<>();         Collections.addAll(num, "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");         // System.out.println(num);         // 组装键和值,扑克牌创建完成         int i = 0;         poker.put(i++, "大王");         poker.put(i++, "小王");         for (String n : num) {             for (String c : colors) {                 String pai = c + n;                 poker.put(i++, pai);             }         }         // System.out.println(poker);         // 洗牌,打乱序号         ArrayList<Integer> xuhao = new ArrayList<>();         for (int x = 0; x < 54; x++) {             xuhao.add(x);         }         Collections.shuffle(xuhao);         System.out.println(xuhao);         Random r = new Random();         int mingpai = r.nextInt(50) + 1;         // 创建玩家集合,存储牌的编号         ArrayList<Integer> cl = new ArrayList<>();         ArrayList<Integer> zzd = new ArrayList<>();         ArrayList<Integer> llj = new ArrayList<>();         for (int a = 0; a < 51; a++) {             if (a % 3 == 0) {                 cl.add(xuhao.get(a));             } else if (a % 3 == 1) {                 zzd.add(xuhao.get(a));             } else {                 llj.add(xuhao.get(a));             }         }         // 遍历最后三张牌序号         for (int a = 51; a < 54; a++) {             // 判断名牌被谁抓到,把最后三张牌给谁             if (mingpai % 3 == 0) {                 cl.add(xuhao.get(a));             } else if (mingpai % 3 == 1) {                 zzd.add(xuhao.get(a));             } else {                 llj.add(xuhao.get(a));             }         }         // 打印谁是地主         if (mingpai % 3 == 0) {             System.out.println("地主是:成龙");         } else if (mingpai % 3 == 1) {             System.out.println("地主是:甄子丹");         } else {             System.out.println("地主是:李连杰");         }         // 玩家手中牌编号排序         Collections.sort(cl);         Collections.sort(zzd);         Collections.sort(llj);         // 看牌,创建玩家牌内容的集合         ArrayList<String> cl2 = new ArrayList<>();         ArrayList<String> zzd2 = new ArrayList<>();         ArrayList<String> llj2 = new ArrayList<>();         // 为集合添加元素         for (Integer nu : cl) {             String pai2 = poker.get(nu);             cl2.add(pai2);         }         for (Integer nu : zzd) {             String pai2 = poker.get(nu);             zzd2.add(pai2);         }         for (Integer nu : llj) {             String pai2 = poker.get(nu);             llj2.add(pai2);         }         System.out.println("成   龙的牌:" + cl2);         System.out.println("甄子丹的牌:" + zzd2);         System.out.println("李连杰的牌:" + llj2);     } }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马