コード例 #1
0
 public void UstawStatek(Pole pocz, Pole kon, Plansza plan)
 {
     if (CzyMoznaUmiescic(pocz, kon, plan))
     {
         for (int i = 0; i < Maszty; i++)
         {
             if (Kierunek == 'n')
             {
                 plan.ZmienStatusPola(pocz.X, pocz.Y - i, Rodzaj);
                 Czesc[i].Pole = plan.Plan[pocz.X, pocz.Y - i];  //przypisanie pola do cz statku
                 plan.Plan[pocz.X, pocz.Y - i].Czesc = Czesc[i]; //przypisanie cz statku do pola
             }
             if (Kierunek == 's')
             {
                 plan.ZmienStatusPola(pocz.X, pocz.Y + i, Rodzaj);
                 Czesc[i].Pole = plan.Plan[pocz.X, pocz.Y + i];  //przypisanie pola do cz statku
                 plan.Plan[pocz.X, pocz.Y + i].Czesc = Czesc[i]; //przypisanie cz statku do pola
             }
             if (Kierunek == 'e')
             {
                 plan.ZmienStatusPola(pocz.X + i, pocz.Y, Rodzaj);
                 Czesc[i].Pole = plan.Plan[pocz.X + i, pocz.Y];  //przypisanie pola do cz statku
                 plan.Plan[pocz.X + i, pocz.Y].Czesc = Czesc[i]; //przypisanie cz statku do pola
             }
             if (Kierunek == 'w')
             {
                 plan.ZmienStatusPola(pocz.X - i, pocz.Y, Rodzaj);
                 Czesc[i].Pole = plan.Plan[pocz.X - i, pocz.Y];  //przypisanie pola do cz statku
                 plan.Plan[pocz.X - i, pocz.Y].Czesc = Czesc[i]; //przypisanie cz statku do pola
             }
         }
     }
     else
     {
         throw new Exception("Nie można umieścić statku!");
     }
 }
コード例 #2
0
ファイル: Plansza.cs プロジェクト: amilius/Statki
 public char SprawdzPole(Pole pole)
 {
     return(pole.Status);
 }
コード例 #3
0
 public CzescStatku(int x, int y, char rodzaj, Plansza poleNaPlanszy)
 {
     Pole     = poleNaPlanszy.Plan[x, y];
     Rodzaj   = rodzaj;
     Trafiony = false;
 }
コード例 #4
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);
        }