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); }
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)); } }
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); }
public Boolean PointsOverlap(Statek otherBoat) { return(this.Points.Any((point) => otherBoat.Points.Any((otherPoint) => otherPoint.Equals(point)))); }