软件编程
位置:首页>> 软件编程>> java编程>> Java实现扑克牌程序

Java实现扑克牌程序

作者:dhdhdhdhg  发布时间:2023-11-11 12:09:52 

标签:java,扑克牌

本文实例为大家分享了Java实现扑克牌程序的具体代码,供大家参考,具体内容如下

思路:

在实现之前,先要想好步骤,思路清晰才不会出错。
要实现一副扑克牌,首先要创建这个类,然后有一副扑克牌,之后进行洗牌,抓牌。

1.定义一个Card类

2.实现这个游戏:

①构造一副扑克牌(52张)这里不包含大小王
②洗牌
③三个人每个人抓五张牌

代码实现及其细节:

1.定义一个Card类

一张牌中包括两个属性:花色和牌面值


public class MyCard {
   public char suit;   //花色
   public String rank; //牌面值

public MyCard(String rank, char suit) {
       this.suit = suit;
       this.rank = rank;
   }
   public String toString(){
       return String.format("[%s %c]",rank,suit);
   }
}

2.实现这个游戏

写一个CardGame来实现这个扑克牌游戏,其中分为很多细小的分支。

1.买一副牌

前面写了Card来表示一张牌,这里我们买一副牌,就是52个Card放在一起,就组成一个List,所以这里一副牌的类型为List<Card>。


public List<MyCard> buyDeck(){
       //首先将花色和牌面值陈列出来
       //因为牌面值有A,J,Q,K,这里采用的是字符串数组
       //也可以将A,J,Q,K单独处理,剩下的写作一个整型数组
       char[] suits={'♦','♥','♠','♣'};
       String[] ranks={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
       //创建52张牌
       List<MyCard> deck=new ArrayList<>(52);
       for(int i=0;i<4;i++){
           for(int j=0;j<13;j++){
               deck.add(new MyCard(ranks[j],suits[i]));
           }
       }
       return deck;
   }

2.洗牌:

使用随机数


//写一个交换函数方便洗牌方法实现
public void swap(List<MyCard> deck,int i,int j){
       MyCard temp=deck.get(i);
       deck.set(i,deck.get(j));
       deck.set(j,temp);
   }

public void shuffle(List<MyCard> deck){
       //设置随机数
       Random r=new Random();//实例化一个Random类
       for(int j=deck.size()-1;j>0;j--){
           int i=r.nextInt(j);   //随机产生一个大于等于0小于51的整数
           swap(deck,i,j);       //将生成的0-51的随机数与与最后一个数交换实现洗牌
       }
   }

3.主函数:

在这里实现发牌,每人五张牌,三个人轮流抓,将三个人放在一个List当中,三个人中的牌信息为List<Card>,所以hands的类型为List<List<Card>>.


public static void main(String[] args){
       CardGame cg=new CardGame();
       List<MyCard> deck=cg.buyDeck();
       System.out.println("刚买回来的牌:");
       System.out.println(deck);
       cg.shuffle(deck);
       System.out.println("洗完的牌:");
       System.out.println(deck);
       //三人轮流抓牌,一人抓五张
       //将三个玩家放到一个List当中
       List<List<MyCard>> hands=new ArrayList<>(3);
       //三个人手中每个人五张牌
       hands.add(new ArrayList<>(5));
       hands.add(new ArrayList<>(5));
       hands.add(new ArrayList<>(5));
       //ABC三个人抓牌
       for(int i=0;i<5;i++){
           for(int j=0;j<3;j++){
               //从deck里面抓走的
               //抓的时候把最顶上的抓走
               hands.get(j).add(deck.remove(0));;
           }
       }
       System.out.println("剩下的牌:");
       System.out.println("A手中的牌:");
       System.out.println(hands.get(0));
       System.out.println("B手中的牌:");
       System.out.println(hands.get(1));
       System.out.println("C手中的牌:");
       System.out.println(hands.get(2));
   }

输出结果:

后面的没显示全

Java实现扑克牌程序

来源:https://blog.csdn.net/m0_51405559/article/details/120808011

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com