예제 #1
0
        static void Main(string[] args)
        {
            Plansza gracz          = new Plansza();
            Plansza komputer       = new Plansza();
            Plansza ukrytaGracz    = new Plansza();
            Plansza ukrytaKomputer = new Plansza();

            gracz.Wyswietl();

            Flota gracza    = new Flota();
            Flota komputera = new Flota();

            //logika komputer
            List <Pole> potencjalneStrzalyKomputera = new List <Pole>();


            while (true)
            {
                Console.WriteLine("\nWybierz:\n" +
                                  $"1. Ustaw statki, pozostało: Jednomasztowiec * {4 - gracza.UstawioneJ}, Dwumasztowiec * {3 - gracza.UstawioneD}, Trzymasztowiec * {2 - gracza.UstawioneT}, Czteromasztowiec *{1 - gracza.UstawioneC}\n" +
                                  "2. Rozstaw statki automatycznie\n" +
                                  "3. Wyswietl Swoją Planszę\n" +
                                  "4. Rozpocznij grę\n" +
                                  "0. Wyjscie\n"
                                  );

                int wybor;
                while (!int.TryParse(Console.ReadLine(), out wybor))
                {
                    Console.WriteLine("\nPodałeś zły znak! wpisz jeszcze raz!");
                    Console.WriteLine("\nWybierz:\n" +
                                      $"1. Ustaw statki, pozostało: Jednomasztowiec * {4 - gracza.UstawioneJ}, Dwumasztowiec * {3 - gracza.UstawioneD}, Trzymasztowiec * {2 - gracza.UstawioneT}, Czteromasztowiec *{1 - gracza.UstawioneC}\n" +
                                      "2. Rozstaw statki automatycznie\n" +
                                      "3. Wyswietl Swoją Planszę\n" +
                                      "4. Rozpocznij grę\n" +
                                      "0. Wyjscie\n"
                                      );
                }

                switch (wybor)
                {
                case 1:
                    int[] pole = PodajWspolrzednePol();

                    if (PoliczOdlegloscMiedzyPolami(pole) == 4)
                    {
                        if (gracza.UstawioneC < 1)
                        {
                            try
                            {
                                gracza.czteromasztowiec[gracza.UstawioneC] = new Czteromasztowiec();
                                gracza.czteromasztowiec[gracza.UstawioneC].UstawStatek(gracz.Plan[pole[0], pole[1]], gracz.Plan[pole[2], pole[3]], gracz);
                                gracza.UstawioneC++;
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine("Cos poszlo nietak " + e);
                            }
                        }
                        else
                        {
                            Console.WriteLine("Ustawiłeś już maksymalną liczbę tego rodzaju statku");
                        }
                    }
                    if (PoliczOdlegloscMiedzyPolami(pole) == 3)
                    {
                        if (gracza.UstawioneT < 2)
                        {
                            try
                            {
                                gracza.trzymasztowiec[gracza.UstawioneT] = new Trzymasztowiec();
                                gracza.trzymasztowiec[gracza.UstawioneT].UstawStatek(gracz.Plan[pole[0], pole[1]], gracz.Plan[pole[2], pole[3]], gracz);
                                gracza.UstawioneT++;
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine("Cos poszlo nietak " + e);
                            }
                        }
                        else
                        {
                            Console.WriteLine("Ustawiłeś już maksymalną liczbę tego rodzaju statku");
                        }
                    }
                    if (PoliczOdlegloscMiedzyPolami(pole) == 2)
                    {
                        if (gracza.UstawioneD < 3)
                        {
                            try
                            {
                                gracza.dwumasztowiec[gracza.UstawioneD] = new Dwumasztowiec();
                                gracza.dwumasztowiec[gracza.UstawioneD].UstawStatek(gracz.Plan[pole[0], pole[1]], gracz.Plan[pole[2], pole[3]], gracz);
                                gracza.UstawioneD++;
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine("Cos poszlo nietak " + e);
                            }
                        }
                        else
                        {
                            Console.WriteLine("Ustawiłeś już maksymalną liczbę tego rodzaju statku");
                        }
                    }
                    if (PoliczOdlegloscMiedzyPolami(pole) == 1)
                    {
                        if (gracza.UstawioneJ < 4)
                        {
                            try
                            {
                                gracza.jednomasztowiec[gracza.UstawioneJ] = new Jednomasztowiec();
                                gracza.jednomasztowiec[gracza.UstawioneJ].UstawStatek(gracz.Plan[pole[0], pole[1]], gracz.Plan[pole[2], pole[3]], gracz);
                                gracza.UstawioneJ++;
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine("Cos poszlo nietak " + e);
                            }
                        }
                        else
                        {
                            Console.WriteLine("Ustawiłeś już maksymalną liczbę tego rodzaju statku");
                        }
                    }
                    if (PoliczOdlegloscMiedzyPolami(pole) <= 0)
                    {
                        Console.WriteLine("Statek nie jest w Pionie lub Poziomie!");
                    }
                    gracz.Wyswietl();
                    break;

                case 2:
                    UstawStatkiAutomatycznie(gracz, gracza);
                    gracz.Wyswietl();
                    break;

                case 3:
                    gracz.Wyswietl();
                    break;

                case 4:
                    if (10 - gracza.UstawioneJ - gracza.UstawioneD - gracza.UstawioneT - gracza.UstawioneC == 0)     // jeśli rozstawiłeś już statki
                    {
                        UstawStatkiAutomatycznie(komputer, komputera);

                        while (true)
                        {
                            Console.WriteLine("\nWybierz:\n" +
                                              $"1. Strzelaj\n" +
                                              "2. Statystyka\n" +
                                              "3. Wyswietl Swoją Planszę\n" +
                                              "4. Wyswietl Plansze Cel\n" +
                                              "0. Wyjscie\n"
                                              );

                            int wybor2;
                            while (!int.TryParse(Console.ReadLine(), out wybor2))
                            {
                                Console.WriteLine("\nPodałeś zły znak! wpisz jeszcze raz!");
                                Console.WriteLine("\nWybierz:\n" +
                                                  $"1. Strzelaj\n" +
                                                  "2. Statystyka\n" +
                                                  "3. Wyswietl Swoją Planszę\n" +
                                                  "4. Wyswietl Plansze Cel\n" +
                                                  "0. Wyjscie\n"
                                                  );
                            }



                            switch (wybor2)
                            {
                            case 1:
                                int s = 3;         // sprawdza czystrzał się udał
                                s = Strzelaj(komputer, ukrytaGracz, PodajWspolrzedneJednegoPola("do strzału"));
                                if (komputera.Zatopienia == 10)
                                {
                                    Console.WriteLine("!!!!!WYGRAŁEŚ!!!!!");
                                    Console.WriteLine(gracza.Statystyka("Gracz "));
                                    Console.WriteLine(komputera.Statystyka("Komputer "));
                                    Console.ReadKey();
                                    return;
                                }

                                if (s != 3)
                                {
                                    Console.WriteLine("Strzał Komputera");
                                    potencjalneStrzalyKomputera = KomputerStrzela(gracz, ukrytaKomputer, potencjalneStrzalyKomputera);
                                    if (gracza.Zatopienia == 10)
                                    {
                                        Console.WriteLine("!!!!! =((((( PRZEGRAŁEŚ =((((( !!!!!");
                                        Console.WriteLine(gracza.Statystyka("Gracz "));
                                        Console.WriteLine(komputera.Statystyka("Komputer "));
                                        Console.ReadKey();
                                        return;
                                    }
                                }
                                break;

                            case 2:
                                Console.WriteLine(gracza.Statystyka("Gracz "));
                                Console.WriteLine(komputera.Statystyka("Komputer "));
                                break;

                            case 3:
                                gracz.Wyswietl();
                                break;

                            case 4:
                                ukrytaGracz.Wyswietl();
                                break;

                            case 0:
                                return;

                            default:
                                Console.WriteLine("Nie ma takiej opcji w Menu");
                                break;
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("Nie rozstawiłeś wszystkich statków");
                    }

                    break;

                case 0:
                    return;

                default:
                    Console.WriteLine("Nie ma takiej opcji w Menu");
                    break;
                }
            }
        }