Προς το περιεχόμενο

Πρόβλημα σε C# και τρίλιζα


bosei

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω αρχίσει να φτιάχνω μια τρίλιζα και έχω γράψει και τον απλό κώδικα για το ποιός νικάει (Χ ή Ο)

 

Έφτιαξα τον πίνακα :

>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 πρώτες συνθήκες ενώ στον ίδιο κώδικα με τα Χ δουλεύουν όλα.

 

Ξέρετε τι μπορεί να φταίει.

Δημοσ.

Βγάλε τα μονά "&" και βάλε διπλά "&&". Το μονό είναι για bitwise operations. Εσύ θέλεις να ισχύουν οι συνθήκες.

 

Edit:

Και μερικές συμβουλές:

Μην κοιτάς ποιανού σειρά είναι με βάση το Text ενός κουμπιού. Καλύτερα φτιάξε μία global μεταβλητή που θα έχεις ποιανού σειρά είναι και μία function changeTurn() η οποία αλλάζει και την global και το Text του κουμπιού.

Αντί να αντιγράφεις τον ίδιο κώδικα σε κάθε κουμπί μπορείς να αλλάξεις το handler όλων των κουμπιών σε μία δικιά σου function ώστε και να μην γράφεις τα ίδια πράγματα συνέχεια και αν χρειαστεί αλλαγή να την κάνεις μία φορά και τέλος.

Δημοσ.

Τα άλλαξα όσα ήταν αλλά και πάλι τίποτα.Πάλι οι 4 πρώτες συνθήκες δεν λειτουργούν.

 

EDIT: Προσπαθώ πρώτα να φτιάξω το πρόγραμμα με απλό τρόπο και μετά να δω αν μπορώ να κάνω τον κώδικα πιό μικρό.

 

Για τον συγκεκριμένο κώδικα μήπως ξέρεις γιατί δεν δουλεύουν τα πρώτα 4 ?

 

Ευχαριστώ.

Δημοσ.

Έτρεξα αυτό τον κώδικα

 

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

 

και μου δουλεύει μια χαρά (αντιγραφή από το δικό σου είναι).

Δημοσ.

Δηλαδή παίζει κάτι άλλο εκτός του κώδικα...

 

Τι μπορεί όμως?

 

EDIT : Σου δούλεψαν όλοι οι πιθανοί συνδυασμοί και Χ και Ο έτσι?

Δημοσ.

Έτσι όπως παρέθεσα τον κώδικα μου δούλεψε κανονικά. Δεν έκανα όλους τους δυνατούς συνδυασμούς αλλά όσο δοκίμαζα δούλευε κανονικά.

Δοκίμασε να φτιάξεις ένα καινούργιο project και να βάλεις τον ίδιο κώδικα μήπως έχει φάει κανα-σκάλωμα τίποτα.

Δημοσ.

Παιζει να εχει και καποιο σφάλμα και να σου τρέχει προηγούμενο exe, και να μην το παρατήρησες.

 

Σε αυτή την περίπτωση, στο project σου πάτα Build->Clean και μετά το ξανατρέχεις.

Δημοσ.

Παίζει σε μερικά ifs να εχεις βαλει 0 αντι για Ο ?(ή ελληνικό Ο)

 

Το έχω ελέγξει και δεν παίζει αυτό.

 

Έτσι όπως παρέθεσα τον κώδικα μου δούλεψε κανονικά. Δεν έκανα όλους τους δυνατούς συνδυασμούς αλλά όσο δοκίμαζα δούλευε κανονικά.

Δοκίμασε να φτιάξεις ένα καινούργιο project και να βάλεις τον ίδιο κώδικα μήπως έχει φάει κανα-σκάλωμα τίποτα.

 

Τό έχω δοκιμάσει κι αυτό.

 

Σε αυτή την περίπτωση, στο project σου πάτα Build->Clean και μετά το ξανατρέχεις.

 

Αυτό πως το κάνω δεν βλέπω στο Visual Studio κάποια επιλογή build-->clean πέτα από το build solution.

Δημοσ.

Δεν γράφω γκρινκλσ

Κάνε 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

Δημοσ.

Πηγαίνω στο tools/customize

Commands Tab

Menu bar-->Δεν υπάρχει/Δεν το βρίσκω

...

...

 

Θα δω τα υπόλοιπα post αύριο γιατί πάω για ύπνο τώρα.

 

Ευχαριστώ για τις απαντήσεις.

Δημοσ.

Πάνω στο menu bar δίπλα στο project και στο debug υπάρχει η λίστα build, η οποία έχει και το clean solution

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...