美文网首页
java_扑克牌小程序

java_扑克牌小程序

作者: 王康健_0124 | 来源:发表于2019-04-19 16:24 被阅读0次

洗牌:数组重新排序 Collections.shuffle(cards);
Card:牌的属性
TestCard:测试
Player:玩家,发牌

import java.util.Objects;
public class Card {
    public static final String[] SUITE_NAME = {"红桃","方块","梅花",
            "黑桃",""};
    public static final String[] RANK_NAME = {"3","4","5","6","7",
            "8","9","10","J","Q","K","A","2","小王","大王"};
    public static final int HEART = 0;
    public static final int DIAMOND = 1;
    public static final int CLUB = 2;
    public static final int SPADE = 3;
    public static final int JOKER = 4;
    public static final int THREE = 0;
    public static final int FOUR = 1;
    public static final int FIVE = 2;
    public static final int SIX = 3;
    public static final int SEVEN = 4;
    public static final int EIGHT = 5;
    public static final int NINE = 6;
    public static final int TEN = 7;
    public static final int JACK = 8;
    public static final int QUEUE = 9;
    public static final int KING = 10;
    public static final int ACE = 11;
    public static final int TWO = 12;
    public static final int BLACK = 13;
    public static final int COLOR = 14;

    private int suit;  //花色
    private int rank;  //点数
    public Card() {}
    public Card(int suit, int rank) {//构造方法
        this.suit = suit;
        this.rank = rank;
    }

    @Override
    public String toString() {
        return SUITE_NAME[suit]+RANK_NAME[rank];
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Card card = (Card) o;
        return suit == card.suit &&
                rank == card.rank;
    }

    @Override
    public int hashCode() {

        return Objects.hash(suit, rank);
    }

    public int getSuit() {
        return suit;
    }

    public void setSuit(int suit) {
        this.suit = suit;
    }

    public int getRank() {
        return rank;
    }

    public void setRank(int rank) {
        this.rank = rank;
    }
}

//Player  玩家类
import java.util.Arrays;
public class Player {
    private int id;//玩家id属性
    private String name;//玩家姓名
    private Card[] cards;//玩家手牌数组//构造方法,花色点数

    public Player(int id, String name) {
        this.id = id;
        this.name = name;
        this.cards = new Card[]{};
    }
    public void addCard(Card c) {
        cards = Arrays.copyOf(cards, cards.length + 1);//数组扩容,手牌长度=手牌长度+1
        cards[cards.length - 1] = c;//把牌放进扩容后的数组中
    }

    @Override
    public String toString() {
        return id+","+name+":"+Arrays.toString(cards);
    }
}

package cn.besttest.day4_homework;
import java.util.*;
public class TestCard {
    public static void main(String[] args) {
        List<Card> cards = new ArrayList<>();//创建一个cards数组,数组类型Crad,(花色,点数)
        for (int rank = Card.THREE; rank <= Card.TWO; rank++) { //创建一副扑克牌,THREE=0,TWO=12   小3-2的位数
            cards.add(new Card(Card.HEART, rank));//添加颜色和对应点数  红桃
            cards.add(new Card(Card.DIAMOND, rank));//添加颜色和对应点数  方块
            cards.add(new Card(Card.CLUB, rank));//添加颜色和对应点数  梅花
            cards.add(new Card(Card.SPADE, rank));//添加颜色和对应点数  黑桃
        }
        cards.add(new Card(Card.JOKER,Card.BLACK));//添加小王
        cards.add(new Card(Card.JOKER,Card.COLOR));//添加大王
        System.out.println(cards);
        //洗牌
//        Random ran=new Random();
//        for (int i=cards.size()-1;i>0;i--){//到0的话就没有换的了,所以要留一个
//            int index=ran.nextInt(i);
//            Card c=cards.get(index);
//            Card temp=cards.get(i);
//            cards.set(i,c);
//            cards.set(index,temp);
//        }
        Collections.shuffle(cards);// 把一个数组中数据重写排列
        System.out.println(cards);
        Player[] players={new Player(1,"碧瑶"),new Player(2,"陆雪琪"),new Player(3,"张小凡")};
        for (int i=0;i<cards.size()-3;i++){
            Card c=cards.get(i);
            players[i%players.length].addCard(c);
        }
        System.out.println(players[0]);
        System.out.println(players[1]);
        System.out.println(players[2]);
    }
}

相关文章

  • java_扑克牌小程序

    洗牌:数组重新排序 Collections.shuffle(cards);Card:牌的属性TestCard...

  • 小程序|TalkBar口才修炼卡上线

    微信小程序一面世,就想着把《扑克牌训练口才的工具》做成一个小程序。 经过几年的打磨,已经基本成型,显示开始测试期,...

  • CPU硬知识

    原博文:作为一个程序员,CPU的这些硬核知识你必须会!_Java_编码之外的技术博客-CSDN博客 CPU所负责的...

  • Java书籍资料整理

    http://en.wikipedia.org/wiki/Template:Java_%28software_pl...

  • Java_接口与抽象类的小程序

    1.代码: 用输入输出语句表示窗口的创建主函数: 窗口:抽象函数与接口的实现 定义抽象类(窗口主要的操作) 定义接...

  • 排序:插入排序

    插入排序的核心如同扑克牌,点数小的扑克牌放到最前面,之后的扑克牌依次往后挪动.时间复杂度0(n^2).代码:

  • Python基于深度学习yolov5的扑克牌识别(包含源码权重数

    Python基于深度学习yolov5的扑克牌识别 源程序来源于本人参与开发的一个网络扑克牌小游戏的图像识别、AI分...

  • 访谈-五维衍生品【五维扑克牌】的故事

    小编: 五维扑克牌是什么?是指陈老师在课堂上发的扑克牌吗? 帅男:不是的哈哈~五维扑克牌是【五维衍生品-生活类】的...

  • Design of Computer Programs L1

    第一讲主要是做一个扑克牌游戏,主要是扑克牌规则的设计。复用了max函数。涉及到了重构和测试的概念,以及在程序编写过...

  • 小帅哥系列~调皮

    1.飞扑克牌 小帅哥最近喜欢飞扑克牌,他看视频说有人可以将扑克牌扎进木板里,他一遍遍地学着里面的手势飞牌。我说武侠...

网友评论

      本文标题:java_扑克牌小程序

      本文链接:https://www.haomeiwen.com/subject/vgitgqtx.html