集合综合案例 斗地主案例(单列集合)

熊孩纸 阅读:178 2022-06-06 14:06:31 评论:0

集合综合案例

斗地主案例(单列)

按照斗地主的规则,完成洗牌发牌的动作。

具体规则:

使用54张牌打乱顺序,三个玩家参与游戏,三人交替发牌,每人17张牌,最后三张留作底牌。

案例分析

  • 准备牌

    牌可以设计为一个ArrayList集合,每个字符串为一张牌

    每张牌由数字和花色两部分组成,可以使用花色集合与数字集合嵌套迭代完成每张牌的组装

    牌由Collections类的shuffle方法进行随机排序,完成洗牌动作

  • 发牌

    将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌

  • 看牌

    直接打印每个集合

实现源码

package jihe.danliedoudizhu; 
 
import java.lang.reflect.Array; 
import java.util.ArrayList; 
import java.util.Collection; 
import java.util.Collections; 
 
public class Doudizhu {
   
     
    public static void main(String[] args) {
   
     
        //定义牌面 
        //定义花色 
        String[] colors = {
   
    "♥","♦","♣","♠"}; 
        //定义牌数字 
        String[] numbers = {
   
    "2","A","K","Q","J","10","9","8","7","6","5","4","3"}; 
 
        //定义扑克集合 
        ArrayList<String> poker = new ArrayList<>(); 
        //定义玩家1集合 
        ArrayList<String> player1 = new ArrayList<>(); 
        //定义玩家2集合 
        ArrayList<String> player2 = new ArrayList<>(); 
        //定义玩家3集合 
        ArrayList<String> player3 = new ArrayList<>(); 
        //定义底牌集合 
        ArrayList<String> diPai = new ArrayList<>(); 
 
        //先把大小王两张特殊的牌放到扑克集合中 
        poker.add("大王"); 
        poker.add("小王"); 
        //将花色和数字进行组合,加入到扑克集合 
        //正常for循环 
        /*for (int i = 0; i < colors.length; i++) { 
            for (int j = 0; j < numbers.length; j++) { 
                poker.add(colors[i]+numbers[j]); 
            } 
        }*/ 
        //增强for循环 
        for (String color : colors) {
   
     
            for (String number : numbers) {
   
     
                poker.add(color+number); 
            } 
        } 
 
        //System.out.println(poker); 
 
        //发牌之前要洗牌,使用Collections中的shuffle方法 
        Collections.shuffle(poker); 
 
        //开始发牌 
        //最后有三张牌是底牌,要先判断是否达到剩余底牌,放到底牌集合中,否则会发完 
        for (int i = 0; i < poker.size(); i++) {
   
     
            String p = poker.get(i); 
            if(i>=51){
   
     
                diPai.add(p); 
            }else if (i % 3 == 0){
   
     
                player1.add(p); 
            }else if (i % 3 == 1){
   
     
                player2.add(p); 
            }else if (i % 3 == 2){
   
     
                player3.add(p); 
            } 
        } 
 
        //查看各自的牌 
        System.out.println("底牌:" + diPai); 
        System.out.println("玩家1:" + player1); 
        System.out.println("玩家2:" + player2); 
        System.out.println("玩家3:" + player3); 
    } 
} 

标签:java
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

搜索
排行榜
关注我们

一个IT知识分享的公众号