怎么做自己的微信网站/大兴今日头条新闻
斗地主
- 分析
- 实现方式
- 代码实现
分析
这是一个模仿斗地主发牌的例子;
按照斗地主的规则,完成洗牌发牌的动作。 具体规则:
- 用0~53分别对应相应的花色和牌面值;
- 用
shuffle
随机打乱排序好的数字,起到洗牌的作用;
使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
实现方式
- 准备牌:
牌可以设计为一个ArrayList,每个字符串为一张牌。 每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装。 牌由Collections类的shuffle方法进行随机排序。 - 发牌
将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。 - 看牌
直接打印每个集合
代码实现
import java.util.ArrayList;
import java.util.Collections;
public class Poker {public static void main(String[] args) {/** 1: 准备牌操作*///1.1 创建牌盒 将来存储牌面的ArrayList<String> pokerBox = new ArrayList<String>();//1.2 创建花色集合ArrayList<String> colors = new ArrayList<String>();//1.3 创建数字集合ArrayList<String> numbers = new ArrayList<String>();//1.4 分别给花色 以及 数字集合添加元素colors.add("♥");colors.add("♦");colors.add("♠");colors.add("♣");for(int i = 2;i<=10;i++){numbers.add(i+"");}numbers.add("J");numbers.add("Q");numbers.add("K");numbers.add("A");//1.5 创造牌 拼接牌操作// 拿出每一个花色 然后跟每一个数字 进行结合 存储到牌盒中for (String color : colors) {//color每一个花色 guilian//遍历数字集合for(String number : numbers){//结合String card = color+number;//存储到牌盒中pokerBox.add(card);}}//1.6大王小王pokerBox.add("小☺");pokerBox.add("大☠"); // System.out.println(pokerBox);//洗牌 是不是就是将 牌盒中 牌的索引打乱// Collections类 工具类 都是 静态方法// shuffer方法 /** static void shuffle(List<?> list)* 使用默认随机源对指定列表进行置换。*///2:洗牌Collections.shuffle(pokerBox);//3 发牌//3.1 创建 三个 玩家集合 创建一个底牌集合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(int i = 0;i<pokerBox.size();i++){//获取 牌面String card = pokerBox.get(i);//留出三张底牌 存到 底牌集合中if(i>=51){//存到底牌集合中dipai.add(card);} else {//玩家1 %3 ==0if(i%3==0){player1.add(card); }else if(i%3==1){//玩家2player2.add(card); }else{//玩家3player3.add(card); }}}//看看System.out.println("令狐冲:"+player1);System.out.println("田伯光:"+player2);System.out.println("绿竹翁:"+player3);System.out.println("底牌:"+dipai); }
}