繁体   English   中英

骰子滚动游戏

[英]Die Rolling Game

我正在编写一个程序,该程序从六面骰子返回一个随机数,并且还接收一个字符串来询问用户第二个骰子的面数。 如果用户输入数字2,4,8,10,12,20,100,那么骰子角色的边就那么多。 如果用户输入的数字不是该数字,则第二个骰子应扮演具有六个面的骰子。 我们的问题是,如果用户输入的数字不是给定值,则返回0。我们需要返回1到6之间的一个随机数,因为它是一个六面骰子。 关于如何修复我们的代码有什么建议吗?

//Blueprint
public class Die{
private int numSides;
private int sideFacingUp;
public int die1;
public int die2;
public int num;


public Die()
{
    roll();
}
public Die(int number)
{
num = number;
    if(num==2||num==4||num==8|num==10||num==12||num==20||num==100)
    {
    roll2(num);
    }
    else
    {
        roll();
    }
}
public void roll()
{
    die1= (int)(Math.random()*6)+1;
}
public void roll2(int no)
{
    die2 = (int)(Math.random()*no)+1;

}
public int getDie1()
{
    //System.out.println("I m here");
    return die1;
}
public int getDie2()
{
    return die2;
}

}


//actual program
import java.util.Scanner;
public class DieTester{
public static void main(String[] args){
int num;
Die D1 = new Die();
Scanner s1 = new Scanner(System.in);
System.out.println("The Value of the First Die:"+D1.getDie1());
System.out.println("Enter number of Die you want to create");
num = s1.nextInt();
Die D2 = new Die(num);

System.out.println("The Value of the Second Die:"+D2.getDie2());

}
}

问题出在getDie2()

调用roll()die1数字分配给die1

因此,如果用户输入3。它将调用roll()并为die1而不是die2分配随机值,并且int默认值始终为0 这就是为什么您得到0的原因。

更改getDie2()以检查0值。

public int getDie2()
{
     if(die1 == 0) // die1 will be 0 because roll2() is called. So return die2
     {
         return die2;
     }
     else         // die2 will be 0 because roll() is called. So return die1
     {
         return die1;
     }
}

因此,要摆脱这种不必要的检查,请删除die1die2并仅对模具的表面使用一个值,而与模具die2

像这样:

public class Die{

private int sideFacingUp;
private int numSides;


public Die()
{
    roll();
}
public Die(int number)
{
    numSides = number;
    if(numSides==2||numSides==4||numSides==8|numSides==10||numSides==12||numSides==20||numSides==100)
    {
    roll2(numSides);
    }
    else
    {
        roll();
    }
}
public void roll()
{
    sideFacingUp= (int)(Math.random()*6)+1;
}
public void roll2(int no)
{
    sideFacingUp = (int)(Math.random()*no)+1;

}
public int getDie()
{
    //System.out.println("I m here");
    return sideFacingUp;
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM