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