java - 如何使用构造函数并打印

标签 java constructor

我正在尝试创建一个简单的纸牌游戏,其中两名玩家会收到随机纸牌。我决定使用构造函数来使其简单并使用更少的空间。有人可以帮助我并解释如何在我的 Card 类的主程序中生成随机卡。

public class clsCard {

    private int value;
    private int rank, suit;
    private final int MaxFaceValue= 10;
    private static String[] suits = {"Joker","hearts","spades","diamond","clubs"};
    private static String[] ranks = {"Joker","Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"};

    public clsCard(int suit, int rank)
    {
        this.rank= (int)(Math.random()*ranks.length);
        this.suit= (int)(Math.random()*suits.length);
    }

    public @Override String toString()
    {
        if(ranks[rank].equals("Joker") || suits[suit].equals("Joker"))
            return "Joker";
        else
        return ranks[rank] + " of " + suits[suit];
    }
    public int getRank()
    {
        return rank;
    }
    public int getSuit()
    {
        return suit;
    }   
}

最佳答案

首先,您需要所有卡片,然后从中随机选择。您可能需要一些基础类(class)才能做到这一点。这只是做到这一点的一种方法 - 创建一个套牌,例如:

import java.util.ArrayList;

public class Deck {

    private ArrayList cards;

    public enum Suit {Joker, Spade, Club, Heart, Diamond};

    public Deck() {
        cards = new ArrayList<Card>();

        // Add all appropriate cards
        for(int i = 1; i < 14; i++) {
            cards.add(new Card(i, Suit.Spade));
            cards.add(new Card(i, Suit.Club));
            cards.add(new Card(i, Suit.Heart));
            cards.add(new Card(i, Suit.Diamond));
        }

        cards.add(new Card(0, Suit.Joker));
        cards.add(new Card(0, Suit.Joker));

    }

    public Card dealRandomCard() {
        int random = (int)(Math.random()*cards.size());
        Card c = cards.get(random)
        cards.remove(random);
        return c;
    }

}

这也是一个 Card 类,展开:

public class Card {

    public Card(int i, Suit s) {

    }

}

然后您可以从那里进行构建。

关于java - 如何使用构造函数并打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48244084/

相关文章:

c++ - 重置对象 object = Object(new, parameters);

c++ - 类内/构造函数成员初始化

javascript - 从构造函数中创建构造函数

java - Android订阅购买AccountHold为null

java - 在 Spring boot 和 REST API 中上传 multipart/form-data 文件

java - (b & 0xff) 是什么意思?

java - 如何使用二维指针通过 JNA 调用 C 函数?

java - 如何在没有 Maven 的情况下使用 Caliper 基准测试版快照?

class - 在 F# 中使用私有(private)构造函数创建一个类

c# - 有没有办法在构造函数中强制显式参数类型?