C#图形用户界面骰子游戏通过参考

本文关键字:参考 游戏 图形用户界面 | 更新日期: 2023-09-27 18:21:03

好的,我正在尝试制作一个GUI骰子游戏,其中骰子数字用文本框表示。

我必须创建一个表示骰子的类,并且我的至少一个方法必须通过引用正确地传递参数。我的问题是我对类或传递参数没有太多经验

我在上出错rd.RollDice1(参考dice1);rd.RollDice2(参考dice2);(我确信我没有错误地构造RollDice类)有人能帮我吗?

这是我到目前为止的代码:

public partial class Form1 : Form
{
    private RollDice rd;

    public Form1()
    {
        InitializeComponent();
        rd = new RollDice();
    }
    private void button1_Click(object sender, EventArgs e)
    {  
        int dice1, dice2;
        const int EYE = 1;
         const int BOX = 6;
        rd.RollDice1(ref dice1);
        rd.RollDice2(ref dice2);
        string result = string.Format("{0}", dice1);
        string result2 = string.Format("(0)", dice2);
             textBox1.Text = result;
               textBox2.Text = result;
         if (dice1 == EYE && dice2 == BOX)
         {
             MessageBox.Show("You rolled a Snake Eyes!");
         }
        if (dice1 == BOX && dice2 == BOX)
        {
            MessageBox.Show("You rolled BoxCars!");
        }
        else
        {
            MessageBox.Show("You rolled a {0} and a {1}", dice1, dice2);
        }
    }
}

}

class RollDice
{
   const int EYE = 1;
   const int BOX = 6;
    public int RollDice1(ref int dieValue1)
    {
        Random randomNums = new Random();
         dieValue1 = randomNums.Next(1, 7);
        return dieValue1;
    }
    public int RollDice2(ref int dieValue2)
    {
        Random randomNums = new Random();
         dieValue2 = randomNums.Next(1, 7);
        return dieValue2;
    }



}

}

C#图形用户界面骰子游戏通过参考

传递带有ref的变量需要使用默认值初始化该变量。如果你没有用初始值设置两个骰子,你的编译器会抱怨"Use of unassigned local variable xxxxx"

private void button1_Click(object sender, EventArgs e)
{  
    const int EYE = 1;
    const int BOX = 6;
    int dice1 = EYE;
    int dice2 = BOX;
    rd.RollDice1(ref dice1);
    rd.RollDice2(ref dice2);
    .....

然而,查看您的代码,不需要使用ref传递这些值,您可以简单地获得返回值

    dice1 = rd.RollDice1();
    dice2 = rd.RollDice2();

当然,您应该更改类中的两个方法,以删除ref 传递的参数

class RollDice
{
    Random randomNums = new Random();
    public int RollDice1()
    {
        return randomNums.Next(1, 7);
    }
    public int RollDice2()
    {
        return randomNums.Next(1, 7);
    }
}