Пример #1
0
        static int Strzelaj(Plansza planszaCel, Plansza planszaUkryta, int[] wspolrzednePola) // 0 pudło. 1 Trafiony, 2 Zatopiony, 3 już strzelono w to miejsce
        {
            if ((wspolrzednePola[0] < 0 || wspolrzednePola[0] > 9) && (wspolrzednePola[1] < 0 || wspolrzednePola[1] > 9))
            {
                Console.WriteLine("Strzał poza Planszę");
                return(3);
            }

            if (planszaUkryta.SprawdzPole(wspolrzednePola[0], wspolrzednePola[1]) == '~')  // jeśli nie strzelano jeszcze w to miejsce
            {
                if (planszaCel.SprawdzPole(wspolrzednePola[0], wspolrzednePola[1]) == '~') // pudło
                {
                    planszaCel.Plan[wspolrzednePola[0], wspolrzednePola[1]].Status    = 'o';
                    planszaUkryta.Plan[wspolrzednePola[0], wspolrzednePola[1]].Status = 'o';
                    Console.WriteLine($"Pudło! X: {wspolrzednePola[0]}, Y: {wspolrzednePola[1]}");
                    return(0);
                }
                else // trafienie
                {
                    planszaCel.Plan[wspolrzednePola[0], wspolrzednePola[1]].Status         = 'x';
                    planszaUkryta.Plan[wspolrzednePola[0], wspolrzednePola[1]].Status      = 'x';
                    planszaCel.Plan[wspolrzednePola[0], wspolrzednePola[1]].Czesc.Trafiony = true;
                    Console.WriteLine($"Trafiony! X: {wspolrzednePola[0]}, Y: {wspolrzednePola[1]}");
                    if (planszaCel.Plan[wspolrzednePola[0], wspolrzednePola[1]].Czesc.Statek.Zatopiony)
                    {
                        Console.WriteLine($"Zatopiony!!!  X: {wspolrzednePola[0]}, Y: {wspolrzednePola[1]}");
                        foreach (var czesc in planszaCel.Plan[wspolrzednePola[0], wspolrzednePola[1]].Czesc.Statek.Czesc)
                        {
                            planszaCel.ZmienStatusSasiednichPol(czesc.Pole.X, czesc.Pole.Y);
                            planszaUkryta.ZmienStatusSasiednichPol(czesc.Pole.X, czesc.Pole.Y);
                        }
                        return(2);
                    }

                    return(1);
                }
            }
            else
            {
                Console.WriteLine("Oddałeś już strzał w to pole lub zestrzeliłeś statek na sąsiednim polu. spróbuj jeszcze raz!");
                return(3);
            }
        }
Пример #2
0
        public bool CzyMoznaUmiescic(Pole pocz, Pole kon, Plansza plan)
        {
            int dlugosc = 0;

            //czy poczatek i koniec na planszy
            if (pocz.X < 10 && pocz.X >= 0 &&
                pocz.Y < 10 && pocz.Y >= 0 &&
                kon.X < 10 && kon.X >= 0 &&
                kon.Y < 10 && kon.Y >= 0)
            {
                //czy w pionie
                if (pocz.X - kon.X == 0)
                {
                    dlugosc = Math.Abs(pocz.Y - kon.Y) + 1;
                    if (pocz.Y - kon.Y < 0)
                    {
                        Kierunek = 's';
                    }
                    else
                    {
                        Kierunek = 'n';
                    }
                }
                //czy w poziomie
                else if (pocz.Y - kon.Y == 0)
                {
                    dlugosc = Math.Abs(pocz.X - kon.X) + 1;
                    if (pocz.X - kon.X < 0)
                    {
                        Kierunek = 'e';
                    }
                    else
                    {
                        Kierunek = 'w';
                    }
                }
                else if (pocz.Y - kon.Y != 0 && pocz.X - kon.X != 0)
                {
                    throw new Exception("Statek nie jest w Pionie lub Poziomie! Lub jest poza Planszą");
                }

                if (dlugosc == Maszty)
                {
                    if (Kierunek == 'n')
                    {
                        for (int i = 0; i < Maszty; i++)
                        {
                            if (plan.SprawdzPole(pocz.X, pocz.Y - i) != '~' || plan.SprawdzSasiedniePola(pocz.X, pocz.Y - i) != true)
                            {
                                throw new Exception("Statek na tych bądź sąsiednich polach już został ustawiony!");
                            }
                        }
                        return(true);
                    }

                    if (Kierunek == 's')
                    {
                        for (int i = 0; i < Maszty; i++)
                        {
                            if (plan.SprawdzPole(pocz.X, pocz.Y + i) != '~' || plan.SprawdzSasiedniePola(pocz.X, pocz.Y + i) != true)
                            {
                                throw new Exception("Statek na tych bądź sąsiednich polach już został ustawiony!");
                            }
                        }
                        return(true);
                    }

                    if (Kierunek == 'e')
                    {
                        for (int i = 0; i < Maszty; i++)
                        {
                            if (plan.SprawdzPole(pocz.X + i, pocz.Y) != '~' || plan.SprawdzSasiedniePola(pocz.X + i, pocz.Y) != true)
                            {
                                throw new Exception("Statek na tych bądź sąsiednich polach już został ustawiony!");
                            }
                        }
                        return(true);
                    }

                    if (Kierunek == 'w')
                    {
                        for (int i = 0; i < Maszty; i++)
                        {
                            if (plan.SprawdzPole(pocz.X - i, pocz.Y) != '~' || plan.SprawdzSasiedniePola(pocz.X - i, pocz.Y) != true)
                            {
                                throw new Exception("Statek na tych bądź sąsiednich polach już został ustawiony!");
                            }
                        }
                        return(true);
                    }
                }
                else
                {
                    throw new Exception("Statek niewymiarowy!");
                }
            }
            else
            {
                throw new Exception("Wyszedłeś poza Plansze");
            }
            return(false);
        }