我正在做MVC,我是新手。我通过点击“掷骰子”按钮制作一个游戏,其中5个骰子滚动并显示随机数字。每个模具标签下都有一个复选框。如果玩家点击复选框,则骰子不会再次滚动而其他骰子会滚动。
我可以在我的视图中显示骰子数字,但我不明白如何制作它,所以如果选中复选框,则骰子不会滚动。我翻译了我的程序,因为它在荷兰语中:Waarde = value; dobbesteen =骰子; werp =投射。
public class Dobbelsteen
{
Random rnd = new Random();
public int Waarde { get; set; }
public bool Checked { get; set; }
public int Worpen { get; set; }
public void Rollen()
{
if (Checked == false)
Waarde = rnd.Next(1, 7);
}
}
public class BusinessController
{
List<int> dice = new List<int>();
Dobbelsteen objdobbelsteen = new Dobbelsteen();
public BusinessController()
{
}
public int Roll()
{
for (int i = 0; i < 5; i++)
{
objdobbelsteen.Rollen();
dice.Add(i);
}
return objdobbelsteen.Waarde;
}
public int Werp()
{
objdobbelsteen.Worpen++;
return objdobbelsteen.Worpen;
}
public int nietroll()
{
int i = 1;
return i;
}
/*public bool Winnaar()
{
if (dice[1] == dice[2])
{
return true;
}
else return false;
}*/
public void SetLock(int p)
{
if(objdobbelsteen.Checked==false)
{
nietroll();
}
}
}
public partial class Form1 : Form
{
BusinessController busniessController = new BusinessController();
public Form1()
{
InitializeComponent();
}
public void Gooien_Click(object sender, EventArgs e)
{
lblWorpen.Text = Convert.ToString(busniessController.Werp());
dblsteen1.Text = Convert.ToString(busniessController.Roll());
dblsteen2.Text = Convert.ToString(busniessController.Roll());
dblsteen3.Text = Convert.ToString(busniessController.Roll());
dblsteen4.Text = Convert.ToString(busniessController.Roll());
dblsteen5.Text = Convert.ToString(busniessController.Roll());
if (dblsteen1.Text==dblsteen2.Text)
MessageBox.Show("u win");
}
public void checkBox1_CheckedChanged(object sender, EventArgs e)
{
busniessController.SetLock(1);
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
busniessController.SetLock(2);
}
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
busniessController.SetLock(3);
}
private void checkBox4_CheckedChanged(object sender, EventArgs e)
{
busniessController.SetLock(4);
}
private void checkBox5_CheckedChanged(object sender, EventArgs e)
{
busniessController.SetLock(5);
}
}
答案 0 :(得分:1)
你需要5个不同的骰子,而不仅仅是一个。这样,每个骰子都可以将自己的Checked属性设置为不同的值
/etc/hadoop/conf/
此外,您应该使DobbelSteen类的Random变量静态,否则Rollen方法results in the same value内的严格循环将返回每个骰子。
之后你可以打电话
List<Dobbelsteen> dices = new List<Dobbelsteen>()
{
{new Dobbelsteen()},
{new Dobbelsteen()},
{new Dobbelsteen()},
{new Dobbelsteen()},
{new Dobbelsteen()}
};
public void RollAll()
{
for (int i = 0; i < 5; i++)
dices[i].Rollen();
}
public int GetDiceValue(int i)
{
if(i >= 0 && i <= dices.Count)
return dices[i].Waarde;
else
throw new IndexOutOfRangeException($"Invalid index {i}");
}
public void SetLock(int p)
{
if(p >= 0 && p <= dices.Count)
return dices[p].Checked = true;
else
throw new IndexOutOfRangeException($"Invalid index {p}");
}
最后请记住,在.NET中,列表之类的集合的索引从零开始并以集合计数结束 - 1.因此,应相应地更改对SetLock的调用以避免异常
答案 1 :(得分:0)
你从未真正设置过&#34; Checked&#34; value,SetLock是指仅设置int的nietRol函数。在这里你需要设置&#34; Checked&#34;价值为真。
请在恩格斯的恩德兰兹玛尔母鸡的节目中安抚niet。