【问题标题】:Card game in bluejbluej中的纸牌游戏
【发布时间】:2014-01-20 04:00:38
【问题描述】:

所以我最近一直在使用最新版本的 Bluej 学习 java,因为有人告诉我这将是一个很好的起点。我已经完成了通常的 Hello World,学习如何获取和设置、数组和数组列表等...我决定尝试简单的纸牌游戏,我认为它实际上是二十一点,但不要引用我的话。无论如何,我真的不知道从哪里开始我得到了一个模板,但实际上试图找出它的某些部分时遇到了麻烦,希望有人可以帮助我,代码如下:

public class Deck()
{
    private int card;
    private int suit;

public Deck()
{
    shuffle();
}

public void shuffle()
{
   double rand = (int)(Math.random()*(card+1)
   // Bare in mind I dont even think this is correct
   // Need to generate a double value from 0.0 up to but not including 1.0
   // Apparently to produce value in a range of 1 to 6
   // I need to apply a scaling factor of 6 and add 1 to the result
}

public int getCard()
{
    return card;
}

public int getSuit()
{
    return suit;
}

那么我的代码是否正确?我不希望它是一个复杂的二十一点版本,如果它确实是根据它的 52 张牌在包中的事实来判断,我认为每手 4 张牌或类似的东西很可能因为我已经做了一些也进行研究以了解其他人的产品,但我真的不知道我要去哪里!非常感谢任何帮助!因为我真的很想填补空白!

【问题讨论】:

  • "我的代码是否正确?"嗯...public class Deck() 绝对是错误...我还没有阅读其余的内容就知道它不会编译。除此之外,你具体问我们什么?我不确定我是否确定了我伪回答的问题之外的问题......
  • 我试图找出我的代码有什么问题,其次是 shuffle 方法是否正确 - 因此是 //code cmets。

标签: java random arraylist bluej


【解决方案1】:

一些错误:

  • 类主体:它的公共类 Deck{} 而不是公共类 Deck(){}。仅将 () 用于方法或构造函数,而不用于类。

  • 你声明了领域牌和花色,但你从未真正将它们设置为anyhting。

  • double rand:您将变量 rand 声明为 double,但稍后您尝试为其分配一个 int

提示:

  • 要生成随机值,请尝试“随机”类。这个类有一个 nextInt(n) 方法,可以生成 0 到 n-1 之间的数字。比 Math.random() 更容易理解也更干净

  • 尝试制作一个额外的类“Card”,其中包含代表卡号和套件的数字。

  • 如果您将牌组中的牌表示为数组或 ArrayList 会更容易。最后一个可以在 Collections.shuffle() 方法中使用。这样您就不必涉足 Random 或 Math.random()。

【讨论】:

  • 谢谢!我现在更清楚自己哪里出错了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多