bosei Δημοσ. 17 Απριλίου 2011 Δημοσ. 17 Απριλίου 2011 Έχω αρχίσει να φτιάχνω μια τρίλιζα και έχω γράψει και τον απλό κώδικα για το ποιός νικάει (Χ ή Ο) Έφτιαξα τον πίνακα : >string[,] pinakas = new string[3, 3]; Μετά έβαλα σε κάθε button πότε πρέπει να αλλάζει Χ ή Ο: >private void btn1_Click(object sender, EventArgs e) { if (btnTurn.Text == "O") { btnTurn.Text = "X"; btn1.Text = "O"; pinakas[0, 0] = "O"; } else { btnTurn.Text = "O"; btn1.Text = "X"; pinakas[0, 0] = "X"; } btn1.BackColor = Color.Red; Owins(); Xwins(); } Έφτιαξα επίσης δυο void (Οwins και Xwins): >void Owins() { if (pinakas[0, 0] == "O" && pinakas[1, 1] == "O" & pinakas[2, 2] == "O") { MessageBox.Show(""); } else if (pinakas[0, 2] == "O" && pinakas[1, 1] == "O" & pinakas[2, 0] == "O") { MessageBox.Show(""); } else if (pinakas[0, 1] == "O" && pinakas[1, 1] == "O" & pinakas[2, 1] == "O") { MessageBox.Show(""); } else if (pinakas[1, 0] == "O" && pinakas[1, 1] == "O" & pinakas[1, 2] == "O") { MessageBox.Show(""); } else if (pinakas[0, 0] == "O" && pinakas[1, 0] == "O" & pinakas[2, 0] == "O") { MessageBox.Show(""); } else if (pinakas[2, 0] == "O" && pinakas[2, 1] == "O" & pinakas[2, 2] == "O") { MessageBox.Show(""); } else if (pinakas[0, 2] == "O" && pinakas[1, 2] == "O" & pinakas[2, 2] == "O") { MessageBox.Show(""); } else if (pinakas[0, 2] == "O" && pinakas[0, 1] == "O" & pinakas[0, 0] == "O") { MessageBox.Show(""); } (Το Xwins είναι ο ίδιος κώδικας με Χ αντί για Ο) Στο Παραπάνω κώδικα δεν δουλεύουν οι 4 πρώτες συνθήκες ενώ στον ίδιο κώδικα με τα Χ δουλεύουν όλα. Ξέρετε τι μπορεί να φταίει.
MitsakosGR Δημοσ. 17 Απριλίου 2011 Δημοσ. 17 Απριλίου 2011 Βγάλε τα μονά "&" και βάλε διπλά "&&". Το μονό είναι για bitwise operations. Εσύ θέλεις να ισχύουν οι συνθήκες. Edit: Και μερικές συμβουλές: Μην κοιτάς ποιανού σειρά είναι με βάση το Text ενός κουμπιού. Καλύτερα φτιάξε μία global μεταβλητή που θα έχεις ποιανού σειρά είναι και μία function changeTurn() η οποία αλλάζει και την global και το Text του κουμπιού. Αντί να αντιγράφεις τον ίδιο κώδικα σε κάθε κουμπί μπορείς να αλλάξεις το handler όλων των κουμπιών σε μία δικιά σου function ώστε και να μην γράφεις τα ίδια πράγματα συνέχεια και αν χρειαστεί αλλαγή να την κάνεις μία φορά και τέλος.
bosei Δημοσ. 17 Απριλίου 2011 Μέλος Δημοσ. 17 Απριλίου 2011 Τα άλλαξα όσα ήταν αλλά και πάλι τίποτα.Πάλι οι 4 πρώτες συνθήκες δεν λειτουργούν. EDIT: Προσπαθώ πρώτα να φτιάξω το πρόγραμμα με απλό τρόπο και μετά να δω αν μπορώ να κάνω τον κώδικα πιό μικρό. Για τον συγκεκριμένο κώδικα μήπως ξέρεις γιατί δεν δουλεύουν τα πρώτα 4 ? Ευχαριστώ.
MitsakosGR Δημοσ. 17 Απριλίου 2011 Δημοσ. 17 Απριλίου 2011 Έτρεξα αυτό τον κώδικα >string[,] pinakas = new string[3, 3]; public Form1() { InitializeComponent(); } void Owins() { if (pinakas[0, 0] == "O" && pinakas[1, 1] == "O" && pinakas[2, 2] == "O") { MessageBox.Show(""); } else if (pinakas[0, 2] == "O" && pinakas[1, 1] == "O" && pinakas[2, 0] == "O") { MessageBox.Show(""); } else if (pinakas[0, 1] == "O" && pinakas[1, 1] == "O" && pinakas[2, 1] == "O") { MessageBox.Show(""); } else if (pinakas[1, 0] == "O" && pinakas[1, 1] == "O" && pinakas[1, 2] == "O") { MessageBox.Show(""); } else if (pinakas[0, 0] == "O" && pinakas[1, 0] == "O" && pinakas[2, 0] == "O") { MessageBox.Show(""); } else if (pinakas[2, 0] == "O" && pinakas[2, 1] == "O" && pinakas[2, 2] == "O") { MessageBox.Show(""); } else if (pinakas[0, 2] == "O" && pinakas[1, 2] == "O" && pinakas[2, 2] == "O") { MessageBox.Show(""); } else if (pinakas[0, 2] == "O" && pinakas[0, 1] == "O" && pinakas[0, 0] == "O") { MessageBox.Show(""); } } void Xwins() { if (pinakas[0, 0] == "X" && pinakas[1, 1] == "X" && pinakas[2, 2] == "X") { MessageBox.Show(""); } else if (pinakas[0, 2] == "X" && pinakas[1, 1] == "X" && pinakas[2, 0] == "X") { MessageBox.Show(""); } else if (pinakas[0, 1] == "X" && pinakas[1, 1] == "X" && pinakas[2, 1] == "X") { MessageBox.Show(""); } else if (pinakas[1, 0] == "X" && pinakas[1, 1] == "X" && pinakas[1, 2] == "X") { MessageBox.Show(""); } else if (pinakas[0, 0] == "X" && pinakas[1, 0] == "X" && pinakas[2, 0] == "X") { MessageBox.Show(""); } else if (pinakas[2, 0] == "X" && pinakas[2, 1] == "X" && pinakas[2, 2] == "X") { MessageBox.Show(""); } else if (pinakas[0, 2] == "X" && pinakas[1, 2] == "X" && pinakas[2, 2] == "X") { MessageBox.Show(""); } else if (pinakas[0, 2] == "X" && pinakas[0, 1] == "X" && pinakas[0, 0] == "X") { MessageBox.Show(""); } } private void Form1_Load(object sender, EventArgs e) { btnTurn.Text = "O"; } private void btn1_Click(object sender, EventArgs e) { if (btnTurn.Text == "O") { btnTurn.Text = "X"; btn1.Text = "O"; pinakas[0, 0] = "O"; } else { btnTurn.Text = "O"; btn1.Text = "X"; pinakas[0, 0] = "X"; } btn1.BackColor = Color.Red; Owins(); Xwins(); } private void btn2_Click(object sender, EventArgs e) { if (btnTurn.Text == "O") { btnTurn.Text = "X"; btn2.Text = "O"; pinakas[0, 1] = "O"; } else { btnTurn.Text = "O"; btn2.Text = "X"; pinakas[0, 1] = "X"; } btn2.BackColor = Color.Red; Owins(); Xwins(); } private void btn3_Click(object sender, EventArgs e) { if (btnTurn.Text == "O") { btnTurn.Text = "X"; btn3.Text = "O"; pinakas[0, 2] = "O"; } else { btnTurn.Text = "O"; btn3.Text = "X"; pinakas[0, 2] = "X"; } btn3.BackColor = Color.Red; Owins(); Xwins(); } private void btn4_Click(object sender, EventArgs e) { if (btnTurn.Text == "O") { btnTurn.Text = "X"; btn4.Text = "O"; pinakas[1, 0] = "O"; } else { btnTurn.Text = "O"; btn4.Text = "X"; pinakas[1, 0] = "X"; } btn4.BackColor = Color.Red; Owins(); Xwins(); } private void btn5_Click(object sender, EventArgs e) { if (btnTurn.Text == "O") { btnTurn.Text = "X"; btn5.Text = "O"; pinakas[1, 1] = "O"; } else { btnTurn.Text = "O"; btn5.Text = "X"; pinakas[1, 1] = "X"; } btn5.BackColor = Color.Red; Owins(); Xwins(); } private void btn6_Click(object sender, EventArgs e) { if (btnTurn.Text == "O") { btnTurn.Text = "X"; btn6.Text = "O"; pinakas[1, 2] = "O"; } else { btnTurn.Text = "O"; btn6.Text = "X"; pinakas[1, 2] = "X"; } btn6.BackColor = Color.Red; Owins(); Xwins(); } private void btn7_Click(object sender, EventArgs e) { if (btnTurn.Text == "O") { btnTurn.Text = "X"; btn7.Text = "O"; pinakas[2, 0] = "O"; } else { btnTurn.Text = "O"; btn7.Text = "X"; pinakas[2, 0] = "X"; } btn7.BackColor = Color.Red; Owins(); Xwins(); } private void btn8_Click(object sender, EventArgs e) { if (btnTurn.Text == "O") { btnTurn.Text = "X"; btn8.Text = "O"; pinakas[2, 1] = "O"; } else { btnTurn.Text = "O"; btn8.Text = "X"; pinakas[2, 1] = "X"; } btn8.BackColor = Color.Red; Owins(); Xwins(); } private void btn9_Click(object sender, EventArgs e) { if (btnTurn.Text == "O") { btnTurn.Text = "X"; btn9.Text = "O"; pinakas[2, 2] = "O"; } else { btnTurn.Text = "O"; btn9.Text = "X"; pinakas[2, 2] = "X"; } btn9.BackColor = Color.Red; Owins(); Xwins(); } και μου δουλεύει μια χαρά (αντιγραφή από το δικό σου είναι).
bosei Δημοσ. 17 Απριλίου 2011 Μέλος Δημοσ. 17 Απριλίου 2011 Δηλαδή παίζει κάτι άλλο εκτός του κώδικα... Τι μπορεί όμως? EDIT : Σου δούλεψαν όλοι οι πιθανοί συνδυασμοί και Χ και Ο έτσι?
bnvdarklord Δημοσ. 17 Απριλίου 2011 Δημοσ. 17 Απριλίου 2011 Παίζει σε μερικά ifs να εχεις βαλει 0 αντι για Ο ?(ή ελληνικό Ο)
MitsakosGR Δημοσ. 17 Απριλίου 2011 Δημοσ. 17 Απριλίου 2011 Έτσι όπως παρέθεσα τον κώδικα μου δούλεψε κανονικά. Δεν έκανα όλους τους δυνατούς συνδυασμούς αλλά όσο δοκίμαζα δούλευε κανονικά. Δοκίμασε να φτιάξεις ένα καινούργιο project και να βάλεις τον ίδιο κώδικα μήπως έχει φάει κανα-σκάλωμα τίποτα.
bnvdarklord Δημοσ. 17 Απριλίου 2011 Δημοσ. 17 Απριλίου 2011 Παιζει να εχει και καποιο σφάλμα και να σου τρέχει προηγούμενο exe, και να μην το παρατήρησες.
MitsakosGR Δημοσ. 17 Απριλίου 2011 Δημοσ. 17 Απριλίου 2011 Παιζει να εχει και καποιο σφάλμα και να σου τρέχει προηγούμενο exe, και να μην το παρατήρησες. Σε αυτή την περίπτωση, στο project σου πάτα Build->Clean και μετά το ξανατρέχεις.
bosei Δημοσ. 17 Απριλίου 2011 Μέλος Δημοσ. 17 Απριλίου 2011 Παίζει σε μερικά ifs να εχεις βαλει 0 αντι για Ο ?(ή ελληνικό Ο) Το έχω ελέγξει και δεν παίζει αυτό. Έτσι όπως παρέθεσα τον κώδικα μου δούλεψε κανονικά. Δεν έκανα όλους τους δυνατούς συνδυασμούς αλλά όσο δοκίμαζα δούλευε κανονικά. Δοκίμασε να φτιάξεις ένα καινούργιο project και να βάλεις τον ίδιο κώδικα μήπως έχει φάει κανα-σκάλωμα τίποτα. Τό έχω δοκιμάσει κι αυτό. Σε αυτή την περίπτωση, στο project σου πάτα Build->Clean και μετά το ξανατρέχεις. Αυτό πως το κάνω δεν βλέπω στο Visual Studio κάποια επιλογή build-->clean πέτα από το build solution.
bosei Δημοσ. 18 Απριλίου 2011 Μέλος Δημοσ. 18 Απριλίου 2011 Εμένα είναι έτσι . Τί έκδοση του VS έχεις ? Εγώ έχω την express edition.
MitsakosGR Δημοσ. 18 Απριλίου 2011 Δημοσ. 18 Απριλίου 2011 Δεν γράφω γκρινκλσ Κάνε Rebuild ή Tools\Customize Commands tab Menu bar -> Build Add Command (Build -> Clean Solution) Select the Clean Solution command Put the command where you want it
bosei Δημοσ. 18 Απριλίου 2011 Μέλος Δημοσ. 18 Απριλίου 2011 Πηγαίνω στο tools/customize Commands Tab Menu bar-->Δεν υπάρχει/Δεν το βρίσκω ... ... Θα δω τα υπόλοιπα post αύριο γιατί πάω για ύπνο τώρα. Ευχαριστώ για τις απαντήσεις.
Tmark Δημοσ. 18 Απριλίου 2011 Δημοσ. 18 Απριλίου 2011 Πάνω στο menu bar δίπλα στο project και στο debug υπάρχει η λίστα build, η οποία έχει και το clean solution
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.