当前位置: 首页 > 知识库问答 >
问题:

Java纸牌游戏:需要甲板类帮助

蓬弘
2023-03-14

这是我关于堆栈溢出的第一个问题,所以如果我的问题中有一个新手错误,请原谅,请随时更正,因为我计划在未来几个月内更多地使用此网站。

不管怎样,我是高中12年级的学生,我被一个家庭作业问题卡住了。所以基本上我们被分配了一个创建战争游戏(纸牌游戏)的项目,我们被要求每天做一小部分。到目前为止,直到今天一切都很顺利,因此我向你们提出了这个问题。

以下是该项目的内容:

卡片

  • 它有什么:
    • 私有int值:卡的值
    • 私服:纸牌套装
    • 私有布尔抽中:无论牌是否已从牌堆中抽出
    • Public Card(int val, char s):创建一张值为val、套装s和绘制为False的卡片
    • public int getValue():返回卡的值
    • 公共字符getSuit():返回卡片的花色
    • 公共布尔值isDrawn():返回是否已绘制卡片
    • Public String toString():以“value of ass”的形式返回描述卡的字符串

    甲板

    • 它有什么:
      • 私有字符[]套装={'c','d','h','s'}:套装的表示
      • public int numCards:套牌中的纸牌数量(传统上为52-将其降低以进行测试!)
      • 私人卡片[]甲板:甲板存储为卡片数组

      到目前为止,我已经做了一切。

      • 它做什么:
        • Public Deck():创建一副牌-值范围为2-14,每个花色之一
        • 公共抽卡Card():从牌堆中随机抽一张还没抽的牌
        • 公共字符串toString():为测试目的设计您想要的任何方式

        现在,在下面Quynh先生的帮助下,我已经完成了Public deck步骤,但是我对如何创建drawCard方法感到困惑。以下是我目前掌握的情况:

        public Card drawnCard(){
                int randNum = (int) Math.random()*13+2;
            }
        

        所以我知道上面的代码创建了一个介于2和14之间的随机数,但是我如何使用它来绘制物理卡呢?比如,我应该键入什么以便程序知道如何抽卡?对不起,我知道你可能觉得我现在每走一步都在要求你,但我真的迷路了,需要你的帮助!

        我是一个新手,当谈到编程,因此我道歉,如果这个问题是太简单/noobie你,但我真的需要你的帮助:)

        谢谢你的时间!

共有3个答案

祁星阑
2023-03-14

您应该为此使用数组列表以使洗牌更容易。由于这是家庭作业,我不会给你确切的代码,但是,

ArrayList<Card> deck=new ArrayList<Card>();
        //add a loop with
        {
            Card card=new Card("initilize card here");
            deck.add(card);
        }

从长远来看,这会让你开始更轻松。

夏侯臻
2023-03-14

像这样的。。。

public class Deck {

    private Card[] cards = new Card[52];
    private int index = -1;

    public Deck() {
        // build deck
        for (int i=0; i<52; ++i) {
            if (i<13) cards[i] = new Card('s',i+2);
            else if (i<26) cards[i] = new Card('c',i-13+2);
            else if (i<39) cards[i] = new Card('d',i-26+2);
            else if (i<52) cards[i] = new Card('h',i-39+2);        
        }
        // shuffle deck
        Collections.shuffle(Arrays.asList(cards));
    }

    public Card drawCard() {
        ++index;
        cards[index].drawn();            
        return cards[index];
    }
}

class Card {

    private char suit;
    private int value;
    private boolean drawn = false;

    Card(char s, int v) {
        suit = s;
        value = v;
    }

    void drawn() { drawn = true; }

    boolean isDrawn() { return drawn; }
}
微生俊捷
2023-03-14

作为初学者,您的甲板构造器应该与以下内容类似

for(int i = 2; i <= 14; i++){
   for(int j = 0; j < suits.length; j++){
     Card card = new Card(i, suits[j]);
     card.isDrawn(false);
     //ADD CARD TO YOUR DECK HERE  
   }
}

至于抽牌功能,只需随机化1-52中的一个数字(假设您使用的是52张牌),然后从您的牌堆中抽取它并设置. isDrawn(true)

 类似资料:
  • 我试图用Java实现纸牌游戏“Skat” 规则: 有32张卡片。每张牌在游戏中只存在一次。 颜色有:梅花、黑桃、红心、钻石 价值观是:王牌,国王,王后,杰克,十,九,八,七 那些牌被洗牌了。有三名球员 第一轮:每位玩家有3张牌。然后将两张卡片放入Skat。 第二轮:每位玩家再获赠4张牌。 第三轮:每位玩家再获得3张牌。 期望输出:每个玩家的牌都被展示(每张牌都应该存在一次) 我的产量:钻石七(32

  • 我尝试在Java实施纸牌游戏“滑冰” 规则: 有32张牌。每张牌在游戏中只存在一次。 颜色是:梅花、黑桃、红心、钻石 这些值是:王牌、国王、王后、杰克、十、九、八、七 那些牌被洗牌了。有三个队员 第一回合:每位玩家获赠3张牌。然后将2张牌放入滑板中。 第二回合:每名玩家再获4张牌。 第三回合:每名玩家再获3张牌。 想要的输出:露出的每个玩家的牌(每张牌都要存在一次) 我的输出:钻石七(32次) 我

  • 本文向大家介绍java实现24点纸牌游戏,包括了java实现24点纸牌游戏的使用技巧和注意事项,需要的朋友参考一下 本文题目为大家分享了java实现24点纸牌游戏的具体代码,供大家参考,具体内容如下 题目 24点游戏是经典的纸牌益智游戏。 常见游戏规则: 从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏

  • 我在做一个匹配的纸牌游戏,但我不明白如何实际做到这一点。我希望有人能帮我解释一下我能做些什么来解决这个问题。 以下是规格: 在一个对的纸牌游戏中,目标是翻出对匹配的纸牌。 https://en.wikipedia.org/wiki/contension_(游戏)以下是我们考虑的配对变化的规则。 在游戏开始时,有n张牌面朝下,其中n是4的倍数。每种卡片有4张,卡片上标有字母a、b、....例如,如果

  • 本文向大家介绍Java编写的24点纸牌游戏,包括了Java编写的24点纸牌游戏的使用技巧和注意事项,需要的朋友参考一下 任意4个1-13数字,加减乘除计算24点。 实现原理: 1)排列组合4个数字 2)计算每次排列组合的可能性 Cal24.java Combination.java 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 我正在尝试创建一个MVC模式的回合制卡牌游戏。我对正确的设计有些怀疑。 我创建了一个由这些类组成的模型: 卡(使用套装) 套牌(40张牌,抽取牌法,剩余牌数) 表 套装(enum) 玩家(手牌,人名,手牌数,收藏牌我想) 游戏模型(引用了Deck、Table,并在构造函数中包含两个玩家) 我将在用户按下“新游戏”按钮时创建两个Player对象和GameModel(计算机和Player)。这样做对吗