c# - Why does my disableButtons method not work? -
i working on schoolproject c# , making tic tac toe. have little problem though..
my code used work fine untill build in scoreboard.
i think scoreboard overruling disablebuttons.. before added scoreboard worked fine..
can @ code , tell me what's wrong?
it's supposed work this:
play, if there winner, disable buttons. please me out!
edit: don't know why namespace in textfield..
namespace tic_tac_toe { public partial class form1 : form { bool turn = true; //true = x en false = o int turn_count = 0; static string player1, player2; public form1() { initializecomponent(); } public static void setplayername(string n1, string n2) { player1 = n1; player2 = n2; } private void exittoolstripmenuitem_click(object sender, eventargs e) { application.exit(); } private void abouttoolstripmenuitem_click(object sender, eventargs e) { messagebox.show("gemaakt door luca fraser", "about"); } private void button_click(object sender, eventargs e) { button b = (button)sender; if (turn) b.text = "x"; else b.text = "o"; turn = !turn; b.enabled = false; turn_count++; checkforwinner(); if (turn_count % 2 == 0) { lblturn.text = player1 + " aan de beurt"; } else { lblturn.text = player2 + " aan de beurt"; } } private void checkforwinner() { bool thereiswinner = false; //horizontaal checken if((btna1.text == btna2.text) && (btna2.text == btna3.text) && (!btna1.enabled)) thereiswinner = true; else if((btnb1.text == btnb2.text) && (btnb2.text == btnb3.text) && (!btnb1.enabled)) thereiswinner = true; else if((btnc1.text == btnc2.text) && (btnc2.text == btnc3.text) && (!btnc1.enabled)) thereiswinner = true; //verticaal checken if ((btna1.text == btnb1.text) && (btnb1.text == btnc1.text) && (!btna1.enabled)) thereiswinner = true; else if ((btna2.text == btnb2.text) && (btnb2.text == btnc2.text) && (!btna2.enabled)) thereiswinner = true; else if ((btna3.text == btnb3.text) && (btnb3.text == btnc3.text) && (!btna3.enabled)) thereiswinner = true; //diagonaal checken if ((btna1.text == btnb2.text) && (btnb2.text == btnc3.text) && (!btna1.enabled)) thereiswinner = true; else if ((btna3.text == btnb2.text) && (btnb2.text == btnc1.text) && (!btnc1.enabled)) thereiswinner = true; if (thereiswinner) { disablebuttons(); string winner = ""; if (turn) { winner = player2; lblo.text = (int32.parse(lblo.text) + 1).tostring(); } else { winner = player1; lblx.text = (int32.parse(lblx.text) + 1).tostring(); } messagebox.show(winner + " wins!"); } else { if (turn_count == 9) { lbldraw.text = (int32.parse(lbldraw.text) + 1).tostring(); messagebox.show("it's draw!"); } } } private void disablebuttons() { try { foreach (control c in controls) { button b = (button)c; b.enabled = false; } } catch { } } private void newgametoolstripmenuitem_click(object sender, eventargs e) { turn = true; turn_count = 0; foreach (control c in controls) { try { button b = (button)c; b.enabled = true; b.text = ""; } catch { } } } private void form1_load(object sender, eventargs e) { form2 formtwo = new form2(); formtwo.showdialog(); lblxcount.text = player1; lblocount.text = player2; lblturn.text = player1 + " aan de beurt"; } private void mouse_enter(object sender, eventargs e) { button b = (button)sender; if (b.enabled) { if (turn) { b.text = "x"; } else b.text = "o"; } } private void mouse_leave(object sender, eventargs e) { button b = (button)sender; if (b.enabled) { b.text = ""; } } private void resetwincounttoolstripmenuitem_click(object sender, eventargs e) { lblo.text = "0"; lblx.text = "0"; lbldraw.text = "0"; } private void lblocount_click(object sender, eventargs e) { } private void lblocount_textchanged(object sender, eventargs e) { } } }
here:
private void disablebuttons() { try { foreach (control c in controls) { button b = (button)c; b.enabled = false; } } catch { } } when iterate on control not button, have exception , loop ends.
you can try this:
foreach (control c in controls) { button b = c button; if(b != null) b.enabled = false; }
Comments
Post a Comment