public void ZakonczGre_TuraGracza_ZwyciezcaToGracz() { //Przygotowanie L_KontrolerGry kontroler = new L_KontrolerGry(); kontroler.NowaGra(); //Działanie kontroler.ZakonczGre(); //Sprawdzenie Assert.IsTrue(kontroler.ObecnaGra.zwyciezca == "Gracz"); }
public void ZakonczGre_TuraKomputera_ZwyciezcaToKomputer() { //Przygotowanie L_KontrolerGry kontroler = new L_KontrolerGry(); kontroler.NowaGra(); //Zmiana tury na turę komputera kontroler.ZmienTure(); //Działanie kontroler.ZakonczGre(); //Sprawdzenie Assert.IsTrue(kontroler.ObecnaGra.zwyciezca == "Komputer"); }
/// <summary> /// Funkcja obsługująca kliknięcie przycisku i zaznaczająca trafienie na planszy logicznej. /// </summary> /// <param name="button">Trafiony przycisk</param> public async void KliknieciePrzycisku(Button button) { //Jeśli gra jest skończona, zablokuj klikanie if (_kontroler.GraSkonczona) { return; } int i = Grid.GetRow(button); int j = Grid.GetColumn(button); Grid buttonParent = (Grid)button.Parent; L_Pole[,] polaPlanszy; L_PlanszaBitwy plansza; //Tura gracza if (_kontroler.CzyTuraGracza) { if (buttonParent == xPlanszaGracza) { return; } else { plansza = lPlanszaKomputera; } } //Tura komputera else { if (buttonParent == xPlanszaKomputera) { return; } else { plansza = lPlanszaGracza; } } polaPlanszy = plansza.Pola; bool trafionoStatek = false; bool zatopionoStatek = false; L_Pole pole = polaPlanszy[i, j]; //Jeżeli pole już zostało trafione, nic się nie dzieje if (pole.Trafione) { return; } //Oznaczenie pola w zależności od tego czy jest zajęte, czy nie if (pole.Zajete) { button.Background = G_PlanszaBitwy.KolorZHex("#AA0000", 0.9); pole.Trafione = true; trafionoStatek = true; //Sprawdzenie stanu statku po trafieniu L_Statek statek = plansza.Statki[pole.IDStatku]; statek.SprawdzStan(); if (statek.Zatopiony) { zatopionoStatek = true; } } else { button.Background = G_PlanszaBitwy.KolorZHex("#AAAAAA", 0.9); pole.Trafione = true; } //Kontroler sprawdza stan gry po trafieniu pola _kontroler.SprawdzRuch(trafionoStatek); ZmienKomunikat(trafionoStatek, zatopionoStatek); //Zakończenie gry if (_kontroler.GraSkonczona) { _kontroler.ZakonczGre(); _komunikat.Text = $"Grę wygrał {_kontroler.ObecnaGra.zwyciezca} w {_kontroler.LicznikTur} turach!"; } //Komputer wykonuje ruch, jeśli właśnie kończy się tura gracza else if (!_kontroler.CzyTuraGracza) { await Task.Delay(1000); _komputer.WykonajRuch(); } //Jeżeli gra nie jest skończona, zmień aktywną planszę if (!_kontroler.GraSkonczona) { ZmienAktywnaPlansze(_kontroler.CzyTuraGracza); _pierwszyRuch = false; } }