我试图能够从dieclass调用函数并在matchplay类中使用roll数量...这可能吗?
public class DieClass
{
public void DiceRoll(int min, int max)
{
Random random = new Random();
int roll1 = random.Next(0, 6);
int roll2 = random.Next(0, 6);
int roll3 = random.Next(0, 6);
}
}
public class MatchPlay
{
public void Match()
{
DieClass.DiceRoll();
Console.WriteLine("Starting Match Play...");
Console.WriteLine();
Console.WriteLine("Round One");
Console.WriteLine("Your first dice is [0]", roll1);
Console.WriteLine("Your second dice is [0]", roll2);
Console.WriteLine("Your third dice is [0]", roll3);
}
}
}
答案 0 :(得分:4)
有一些事情需要修复':
DiceRoll
方法是一种实例方法,因此您需要创建DiceClass
类的实例才能使用它。 roll1
,roll2
和roll3
变量是方法的本地变量,因此一旦方法完成,您将无法使用它们。相反,您可以将它们作为类的公共属性。 Random
(实际上这会导致问题,因为Random
的种子基于系统时钟,所以如果你的方法被非常快速地调用,它将反复产生相同的数字)。您可以将其设置为静态并将其实例化一次。 min
方法的max
和Roll
参数,我们是否应该使用它们?您目前有0
和6
硬编码。 {}
)而不是方括号([]
)。Class
作为类名的一部分,并且您不需要Dice
作为方法名称的一部分。这将简化打字的数量,并且仍然可以理解。您可能会考虑做的是创建一个代表单个Die
对象的类,并为其提供Roll()
方法和Value
属性。然后,用户可以创建任意数量的内容并将其保存在列表中:
public class Die
{
public int Value { get; set; }
// Make this static and instantiate it only once to avoid re-seeding issues
private static readonly Random rnd = new Random();
public Die()
{
Value = 1;
}
public void Roll()
{
// This method uses values 1-6 as a standard die
Roll(1, 6);
}
public void Roll(int minValue, int maxValue)
{
Value = rnd.Next(minValue, maxValue + 1);
}
}
现在,您可以使用Die
类,如下所示:
public class MatchPlay
{
public void Match()
{
// Add three Die objects to our list of dice
List<Die> dice = new List<Die>
{
new Die(), new Die(), new Die()
};
Console.WriteLine("Starting Match Play...");
Console.WriteLine();
Console.WriteLine("Round One");
// Roll all dice
dice.ForEach(d => d.Roll());
Console.WriteLine("Your first dice is {0}", dice[0].Value);
Console.WriteLine("Your second dice is {0}", dice[1].Value);
Console.WriteLine("Your third dice is {0}", dice[2].Value);
}
}
最后,我们可以使用Main
方法启动匹配:
private static void Main()
{
MatchPlay game = new MatchPlay();
game.Match();
Console.WriteLine("\nDone!\nPress any key to exit...");
Console.ReadKey();
}
答案 1 :(得分:2)
您需要制作DiceRoll
static
方法,或创建DieClass
的实例并通过该方法调用您的方法。
例如,您可以将方法声明为
public static void DiceRoll(int min, int max)
或者您可以实例化一个对象:
DieClass dice = new DieClass();
dice.DiceRoll(0, 6);
话虽这么说,你的DieClass
课还有其他问题,其中最明显的就是你需要一种方法将结果传回呼叫者。最简单的方法是让DiceRoll()
生成一个结果并返回。此外,您已将0
和6
硬编码为random.Next()
的参数,尽管该方法需要一对参数min
和max
。