JAVA斗地主模拟创牌,洗牌,发牌,个人排序的功能(2)

思想和上一篇的一样,改动了输出形式
实验结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Card.cpp
//设置泛型<>类型约束

public class Card implements Comparable < Card > {  //泛型
    private int number;
    private int huase;
    public int  getNumber(){
        return number;
    }
    public void setHuase(int huase){
        this.huase=huase;
    }
    public int  getHuase(){
     return huase;
    }
    public void setNumber(int number){
        this.number=number;
    }
    public String toString(){
        if(number<=10){
            if(huase== 1) return number+"-"+"黑桃";
            else if(huase== 2)  return number+"-"+"红心";
            else if(huase== 3)  return number+"-"+"方块";
            else if(huase==4) return number+"-"+"梅花";
        }
        else if(number==13){
            if(huase== 1 ) return  "K-黑桃";
            else if(huase==2)  return "K-红心";
            else if(huase==3)  return "K-方块";
            else if(huase== 4) return  "k-梅花";
        }
        else if(number== 11){
            if(huase==1 )  return "J-黑桃";
            else if(huase== 2)  return "J-红心";
            else if(huase== 3)  return "J-方块";
            else if(huase== 4) return  "J-梅花";
        }
        else if(number== 12){
            if(huase == 1 ) return "Q-黑桃";
            else if(huase  ==  2)   return "Q-红心";
            else if(huase == 3)   return "Q-方块";
            else if(huase == 4)  return  "Q-梅花";
        }
        else if(number==  14)  return "小鬼";
        else if(number== 15)  return "大鬼";
        return null;
    }
    public int  compareTo(Card o) {
        if (this.getNumber() < o.getNumber()) {
            return 1;
        } else if (this.getNumber() > o.getNumber())
            return -1;
        else if (this.getNumber() == o.getNumber()) {
            if (this.getHuase() < o.getHuase()) return 1;
            else if (this.getHuase() > o.getHuase())  return -1;
        }
    return 0;
    }

}
  
Test2.java
import java.util.Arrays;
import java.util.Scanner;
public class Test2 {
    public  static Card[] createPocker(){//建牌
       Card[] pokers =new Card[54];
       Card temp;int n=0;
       for(int i=0;i<13;i++) {
           for (int j = 0; j <4; j++) {
               temp = new Card();
               temp.setNumber(i+1);
               temp.setHuase(j+1);
               pokers[n] = temp;
               n++;
           }
       }
       pokers[52]=new Card();
       pokers[52].setNumber(14);
       //pokers[52].setHuase(1);
       pokers[53]=new Card();
       pokers[53].setNumber(15);
       //pokers[53].setHuase(2);
       return pokers;
    }

  public static Card[] shufflePoker(Card[] pokers){//洗牌
       int i,j;Card temp;
       i=(int)Math.random()*54;
       j=(int)Math.random()*54;
       for(int q=0;q<1000;q++) {
           temp=pokers[i];pokers[i]=pokers[j];pokers[j]=temp;
       }
        return pokers;
  }

    private static Card[][] fapai(Card[]pokers ) {//发牌
        Card[][] results = new Card[3][18];
        for (int i = 0; i < pokers.length; i++) {
            if (i % 3 == 0) {
                //第一个人
                results[0][i / 3] = pokers[i];
            } else if (i % 3 == 1) {
                //第二个人
                results[1][i / 3] = pokers[i];
            } else if (i % 3 == 2) {
                //第三个人
                results[2][i / 3] = pokers[i];
            }
        }
        return results;
    }


    private static Card[][] sort1(Card[][] persons){//人工排序从小到大排序
        for(Card[]cards:persons){
            for(int i=0;i<cards.length;i++){
                for(int j=0;j<i;j++){
                    if(cards[i].getNumber()==cards[j].getNumber()){
                        if(cards[i].getHuase()<cards[j].getHuase()){
                            Card temp=cards[i];
                            cards[i]=cards[j];
                            cards[j]=temp;
                        }
                    }
                    else if(cards[i].getNumber()<cards[j].getNumber()){
                        Card temp=cards[i];
                        cards[i]=cards[j];
                        cards[j]=temp;
                    }
                }
            }
        }
        return persons;
    }

    private static Card[][] sort2(Card[][] persons) {//第二种排序
        for(Card[] cards:persons){
           Arrays.sort(cards);
        }
        return persons;
    }
    public static void main(String args[]) {
        Card[] pokers=createPocker();//创牌
        pokers=shufflePoker(pokers);//洗牌
        System.out.println("显示洗牌后结果:");
        for(int i=0;i<pokers.length;i++ ){
            if(i%4==0) System.out.println(" ");
            System.out.print("第"+(i+1)+"张:"+pokers[i]+"  ");
        }
        System.out.println("\n开始发牌:");
       Card result[][];
       result= fapai(pokers);
        System.out.println("显示每个人拿到的牌");
        for(int i=0;i<3;i++) {
            System.out.println("\n第"+(i+1)+"个人的牌:");
            for(int j=0;j<18;j++){
                if(j%4==0) System.out.println(" ");
                System.out.print(result[i][j]+"  ");
        }
    }
        System.out.println("\n每个人的牌进行排序:1.从小到大.2.从大到小");
        int choice;Scanner scanner =new Scanner (System.in);
        choice =scanner.nextInt();
        switch(choice){
            case 1:sort1(result);break;
            case 2:   sort2(result);break;
            default: System.out.println("重新选择");
                choice =scanner.nextInt();
        }
      System.out.println();
        System.out.println("显示每个人拿到的牌");
        for(int i=0;i<3;i++) {
            System.out.println("\n第"+(i+1)+"个人的牌:");
            for(int j=0;j<18;j++){
                if(j%4==0) System.out.println(" ");
                System.out.print(result[i][j]+"  ");

            }
        }
    }
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广大菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值