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("");
         }  
}

三运行效果:

在这里插入图片描述

相关文章
|
7月前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
390 98
|
8月前
|
存储 Java 编译器
对比Java学习Go——程序结构与变量
本节对比了Java与Go语言的基础结构,包括“Hello, World!”程序、代码组织方式、入口函数定义、基本数据类型及变量声明方式。Java强调严格的面向对象结构,所有代码需置于类中,入口方法需严格符合`public static void main(String[] args)`格式;而Go语言结构更简洁,使用包和函数组织代码,入口函数为`func main()`。两种语言在变量声明、常量定义、类型系统等方面也存在显著差异,体现了各自的设计哲学。
301 0
|
9月前
|
人工智能 监控 安全
智慧工地解决方案,java智慧工地程序代码
智慧工地系统融合物联网、AI、大数据等技术,实现对施工现场“人、机、料、法、环”的全面智能监控与管理,提升安全、效率与决策水平。
266 2
|
存储 Java 数据库连接
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
|
搜索推荐 Java Android开发
课时146:使用JDT开发Java程序
在 Eclipse 之中提供有 JDT环境可以实现java 程序的开发,下面就通过一些功能进行演示。 项目开发流程
453 0
|
Java C语言
课时8:Java程序基本概念(标识符与关键字)
课时8介绍Java程序中的标识符与关键字。标识符由字母、数字、下划线和美元符号组成,不能以数字开头且不能使用Java保留字。建议使用有意义的命名,如student_name、age。关键字是特殊标记,如蓝色字体所示。未使用的关键字有goto、const;特殊单词null、true、false不算关键字。JDK1.4后新增assert,JDK1.5后新增enum。
262 4
|
7月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
389 1
|
7月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
362 1
|
8月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案