Java-斗地主案例分析以及源码
程序员文章站
2022-07-10 17:03:44
...
斗地主案例分析
54张牌打乱顺序,三人交替摸牌,每人17张,最后三张作为底牌
分析:
-
准备牌
54张牌,其中包括两张特殊的牌:大小王
其他52张牌:
-
定义以一个数组/集合,包括四种花色:桃、心、梅、方
-
定义以一个数组/集合,面值:A、2、3、…、K
将两个集合组合起来变成剩余的52张
-
-
洗牌:使用集合工具类Collections的方法
static void shuffle(List<?> List)
使用指定的随机源对指定的列表进行置换会
随机打乱
集合中的元素 -
摸牌:要求1人17张牌,剩余三张作为底牌,一人一张轮流发牌:
集合的索引(0-53)%3
定义4个集合,分别存储3个玩家的牌和底牌
索引%3,有三个值(0,1,2)
索引>=51,给底牌发牌
-
看牌:打印遍历集合
源码:
package DouDiZhu;
import java.util.ArrayList;
import java.util.Collections;
public class Ddz {
public static void main(String[] args) {
//定义以一个ArrayList集合来存储54张牌
ArrayList<String> poker = new ArrayList<>();
//定义两个数组分别存花色和数值
String[] color = {"♠","♥","♣","♦"};
String[] number = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
//将大小王先放扑克集合中
poker.add("BigJoker");
poker.add("SmallJoker");
//循环嵌套两个数组,组装52张牌,并把牌放到扑克集合当中
for (String numbers : number) {
for (String colors : color) {
poker.add(colors+numbers);
}
}
//打乱顺序
Collections.shuffle(poker);
//定义四个集合来
ArrayList<String> people1 = new ArrayList<>();
ArrayList<String> people2 = new ArrayList<>();
ArrayList<String> people3 = new ArrayList<>();
ArrayList<String> lastPoker = new ArrayList<>();
//发牌
int i = 0;
while (i <= 50){
if (i%3 == 0){
people1.add(poker.get(i));
}else if (i%3 == 1){
people2.add(poker.get(i));
}else if (i%3 == 2){
people3.add(poker.get(i));
}
i++;
}
//把最后的三张牌作为底牌,放到底牌集合中
lastPoker.add(poker.get(51));
lastPoker.add(poker.get(52));
lastPoker.add(poker.get(53));
//看牌,打印集合
System.out.println("三千七百万:"+people1);
System.out.println("反手一个超级加倍:"+people2);
System.out.println("闷声发大财慈善家:"+people3);
System.out.println(lastPoker);
}
}
结果展示
推荐阅读
-
java项目案例分析(免费网站java源码大全)
-
linux系统中一次用户态进程死循环案例的分析过程以及解决办法
-
别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析【JVM篇二】
-
【SpringBoot】默认错误处理机制的源码大白话分析,以及自定义配置(遇坑)
-
浅谈c++资源管理以及对[STL]智能指针auto_ptr源码分析,左值与右值
-
jQuery源码分析之$.isWindow、$.isArraryLike以及$.type在jQuery中如何实现?
-
Android9.0 BroadcastReceiver案例分析附源码
-
SpringBoot内置tomcat启动原理、以及SpringBoot初始化Servlet的源码分析
-
mybatis的使用及源码分析(一) mybatis介绍以及原生Mybatis项目搭建
-
Java-斗地主案例分析以及源码