Exemple #1
0
        public void Dodaj(Statek boat)
        {
            Sprawdz(boat);
            Statki_.Add(boat);

            foreach (Trafienie Point in boat.Points)
            {
                Pole_.Ustaw(Point.Lokalizacja, PunktyPola.Lodz);
            }
        }
        /// <summary>
        /// Metoda klonowania listy obiektów typu Statek.
        /// </summary>
        /// <param name="lista"></param>
        /// <returns>Zwraca nową Liste obiektów typu Statek</returns>
        public List <Statek> KopiowanieKolekcji(List <Statek> lista)
        {
            List <Statek> kopiaListy = new List <Statek>();

            for (int i = 0; i < lista.Count; i++)
            {
                Statek kopia = new Statek();
                kopia.rozmiar = lista[i].rozmiar;
                kopia.zycia   = new int[kopia.rozmiar];
                kopiaListy.Add(kopia);
            }
            return(kopiaListy);
        }
Exemple #3
0
        private void Sprawdz(Statek boat)
        {
            if (null == boat)
            {
                throw new ArgumentNullException("lodz");
            }

            if (Statki_.Count == 5)
            {
                throw new Exception("Pole nie moze zawierac wiecej niz 5 lodzi");
            }

            if (boat.Trafienia != boat.Points.Count)
            {
                throw new Exception(String.Format("Nie ustawiles odpowiedniej liczby punktow dla tej lodzi. Ta lodz wymaga {0} punktow.", boat.Trafienia));
            }

            if (boat.Points.Count != boat.Points.Distinct().Count())
            {
                throw new Exception(String.Format("Co najmniej jeden z ustalonych punktow jest taki sam dla {0}.", boat.Nazwa));
            }

            Boolean XAllSame = boat.Points.TrueForAll((point) => point.Lokalizacja.X.Equals(boat.Points[0].Lokalizacja.X));

            if (XAllSame)
            {
                return;
            }

            Boolean YAllSame = boat.Points.TrueForAll((point) => point.Lokalizacja.Y.Equals(boat.Points[0].Lokalizacja.Y));

            if (!YAllSame)
            {
                throw new Exception(String.Format("{0} nie moze byc przekatna", boat.Nazwa));
            }

            Statek OverlapBoat = Statki_.Find((aBoat) => aBoat.PointsOverlap(boat));

            if (OverlapBoat != null)
            {
                throw new Exception(String.Format("{0} pokrywa się z innym {1}.", boat.Nazwa, OverlapBoat.Nazwa));
            }
        }
Exemple #4
0
        static void Main(string[] args)
        {
            Gra gra = new Gra();

            gra.InfoStartowe();

            List <Statek> statkiGracza1 = new List <Statek>(); //Tworzenie statków jako obiektów i spakowanie ich do listy.
            Statek        statek        = new Statek(4);

            statkiGracza1.Add(statek);
            statek = new Statek(4);
            statkiGracza1.Add(statek);
            statek = new Statek(3);
            statkiGracza1.Add(statek);
            statek = new Statek(3);
            statkiGracza1.Add(statek);
            statek = new Statek(2);
            statkiGracza1.Add(statek);
            statek = new Statek(2);
            statkiGracza1.Add(statek);
            statek = new Statek(1);
            statkiGracza1.Add(statek);
            statek = new Statek(1);
            statkiGracza1.Add(statek);

            List <Statek> statkiGracza2 = statek.KopiowanieKolekcji(statkiGracza1); //Utworzenie listy i klonowanie obiektów

            PlanszaStatkow planszaGracz1 = new PlanszaStatkow();                    //Tworzenie indywidualnej planszy i rozstawienie statków dla każdego gracza.

            planszaGracz1.UstawStatki(ref statkiGracza1);

            PlanszaStatkow planszaGracz2 = new PlanszaStatkow();

            planszaGracz2.Wyswietl();
            planszaGracz2.UstawStatki(ref statkiGracza2);

            gra.Start(planszaGracz1, statkiGracza1, planszaGracz2, statkiGracza2);
        }
Exemple #5
0
 public Boolean PointsOverlap(Statek otherBoat)
 {
     return(this.Points.Any((point) => otherBoat.Points.Any((otherPoint) => otherPoint.Equals(point))));
 }