简单斗地主Demo

package com.test;

import java.util.ArrayList;
import java.util.Collections;


/*
 * 按照斗地主的规则,完成洗牌发牌的动作。
 * ♣♦♠♥ 大☺小☺
 * 具体规则:
 * 		使用54张牌打乱顺序
 * 		三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
 * 
 * 逻辑分析:
 * 
 * 准备牌:
 * 牌可以设计为一个ArrayList<String>,每个字符串为一张牌。
 * 每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装。
 * 牌由Collections类的shuffle方法进行随机排序。
 * 发牌:
 * 将每个人以及底牌设计为ArrayList<String>,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。
 * 看牌:
 * 直接打印每个集合
 */
public class Demo {

  public static void main(String[] args) {

    //定义集合记录一副牌
    ArrayList<String> poker = new ArrayList<String>();

    //定义花色集合
    ArrayList<String> colors = new ArrayList<String>();
    colors.add("♥");
    colors.add("♠");
    colors.add("♦");
    colors.add("♣");

    //定义数字集合
    ArrayList<String> numbers = new ArrayList<String>();
    for (int i = 2; i <= 10; i++) {
      numbers.add(i + "");
    }
    numbers.add("J");
    numbers.add("Q");
    numbers.add("K");
    numbers.add("A");

    //嵌套迭代完成每张牌的组装
    for (String thisColor : colors) {
      for (String thisNumber : numbers) {
        //通过花色与数字拼写成对应的每张牌
        String thisCard = thisColor + thisNumber;
        //将拼好的牌放到集合中
        poker.add(thisCard);
      }
    }
    //补充大小王
    poker.add("大☺");
    poker.add("小☺");

    //洗牌  Collections类  shuffle方法可以将集合打乱顺序
    Collections.shuffle(poker);

//		发牌:
//		将每个人以及底牌设计为ArrayList<String>,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。
    ArrayList<String> player1 = new ArrayList<String>();
    ArrayList<String> player2 = new ArrayList<String>();
    ArrayList<String> player3 = new ArrayList<String>();
    ArrayList<String> dipai = new ArrayList<String>();

    //使用普通的for循环,通过索引处理纸牌
    for (int i = 0; i < poker.size(); i++) {

      //获取当前这张牌
      String thisCard = poker.get(i);

      //判断是否为最后三张
      if (i >= 51) {
        //如果是最后三张发给底牌
        dipai.add(thisCard);
      } else { //如果不是最后三张,发给玩家
        //对3取模,决定给哪个玩家发牌
        if (i % 3 == 0) {
          player1.add(thisCard);
        } else if (i % 3 == 1) {
          player2.add(thisCard);
        } else {
          player3.add(thisCard);
        }
      }
    }
//		看牌:
//		直接打印每个集合
    System.out.println(player1);
    System.out.println(player2);
    System.out.println(player3);
    System.out.println(dipai);
  }

}

 

 

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值