Java 实现 斗地主 案例
2021/4/17 14:25:11
本文主要是介绍Java 实现 斗地主 案例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
斗地主案例实现步骤
分析:
首先来梳理一下规则:
(1)准备牌阶段:斗地主总共54张牌,大王小王各一张(特殊对待),其他52张牌,分别4种花色,每种花色13张。四种花色分别为♥ ♦ ♠ ♣(数组1);每一种花色中的13张牌(由大到小)2 A K Q J 10 9 8 7 6 5 4 3(数组2),定义一个集合/数组进行存储,遍历这两个集合,可以组装成52张牌;如:♥ 7,♠ 8等;
(2)洗牌阶段:使用集合工具类Collections方法,其中static void shuffle(List<?> list)方法对牌进行随机打乱。
(3)发牌阶段:要求每一位玩家拥有17张牌,剩余三张作为底牌,一人一张轮流发牌:集合的索引(0-53)%3,定义4个集合,来存储3个玩家的牌和场上的底牌。索引%3,有三个值(0,1,2),0%3=0,1%3=1,2%3=2,3%3=0,就可以给三名玩家发牌了,当索引>=51时,改为发底牌.
(4)看牌阶段:直接打印集合/数组
实现:
package doudizhu; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; public class DouDiZhu { public static void main(String[] args) { //1.准备牌 //定义一个存储54张牌的ArrayList集合,泛型使用字符串 ArrayList<String> poker = new ArrayList<>(); //定义两个数组,一个数组存储花色,一个数组储存牌号 String[] colors = {"♠", "♥", "♣", "♦"};//花色数组 String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};//牌号数组 //先把大王小王(特殊对待)存储到poker集合中 poker.add("大王"); poker.add("小王"); //循环嵌套遍历两个数组,组装52张牌,花色和牌号 for (String number : numbers) { for (String color : colors) { //把组装好的牌存储到poker集合中 poker.add(color + number); } } //2.洗牌,随机洗 Collections.shuffle(poker); //3.发牌 //定义四个集合,存储三个玩家牌和底牌 ArrayList<String> player01 = new ArrayList<>(); ArrayList<String> player02 = new ArrayList<>(); ArrayList<String> player03 = new ArrayList<>(); ArrayList<String> diPai = new ArrayList<>(); for (int i = 0; i < poker.size(); i++) { //获取每一张牌 String p = poker.get(i); //轮流发牌 if (i >= 51) { diPai.add(p); //索引大于等于51时给底牌留3张 } else if (i % 3 == 0) { player01.add(p); //给第一名玩家发牌 } else if (i % 3 == 1) { player02.add(p); //给第二名玩家发牌 } else if (i % 3 == 2) { player03.add(p); //给第三名玩家发牌 } } //看牌 System.out.println("玩家1" + player01); System.out.println("玩家2" + player02); System.out.println("玩家3" + player03); System.out.println("底牌" + diPai); } }
结果:
玩家1[♥Q, ♠7, 小王, ♠10, ♦K, ♠A, ♠6, ♣2, ♣5, ♥8, ♣9, ♣J, ♦5, ♠5, ♥4, ♦3, ♦4] 玩家2[♠3, ♠8, ♣3, ♦J, ♠4, ♠J, ♥2, ♦Q, ♠Q, ♣A, ♦9, ♥6, ♦2, ♥A, 大王, ♥10, ♣Q] 玩家3[♥J, ♥3, ♣7, ♥7, ♣K, ♠2, ♥K, ♣6, ♣4, ♠9, ♣8, ♠K, ♦6, ♦A, ♥5, ♦10, ♦8] 底牌[♦7, ♥9, ♣10]
感谢您的阅读,不足之处欢迎指正!
这篇关于Java 实现 斗地主 案例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南