Kółko i krzyżyk. Problem z wyjściem z do...while

0

Witam.
Robię sobie edukacyjnie grę w kółko i krzyżyk w c#. Mam problem z wyjściem z do...while. Warunki niby są dobrze napisane, ponieważ gdy podstawie sobie wartości przed kompilacją to z niej prawidłowo wchodzi. Ktoś mi wytknie gdzie popełniam błąd bo już nie mam pomysłu ? Pozdrawiam

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp15
{
   class Program
   {
       static void Main(string[] args)



       {
           string pierwsza = "1";
           string druga = "2";
           string trzecia = "3";
           string czwarta = "4";
           string piata = "5";
           string szosta = "6";
           string siodma = "7";
           string osma = "8";
           string dziewiata = "9";
           int wybor;
           int wybor2;

           Console.WriteLine("|{0}  |  {1}  |  {2}|", pierwsza, druga, trzecia);
           Console.WriteLine("|-------------|");
           Console.WriteLine("|{0}  |  {1}  |  {2}|", czwarta, piata, szosta);
           Console.WriteLine("|-------------|");
           Console.WriteLine("|{0}  |  {1}  |  {2}|", siodma, osma, dziewiata);

           bool mozliwosc1 = (pierwsza == druga) && (druga == trzecia);//false
           bool mozliwosc2 = (czwarta == piata) && (piata == szosta);
           bool mozliwosc3 = (siodma == osma) && (osma == dziewiata);
           bool mozliwosc4 = (pierwsza == czwarta) && (czwarta == siodma);
           bool mozliwosc5 = (druga == piata) && (piata == osma);
           bool mozliwosc6 = (trzecia == szosta) && (szosta == dziewiata);
           bool mozliwosc7 = (pierwsza == piata) && (piata == dziewiata);
           bool mozliwosc8 = (trzecia == piata) && (piata == siodma);



           bool wynik = (!mozliwosc1) && (!mozliwosc2) && (!mozliwosc3) && (!mozliwosc4) && (!mozliwosc5) && (!mozliwosc6) && (!mozliwosc7) && (!mozliwosc8);//true
           do
           {
               Console.WriteLine(mozliwosc1);
               Console.WriteLine(wynik);
               string pozycja = Console.ReadLine();
               if (int.TryParse(pozycja, out wybor))
               {
                   switch (wybor)
                   {
                       case 1:
                           {
                               pierwsza = "O";
                               break;
                           }
                       case 2:
                           {
                               druga = "O";
                               break;
                           }
                       case 3:
                           {
                               trzecia = "O";
                               break;
                           }
                       case 4:
                           {
                               czwarta = "O";
                               break;
                           }
                       case 5:
                           {
                               piata = "O";
                               break;
                           }
                       case 6:
                           {
                               szosta = "O";
                               break;
                           }
                       case 7:
                           {
                               siodma = "O";
                               break;
                           }
                       case 8:
                           {
                               osma = "O";
                               break;
                           }
                       case 9:
                           {
                               dziewiata = "O";
                               break;
                           }
                       default:
                           Console.WriteLine("Podaj liczbe z przedzialu 1-9");
                           break;

                   }

                   Console.WriteLine("|{0}  |  {1}  |  {2}|", pierwsza, druga, trzecia);
                   Console.WriteLine("|-------------|");
                   Console.WriteLine("|{0}  |  {1}  |  {2}|", czwarta, piata, szosta);
                   Console.WriteLine("|-------------|");
                   Console.WriteLine("|{0}  |  {1}  |  {2}|", siodma, osma, dziewiata);
                   

               }
               string pozycja2 = Console.ReadLine();
               if (int.TryParse(pozycja2, out wybor2))
               {
                   switch (wybor2)
                   {
                       case 1:
                           {
                               pierwsza = "X";
                               break;
                           }
                       case 2:
                           {
                               druga = "X";
                               break;
                           }
                       case 3:
                           {
                               trzecia = "X";
                               break;
                           }
                       case 4:
                           {
                               czwarta = "X";
                               break;
                           }
                       case 5:
                           {
                               piata = "X";
                               break;
                           }
                       case 6:
                           {
                               szosta = "X";
                               break;
                           }
                       case 7:
                           {
                               siodma = "X";
                               break;
                           }
                       case 8:
                           {
                               osma = "X";
                               break;
                           }
                       case 9:
                           {
                               dziewiata = "X";
                               break;
                           }
                       default:
                           Console.WriteLine("Podaj liczbe z przedzialu 1-9");
                           break;

                   }
                   Console.WriteLine("|{0}  |  {1}  |  {2}|", pierwsza, druga, trzecia);
                   Console.WriteLine("|-------------|");
                   Console.WriteLine("|{0}  |  {1}  |  {2}|", czwarta, piata, szosta);
                   Console.WriteLine("|-------------|");
                   Console.WriteLine("|{0}  |  {1}  |  {2}|", siodma, osma, dziewiata);
                   
               }
               else
               {
                   Console.WriteLine("Podano niewlasciwa wartosc");

               }



           }
           while (wynik);

           Console.WriteLine("wychodze");

           Console.ReadKey();
       }
   }
}
0

Wg mnie trochę źle się do tego zabierasz, ponieważ rozpisujesz ręcznie każdy przypadek. Co jeśli teraz będziesz chciał rozpisać grę np. na planszy 12 na 12 pól?

Zrób sobie tablicę dwuwymiarową i sprawdzaj czy aby nie wyskoczyła pełna linijka.

0

No właśnie jestem w trakcie pisania programu od początku z tablicą. Ale jednak ciekawość czemu poprzedni program nie działa pozostała :)

2

Zapisałeś sobie w definicji wynik komentarz, że jest prawdziwy, w pętli go nie modyfikujesz, więc jest nieskończona.

0

Wooow nie wpadłbym na to. Już działa. Dziękuje bardzo :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1