private void OtoczenieZatopionego(int i, ref PlanszaStatkow plansza, ref List <Statek> statki) { if (statki[i].Orientacja == 0) { for (int j = statki[i].X - 1; j <= statki[i].X + 1; j++) { for (int k = statki[i].Y - 1; k <= statki[i].Y + statki[i].Rozmiar; k++) { if (j > 0 && j < plansza.PolaX && k > 0 && k < plansza.PolaY) { if (plansza.PolaPlanszy[j, k] == ".") { plansza.PolaPlanszy[j, k] = "*"; } } } } } else { for (int j = statki[i].X - 1; j <= statki[i].X + statki[i].Rozmiar; j++) { for (int k = statki[i].Y - 1; k <= statki[i].Y + 1; k++) { if (j > 0 && j < plansza.PolaX && k > 0 && k < plansza.PolaY) { if (plansza.PolaPlanszy[j, k] == ".") { plansza.PolaPlanszy[j, k] = "*"; } } } } } }
public void Wyswietl(PlanszaStatkow przeciwnik) { Wyswietl(); Console.SetCursorPosition(10, 14); Console.WriteLine("Planasza Gracza"); przeciwnik.pozycjaKursoraX = 40; Console.SetCursorPosition(przeciwnik.pozycjaKursoraX, przeciwnik.pozycjaKursoraY); for (int i = 0; i < przeciwnik.PolaX; i++) { Console.SetCursorPosition(przeciwnik.pozycjaKursoraX, przeciwnik.pozycjaKursoraY + i); Console.Write("|"); for (int j = 0; j < przeciwnik.PolaY; j++) { if (przeciwnik.polaPlanszy[i, j] == "S") { Console.Write("."); Console.Write(" |"); } else if (i > 0 && j > 0) { if (przeciwnik.polaPlanszy[i, j] == "X") { Console.ForegroundColor = ConsoleColor.Red; Console.Write(przeciwnik.polaPlanszy[i, j]); Console.ForegroundColor = ConsoleColor.White; Console.Write(" |"); } else if (przeciwnik.polaPlanszy[i, j] == "*") { Console.ForegroundColor = ConsoleColor.Green; Console.Write(przeciwnik.polaPlanszy[i, j]); Console.ForegroundColor = ConsoleColor.White; Console.Write(" |"); } else { Console.Write(przeciwnik.polaPlanszy[i, j] + " |"); } } if (i == 0) { Console.Write(przeciwnik.polaPlanszy[i, j]); } else if (j == 0) { Console.Write(przeciwnik.polaPlanszy[i, j]); } } Console.WriteLine("\n"); } przeciwnik.pozycjaKursoraX = 2; Console.SetCursorPosition(47, 14); Console.WriteLine("Plansza przeciwnika"); }
protected int SprWygranej(PlanszaStatkow plansza) { for (int i = 0; i < plansza.PolaX; i++) { for (int j = 0; j < plansza.PolaY; j++) { if (plansza.PolaPlanszy[i, j] == "S") { return(0); } } } return(1); }
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); }
protected int Ostrzal(int x, int y, ref PlanszaStatkow plansza, ref List <Statek> statki) { if (plansza.PolaPlanszy[x, y] == "S") { plansza.PolaPlanszy[x, y] = "X"; for (int i = 0; i < statki.Count; i++) { statki[i].ZmniejszenieZycia(x, y); if (statki[i].CzyZatopiony()) { OtoczenieZatopionego(i, ref plansza, ref statki); } } return(1); } else { if (plansza.PolaPlanszy[x, y] == ".") { plansza.PolaPlanszy[x, y] = "*"; } return(0); } }
public void Start(PlanszaStatkow gracz1, List <Statek> statkiGracza1, PlanszaStatkow gracz2, List <Statek> statkiGracza2) { int ostrzalX, ostrzalY, warunekTrafienia; bool warunekWpisania = true; Console.Clear(); Console.SetCursorPosition(2, 0); Console.WriteLine("Rozpoczyna GRACZ1\n Nacisnij kalwisz"); Console.ReadKey(); do { warunekTrafienia = 1; for (int i = 0; warunekTrafienia == 1 && SprWygranej(gracz2) == 0; i++) { warunekWpisania = true; Console.Clear(); Console.SetCursorPosition(35, 0); Console.WriteLine("GRACZ1"); if (i == 0) { Console.WriteLine("Naciśnij klawisz"); Console.ReadKey(); } else { Console.WriteLine("TRAFIONY"); } gracz1.Wyswietl(gracz2); while (warunekWpisania) { Console.WriteLine("\nPodaj współrzędne do ostrzału: "); Console.WriteLine("Współrzędna y: "); Int32.TryParse(Console.ReadLine(), out ostrzalX); Console.WriteLine("Współrzędna x: "); Int32.TryParse(Console.ReadLine(), out ostrzalY); if (ostrzalX > 0 && ostrzalX < gracz1.PolaX && ostrzalY > 0 && ostrzalY < gracz1.PolaY) { warunekTrafienia = Ostrzal(ostrzalX, ostrzalY, ref gracz2, ref statkiGracza2); warunekWpisania = false; } } } warunekTrafienia = 1; for (int i = 0; warunekTrafienia == 1 && SprWygranej(gracz1) == 0 && SprWygranej(gracz2) == 0; i++) { warunekWpisania = true; Console.Clear(); Console.SetCursorPosition(35, 0); Console.WriteLine("GRACZ2"); if (i == 0) { Console.WriteLine("\nNaciśnij klawisz"); Console.ReadKey(); } else { Console.WriteLine("TRAFIONY"); } gracz2.Wyswietl(gracz1); while (warunekWpisania) { Console.WriteLine("\nPodaj współrzędne do ostrzału: "); Console.WriteLine("Współrzędna y: "); Int32.TryParse(Console.ReadLine(), out ostrzalX); Console.WriteLine("Współrzędna x: "); Int32.TryParse(Console.ReadLine(), out ostrzalY); if (ostrzalX > 0 && ostrzalX < gracz2.PolaX && ostrzalY > 0 && ostrzalY < gracz2.PolaY) { warunekTrafienia = Ostrzal(ostrzalX, ostrzalY, ref gracz1, ref statkiGracza1); warunekWpisania = false; } } } } while (SprWygranej(gracz1) == 0 && SprWygranej(gracz2) == 0); Console.Clear(); Console.WriteLine("KONIEC GRY"); if (SprWygranej(gracz1) == 1) { Console.WriteLine("Wygrał GRACZ2"); } if (SprWygranej(gracz2) == 1) { Console.WriteLine("Wygrał GRACZ1"); } Console.ReadKey(); }