c #poker复选框值不要改变

时间:2017-05-04 19:48:01

标签: c#

我正在做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);
    }
}

2 个答案:

答案 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。