首页 文章

你好Lo卡片游戏在Java

提问于
浏览
-1

所以我必须在java中编写一个HiLo卡片游戏程序,以下是如何工作的说明:

有卡和甲板两类

Card类包含2个私有变量int suit和int faceValue一个构造函数,它将2个变量作为参数,如下所示:

  • 卡(int suit,int faceValue)

  • Getters - > getSuit:int和getFaceValue:int

  • compareTo(卡片卡):int方法

  • ToString():String方法

Deck类包含一个随机类型的随机变量private random:Random A no parameter constructor Deck()一个不带参数和卡类型的交易方法

Card类有一个西装,是一个从0到3的数字,代表一张牌的西装: - 0代表黑桃(这是排名最高的西装) - 1代表红心(第二高的西装) - 2代表钻石(第三高的套装) - 3代表俱乐部(最弱的套装)

faceValue是1到13之间的值; 1代表Ace,11代表杰克,12代表女王,13代表国王 .

compareTo方法将当前实例(即this)与参数卡进行比较 . 如果两个对象具有相同的套装和faceValue,则该方法返回0.如果当前实例更高(更高的值,或者如果它们是相同的值,更高的套装),则该方法返回正值(它可以是1或任何其他正值,因为幅度不重要,只有符号) . 如果当前实例较低,则返回负值 .

toString方法返回卡片的String表示(例如,“Ace of Spades”,“2 of Hearts”)

Deck类有一个Random类型的实例,它在实例化和处理新卡时使用 .

现在编写一个名为HiLoApp的应用程序类,它将: - 实例化一个Deck对象 - 处理并显示第一张牌 - 要求用户选择-1,如果他们认为下一张牌会更低,1如果下一张牌会更高,或者0退出游戏o交易并显示下一张牌o显示用户是否正确选择o计算尝试次数和正确猜测

主要方法是连续执行这些步骤,直到用户输入0退出游戏 . 此时,显示用户的总尝试次数和正确的猜测 .

Card class:

public class Card
{
    private int suit;
    private int faceValue;

    //Constructor 
    public Card(int suit, int faceValue)
    {
        this.suit = suits; 
        this.faceValue = faceValue;

        card = deal(); //???

    }
    public int getSuit()
    {   
        return suit;
    }
    public int getFaceValue()
    {
        return faceValue;
    }
    public int compareTo(Card card)
    {

    }
    public String toString 
    {
        String cardName = null;

        switch (faceValue)
        {
            case 2:
            cardName = "Two";
            break;

            case 3:
            cardName = "Three";
            break; 

            case 4:
            cardName = "Four";
            break;

            case 5:
            cardName = "Five";
            break;

            case 6:
            cardName = "Six";
            break;

            case 7:
            cardName = "Seven";
            break;

            case 8:
            cardName = "Eight";
            break;

            case 9:
            cardName = "Nine";
            break; 

            case 10: 
            cardName = "Ten";
            break;

            case 1: 
            cardName = "Ace";
            break; 

            case 11: 
            cardName = "Jack";
            break;

            case 12:
            cardName = "Queen";
            break; 

            case 13: 
            cardName = "King";
            break; 

        }
        switch (suit)
        { 

            case 0:
            cardName += "Of Spades";
            break; 

            case 1: 
            cardName += "Of Hearts";
            break; 

            case 2:
            cardName += "Of Diamonds";
            break;

            case 3:
            cardName += "Of Clubs";
            break; 
        }

        return cardName;
    }
}

Deck Class:

import java.util.Random;

public class Deck 
{
    private Random random;

    public Deck()
    {
        random = 0;
    }
    public Card deal()
    {
        while (num != 0)
        {
            random = new Random();

            suit = random.nextInt(3);
            faceValue = random.nextInt(13) + 1;

        }

        return //how to return suit and faceValue at the same time?

    }
}

Application Class:

import java.util.Random;
import java.util.Scanner; 

public class HiLo
{
    public static void main(String [] args)
    {
        //to quit the game 
        int num;

        //getting input from user
        Scanner keyboard = new Scanner(System.in);

        Deck deck1 = new Deck();

        = deck1.deal()
    }
}

我的问题是:我不明白compareTo方法中的card参数来自何处 . 我之所以无法完全编写程序,也是因为我不明白它是如何工作的 . 第一张卡的初始交易在哪里发生?卡类是否可以访问Deck类以使用交易方法?我看到deal方法返回一个Card类类型但是如何同时返回suit和faceValue呢?

2 回答

  • 0

    我不明白compareTo方法中的card参数来自何处 .

    它来自您将要写的函数调用 . 例子:

    Card card1 = deck.deal();
    Card card2 = deck.deal();
    
    if (compare (card1, card2)) ...
    

    第一笔交易主要是你说 deck1.deal() .

    Card类不需要使用交易方法,但HiLo确实使用了 deck1.deal() .

    同时返回套装和faceValue的方法是退回卡片:

    public Card deal()
    {
      ...
    
      Card result (suit, faceValue);
      return result;
    }
    

    这就是上课的重点(无论如何,这是一个重点):将各种事物捆绑在一起 . 卡片是一套西装和一个faceValue . 现在它存在,在任何需要的地方使用它,好吧,卡片 .

  • 1

    我认为你的责任可能是错误的 . 卡片创建卡片,卡片根本不需要知道卡片 . 以这种方式思考 - 卡片可以在没有卡片的情况下存在 .

    所以在你的套牌构造函数中,你应该制作所有52张牌,并将它们保存在列表中 . 然后当你在牌组上调用 deal 时,它会从列表中删除顶牌,并将其作为返回值给出 .

    至于 compareTo 方法 - 通常你实现Comparable接口 . 然后,如果你有一个卡片列表,并想要对它进行排序,列表将一次两张卡片,并进行比较 .

相关问题