2017-05-04 43 views
0

我正在做MVC,我是新的。我正在製作一個遊戲,通過點擊「擲骰子」按鈕並顯示隨機數字,擲出5個骰子。在每個模具標籤下有一個複選框。如果玩家點擊複選框,則骰子不會再滾動,而其他骰子滾動。c#撲克複選框值的值不變

我可以在我的視圖中顯示骰子編號,但我不明白如何製作它,所以如果您選中複選框,骰子不會滾動。我翻譯了我的程序,因爲它在荷蘭語中: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); 
    } 
} 

回答

1

你需要5個不同的骰子,而不只是一個。這樣,每個骰子可以有自己的Checked屬性設置爲不同的值

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}"); 
} 

而且,你應該讓你的DobbelSteen靜態否則ROLLEN方法results in the same value內嚴格循環返回每個骰子類的隨機變量。

在這之後,你可以調用

busniessController.RollAll(); 
dblsteen1.Text = busniessController.GetDiceValue(0).ToString(); 
dblsteen2.Text = busniessController.GetDiceValue(1).ToString(); 
dblsteen3.Text = busniessController.GetDiceValue(2).ToString(); 
dblsteen4.Text = busniessController.GetDiceValue(3).ToString(); 
dblsteen5.Text = busniessController.GetDiceValue(4).ToString(); 

最後記得在NET像列表的收集索引從零開始,結束到集合計數 - 1。所以你要SetLock調用應作相應改變以避免異常

0

你從來沒有真正設置「檢查」值,SetLock指的是隻設置一個int的nietRol函數。在這裏你需要設置「Checked」值爲true。

並且請編程人員在het荷蘭語maar doe alles in het恩格斯。