如何在Java中绘制骰子?

4

红色骰子 我正在为班级制作一个掷骰子游戏,但我无法完成代码,因为我不知道如何在骰子上绘制实际的点数。我有表格和实际的骰子,只是没有骰子上的点数。我需要帮助来画它们。这些骰子是红色的。这是我现在有的:

// Draws a given number of dots on this die
private void drawDots(Graphics g, int x, int y, int numDots)
    {
    g.setColor(Color.WHITE);

    int dotSize = dieSize / 4;
    int step = dieSize / 8;
    int x1 = x + step - 1;
    int x2 = x + 3*step;
    int x3 = x + 5*step + 1;
    int y1 = y + step - 1;
    int y2 = y + 3*step;
    int y3 = y + 5*step + 1;

    switch (numDots)
    {
      case 1:
    g.fillOval(x2, y2, dotSize, dotSize);
    break;
  case 2:
    g.fillOval(x3, y1, dotSize, dotSize);
    g.fillOval(x1, y3, dotSize, dotSize);
    break;
  case 3: 
    g.fillOval(x1, y1, dotSize, dotSize);
    g.fillOval(x2, y2, dotSize, dotSize);
    g.fillOval(x3, y3, dotSize, dotSize);
    break;
  case 4:
    g.fillOval(x1, y1, dotSize, dotSize);
    g.fillOval(x3, y3, dotSize, dotSize);
    g.fillOval(x1, y3, dotSize, dotSize);
    g.fillOval(x3, y3, dotSize, dotSize);
    break;
  case 5: 
    g.fillOval(x1, y1, dotSize, dotSize);
    g.fillOval(x2, y2, dotSize, dotSize);
    g.fillOval(x3, y1, dotSize, dotSize);
    g.fillOval(x1, y3, dotSize, dotSize);
    g.fillOval(x3, y3, dotSize, dotSize);
    break;
  case 6:
    g.fillOval(x1, y1, dotSize, dotSize);
    g.fillOval(x2, y1, dotSize, dotSize);
    g.fillOval(x3, y1, dotSize, dotSize);
    g.fillOval(x1, y3, dotSize, dotSize);
    g.fillOval(x2, y3, dotSize, dotSize);
    g.fillOval(x3, y3, dotSize, dotSize);
    break;


}

}
}

我不知道我做错了什么。当我运行它时,骰子会滚动,但上面并没有显示任何点数。


它是一个雪仙子,在美丽的雪和冰宫前的一个冰屋顶上,在暴风雪中跳舞。问题是,它全部都是白色的,完美地融合在一起。因此,我们无法确定它是否是一张空白的纸或是一幅有着复杂细节的神奇画作。 - phflack
你确定这个方法被调用了吗?在方法开始处添加 System.out.println("ducks may moo sometimes");。同时将颜色设置为屏幕上其他地方没有的颜色,如果背景是白色,则将点设置为黑色,以防它们被呈现在骰子之外。 - phflack
你可能遇到的另一个问题是,你是在骰子之前还是之后画点?如果是在之前,骰子会覆盖它们并隐藏点。如果您提供更多代码,我们就可以更好地理解您的问题。 - phflack
1个回答

0

问题已解决。我的Die.java类没有表达它所需要的内容。不过还是感谢您的帮助!

最初我的类是这样写的:

import java.util.Random;


public class Die
{
  private final static Random random = new Random();
  public Die()
{

}
  public int getRoll()
 {
   return random.nextInt(6)+1;
  }
  public int getNumDots()
  {
    // TODO Auto-generated method stub
    return 0;
  }
}

应该是这样说的:


import java.util.Random;


public class Die
{
  private int sides;
  {
  }

    public void roll()
    {
      sides = (int)(Math.random()* 6 +1);
    }
    public int getNumDots()
    {
      return sides;
    }
  }

你能否澄清一下"My Die.java class was not saying what it needed"的意思?以防将来有人在绘图方面遇到困难,更具体地说明问题可能有助于他们进行故障排除或寻找其他问题,如果这个答案不能满足他们的需求。 - Tophandour
不要使用Random,而应该使用SecureRandom。 - Christian Kuetbach
@Kuetbach为什么你会使用SecureRandom而不是Random?那有什么好处吗? - Part_Time_Nerd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接