/// <summary> /// funkcja przeprowadzająca działania związane z tyknięciem zegara /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timerCounter_Tick(object sender, EventArgs e) { // warunek kończący rozgrywkę if (empire1.IsConquered() == true && empire2.IsConquered() == true && empire3.IsConquered() == true) { // zatrzymanie zegara timerCounter.Stop(); // wyświetlenie gratulacji na ekranie MessageBox.Show("Congratulations you won ! World belongs to you !"); // zamknięcie aplikacji Close(); } // zwiększenie godziny o 1 hour++; // aktualizacja godziny wyświetlanej na ekranie labelHour.Text = hour.ToString(); // aktualizacja zasobów wiosek w czasie myEmpire.UpdateResources(); empire1.UpdateResources(); empire2.UpdateResources(); empire3.UpdateResources(); // aktualizacja zasobów wiosek na ekranie LabelResourcesUpdate(); // aktualizacja stanu wojsk przeciwników co 24h: if (hour == 1) { if (empire1.IsConquered() == false) { empire1.RecruitAll(1, 1, 0); } if (empire2.IsConquered() == false) { empire2.RecruitAll(3, 0, 1); } if (empire3.IsConquered() == false) { empire3.RecruitAll(5, 10, 5); } // wyświetlenie na ekranie LabelsEmpiresUpdate(); } // aktualizacja liczby dni gdy miną 24 godziny if (hour == 24) { // wyzerowanie liczby godzin hour = 0; // zwiększenie dni o 1 day++; // aktualizacja wyświetlanych na ekranie danych dotyczących czasu labelHour.Text = hour.ToString(); labelDay.Text = day.ToString(); // Wydarzenia w trakcie rozgrywki // ataki : // ostrzeżenie przed atakiem if (day == 4 && empire1.IsConquered() == false) { labelHint.Text = empire1.GetName() + " is going to attack your village tomorrow !"; } // atak empire1 na gracza jeśli prędzej nie zostało podbite if (day == 5 && empire1.IsConquered() == false) { // walka if (Empire.FIGHT(empire1, myEmpire)) { // informacja o rezultacie walki MessageBox.Show(empire1.GetName() + " attacked your village, killed your warriors and stole your resources"); } else { // informacja o rezultacie walki MessageBox.Show(empire1.GetName() + " attacked your village but your warriors repulsed their attack"); } // aktualizacja stanu wojsk i zasobów LabelResourcesUpdate(); SetLabelsWarriorsStatus(); LabelArmyPowerUpdate(); LabelsEmpiresUpdate(); labelHint.Text = "Develop your empire to conquer other settlements and protect your own"; } // ostrzeżenie przed atakiem if (day == 9 && empire2.IsConquered() == false) { labelHint.Text = empire2.GetName() + " is going to attack your village tomorrow!"; } // atak empire2 na gracza jeśli prędzej nie zostało podbite if (day == 10 && empire2.IsConquered() == false) { // walka if (Empire.FIGHT(empire2, myEmpire)) { // informacja o rezultacie walki MessageBox.Show(empire2.GetName() + " attacked your village, killed your warriors and stole your resources"); } else { // informacja o rezultacie walki MessageBox.Show(empire2.GetName() + " attacked your village but your warriors repulsed their attack"); } // aktualizacja stanu wojsk i zasobów LabelResourcesUpdate(); SetLabelsWarriorsStatus(); LabelArmyPowerUpdate(); LabelsEmpiresUpdate(); labelHint.Text = "Develop your empire to conquer other settlements and protect your own"; } // ostrzeżenie przed atakiem if (day == 13 && empire3.IsConquered() == false) { labelHint.Text = empire3.GetName() + " is going to attack your village at day 15 !"; } // atak empire3 na gracza jeśli prędzej nie zostało podbite if (day == 15 && empire3.IsConquered() == false) { // walka if (Empire.FIGHT(empire3, myEmpire)) { // informacja o rezultacie walki MessageBox.Show(empire3.GetName() + " attacked your village, killed your warriors and stole your resources"); } else { // informacja o rezultacie walki MessageBox.Show(empire3.GetName() + " attacked your village but your warriors repulsed their attack"); } // aktualizacja stanu wojsk i zasobów LabelResourcesUpdate(); SetLabelsWarriorsStatus(); LabelArmyPowerUpdate(); LabelsEmpiresUpdate(); labelHint.Text = "Develop your empire to conquer other settlements and protect your own"; } // ostrzeżenie przed atakiem if (day == 18 && empire3.IsConquered() == false) { labelHint.Text = empire3.GetName() + " is going to attack your village at day 20 !"; } // informacja o zmianie zamiarów if (day == 19 && empire3.IsConquered() == true) { labelHint.Text = empire3.GetName() + " abandoned an idea to attack your village"; } // ponowny atak empire3 na gracza jeśli prędzej nie zostało podbite if (day == 20 && empire3.IsConquered() == false) { // walka if (Empire.FIGHT(empire3, myEmpire)) { // informacja o rezultacie walki MessageBox.Show(empire3.GetName() + " attacked your village, killed your warriors and stole your resources"); } else { // informacja o rezultacie walki MessageBox.Show(empire3.GetName() + " attacked your village but your warriors repulsed their attack"); } // aktualizacja stanu wojsk i zasobów LabelResourcesUpdate(); SetLabelsWarriorsStatus(); LabelArmyPowerUpdate(); LabelsEmpiresUpdate(); labelHint.Text = "Develop your empire to conquer other settlements and protect your own"; } } if (day == 20) { labelHint.Text = "Develop your empire to conquer other settlements and protect your own"; } myEmpire.UpdateResources(); // aktualizacja progressBar na ekranie ProgressBarsUpdate(); }
/// <summary> /// walka pomiędzy wioskami (Boolean aby wyświetlić MessageBox z wynikiem walk) /// </summary> /// <param name="attacker"></param> /// <param name="defender"></param> /// <returns></returns> public static Boolean FIGHT(Empire attacker, Empire defender) { // zwycięstwo atakujących if (attacker.GetOffensive() > defender.GetDefensive()) { // przejęcie zasobów attacker.SetGold(attacker.GetGold() + defender.GetGold()); attacker.SetIron(attacker.GetIron() + defender.GetIron()); attacker.SetWood(attacker.GetWood() + defender.GetWood()); attacker.SetRock(attacker.GetRock() + defender.GetRock()); attacker.SetClay(attacker.GetClay() + defender.GetClay()); // wyzerowanie zasobów defender.SetGold(0); defender.SetIron(0); defender.SetWood(0); defender.SetRock(0); defender.SetClay(0); // aktualizacja stanu wojsk wygranych attacker.SetKnights(attacker.GetKnights() - defender.GetKnights()); if (attacker.GetKnights() < 0) { attacker.SetKnights(0); } attacker.SetArchers(attacker.GetArchers() - defender.GetArchers()); if (attacker.GetArchers() < 0) { attacker.SetArchers(0); } attacker.SetCavalrymen(attacker.GetCavalrymen() - defender.GetCavalrymen()); if (attacker.GetCavalrymen() < 0) { attacker.SetCavalrymen(0); } // wyzerowanie wojsk przegranych defender.SetKnights(0); defender.SetArchers(0); defender.SetCavalrymen(0); return(true); } // zwycięstwo broniących else { // aktualizacja stanu wojsk wygranych defender.SetKnights(defender.GetKnights() - attacker.GetKnights()); if (defender.GetKnights() < 0) { defender.SetKnights(0); } defender.SetArchers(defender.GetArchers() - attacker.GetArchers()); if (defender.GetArchers() < 0) { defender.SetArchers(0); } defender.SetCavalrymen(defender.GetCavalrymen() - attacker.GetCavalrymen()); if (defender.GetCavalrymen() < 0) { defender.SetCavalrymen(0); } // wyzerowanie wojsk przegranych attacker.SetKnights(0); attacker.SetArchers(0); attacker.SetCavalrymen(0); return(false); } }