Java-斗地主小游戏洗牌发牌(控制台程序)

简介: Java-斗地主小游戏洗牌发牌(控制台程序)

一分析:

1:创建扑克牌
CreatePlayingCards();
2:洗牌
AntomaticLicensing();
3:给三名玩家进行发牌
DealCards();
采用集合:
HashMap<Integer,String>map;
ArrayListcards

相关API信息:
Collections.shuffle(cards);
-
在这里插入图片描述
Collections.sort(user);
-
在这里插入图片描述

二:代码详情

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
public class PlayingCard {
     //创建扑克牌
      private static HashMap<Integer,String>map;
      //洗牌编号
      private static ArrayList<Integer>cards;
           public static void main(String[] args) {
               //创建扑克牌
               CreatePlayingCards();
               //洗牌
               AntomaticLicensing();
               //给三名玩家进行发牌,并打印发牌情况
             DealCards();
            }
           
           //【1】创建扑克牌
           private static void CreatePlayingCards(){
               //定义花色和数字
               String [] color={"♠","♥","♣","♦"};
          String[]nums={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};     
             //将花色和数字组合
             int index=0;
                map=new HashMap<Integer,String>();
            
                    for(String numStr:nums){
                        for(String colorStr:color){
                        map.put(index++, colorStr+numStr);
                        }
                    }
                 //加入大小王
                 map.put(index, "小王");
                 map.put(index+1, "大王");
           }
           
          //【2】洗牌
           private static void AntomaticLicensing() {
               //定义一个集合,用来表示一副54张牌的编号,ArrayList里边为0-53的数的编号
                cards=new ArrayList<Integer>();
                 for(int i=0;i<=53;i++){
                     cards.add(i);
                 }
                 //洗牌,使用Collections工具类的Shuffle()类
                 Collections.shuffle(cards);
              }
           
         //【3】给三名玩家发牌,并打印发牌情况
         private static void DealCards() {
               //创建三个玩家和底牌
               ArrayList<Integer>iplayer1=new ArrayList<Integer>();
               ArrayList<Integer>iplayer2=new ArrayList<Integer>();
               ArrayList<Integer>iplayer3=new ArrayList<Integer>();
               //底牌
               ArrayList<Integer>iSecretCards=new ArrayList<Integer>();
               //遍历这幅洗好的牌,遍历过程中,将牌发到三个玩家和底牌中
               //这里采用的算法是 底牌>=51的数字  小王:i%3==0  小强:i%3==1 卢本伟:除了上面情况之外的牌
               for (int i = 0; i < cards.size(); i++) {
                      if (i>=51) {
                       iSecretCards.add(cards.get(i));
                    }else if (i%3==0) {
                        //与3取余为0的发给玩家1
                        iplayer1.add(cards.get(i));
                    }else if (i%3==1) {
                        iplayer2.add(cards.get(i));
                    }else {
                        iplayer3.add(cards.get(i));
                    }     
                 }
                //打印最后结果
                 System.out.print("小王:");
                 Ponint(iplayer1);
                System.out.print("小强:");
                 Ponint(iplayer2);
                System.out.print("卢本伟:");
                 Ponint(iplayer3);
                System.out.print("底牌:");
                 Ponint(iSecretCards);
            }
         //打印
         public static void Ponint(ArrayList<Integer> user){
             Collections.sort(user);
             for(int count:user){
                 System.out.print(" "+map.get(count)+" ");
             }
             System.out.println("");
         }  
}

三运行效果:

在这里插入图片描述

相关文章
|
6月前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
369 98
|
7月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
7月前
|
存储 Java 编译器
对比Java学习Go——程序结构与变量
本节对比了Java与Go语言的基础结构,包括“Hello, World!”程序、代码组织方式、入口函数定义、基本数据类型及变量声明方式。Java强调严格的面向对象结构,所有代码需置于类中,入口方法需严格符合`public static void main(String[] args)`格式;而Go语言结构更简洁,使用包和函数组织代码,入口函数为`func main()`。两种语言在变量声明、常量定义、类型系统等方面也存在显著差异,体现了各自的设计哲学。
264 0
|
8月前
|
人工智能 监控 安全
智慧工地解决方案,java智慧工地程序代码
智慧工地系统融合物联网、AI、大数据等技术,实现对施工现场“人、机、料、法、环”的全面智能监控与管理,提升安全、效率与决策水平。
234 2
|
存储 Java 数据库连接
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
|
搜索推荐 Java Android开发
课时146:使用JDT开发Java程序
在 Eclipse 之中提供有 JDT环境可以实现java 程序的开发,下面就通过一些功能进行演示。 项目开发流程
420 0
|
Java C语言
课时8:Java程序基本概念(标识符与关键字)
课时8介绍Java程序中的标识符与关键字。标识符由字母、数字、下划线和美元符号组成,不能以数字开头且不能使用Java保留字。建议使用有意义的命名,如student_name、age。关键字是特殊标记,如蓝色字体所示。未使用的关键字有goto、const;特殊单词null、true、false不算关键字。JDK1.4后新增assert,JDK1.5后新增enum。
242 4
|
Java 编译器
课时7:Java程序基本概念(注释)
课时7介绍了Java程序中的注释。编程语言有其语法和语义,注释有助于理解代码需求,防止断档。Java支持三类注释:单行(//)、多行(/* */)和文档注释(/** */)。注释不会被编译器编译。范例中展示了如何在代码中使用注释,并强调了注释对项目文档管理的重要性。
294 3
|
Java 开发工具
课时5:第一个Java程序
课时5介绍了编写第一个Java程序的步骤,包括创建Hello.java文件、编写“Hello World”代码、编译和运行程序。主要内容有:1) 新建并编辑Hello.java;2) 编译Java源文件生成.class文件;3) 通过命令行解释执行Java程序;4) 解释主方法的作用及信息输出操作。本课强调了类定义、文件命名规则和基本程序结构的重要性,并建议初学者使用记事本编写代码以熟悉基础语法。
292 0