C# 掷骰子♯

C# 掷骰子♯,c#,C#,我正在设计一个windows程序,它允许用户选择一个骰子,然后在掷骰子时显示可能的结果 在这一点上,无论选择什么骰子,我只能从50个骰子中得到可能的结果。我相信这与公众掷骰子的问题有关,但不能确定。 我使用两个类,分别是FormDice.cs和RollDice.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

我正在设计一个windows程序,它允许用户选择一个骰子,然后在掷骰子时显示可能的结果

在这一点上,无论选择什么骰子,我只能从50个骰子中得到可能的结果。我相信这与公众掷骰子的问题有关,但不能确定。 我使用两个类,分别是FormDice.cs和RollDice.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 
{
class RollDice
{
    //variables
    private numberOfSides;
    private Random randomNumberGenerator = new Random();

    public RollDice()
    {


        numberOfSides = 6;
        numberOfSides = 2;
        numberOfSides = 10;
        numberOfSides = 50;

    }

    //constructor
    public RollDice(int sides)
    {
        numberOfSides = sides;
    }

    public int Roll()
    {
        return randomNumberGenerator.Next(1, numberOfSides + 1);

    }

}
}


    private void resultsListBox_SelectedIndexChanged(object sender, EventArgs e)
    {

    }



}
}
这是我的密码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 
{
public partial class FormDice : Form
{
    public FormDice()
    {
        InitializeComponent();
        sixRadioButton.Checked = true;


    }
    //declare variables
    int sides;
    int answer;


    //assign clear button
    private void clearButton_Click(object sender, EventArgs e)
    {

        twoRadioButton.Checked = false;
        sixRadioButton.Checked = true;
        tenRadioButton.Checked = false;
        fiftyRadioButton.Checked = false;

    }


    //assign event to roll button
    private void rollButton_Click(object sender, EventArgs e)
    {


        //if statements check which number checked
        if (twoRadioButton.Checked)
        {

            sides = 2;
            RollDice rolldice = new RollDice();
            answer = rolldice.Roll();
        }
        else if (sixRadioButton.Checked)
        {

            sides = 6;
            RollDice rolldice = new RollDice();
            answer = rolldice.Roll();
        }

        else if (tenRadioButton.Checked)
        {

            sides = 10;
            RollDice rolldice = new RollDice();
            answer = rolldice.Roll();
        }

        else if (fiftyRadioButton.Checked)
        {

            sides = 50;
            RollDice rolldice = new RollDice();
            answer = rolldice.Roll();
        }

        else
        {


            RollDice rolldice = new RollDice();
            answer = rolldice.Roll();

        }
        resultsListBox.Items.Add(answer.ToString());
    }


    //exit program
    private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }
    //about message box
    private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
    {
      MessageBox.Show("Dice Magic Version 1.0\nProgrammer: PaulPresutto",            `enter code here`"Dice Magic", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }

    private void twoRadioButton_CheckedChanged(object sender, EventArgs e)
    {

    }
还有我的RollDice.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 
{
class RollDice
{
    //variables
    private numberOfSides;
    private Random randomNumberGenerator = new Random();

    public RollDice()
    {


        numberOfSides = 6;
        numberOfSides = 2;
        numberOfSides = 10;
        numberOfSides = 50;

    }

    //constructor
    public RollDice(int sides)
    {
        numberOfSides = sides;
    }

    public int Roll()
    {
        return randomNumberGenerator.Next(1, numberOfSides + 1);

    }

}
}


    private void resultsListBox_SelectedIndexChanged(object sender, EventArgs e)
    {

    }



}
}

在RollDice构造函数中,您将边数分配为6、2、10、50。所以它最终总是50岁

您已经有了一个构造函数,它允许您传入边数。尝试使用它。例如:

else if (fiftyRadioButton.Checked)
{
    RollDice rolldice = new RollDice(50);
}

在第一个代码段中更改所有这些:

sides = 10;
RollDice rolldice = new RollDice();
要调用接受边值的重载ctor,请执行以下操作:

sides = 10;
RollDice rolldice = new RollDice(sides);
由于默认ctor多次覆盖同一变量,numberOfSides的值始终为50

public RollDice()
{
    numberOfSides = 6;
    numberOfSides = 2;
    numberOfSides = 10;
    numberOfSides = 50;  // last value wins out - you'll want to fix this
}

你的问题是什么?这里没有一个地方可以检查和修复你的代码,问一个特定的问题祝贺你在不应该使用Unicode U+266F的地方使用Unicode U+266F:提示:如果你用c中的骰子滚动搜索你的问题,它不会显示,但是如果你删除了符号,它会显示。回答得好。可能希望在无参数构造函数中为numberOfsides设置默认值0或-1。这似乎解决了我的问题。谢谢你的洞察力!