16.3: Funkcje do obsługi broni i mikstur

Cele lekcji

Po zakończeniu tej lekcji…

  • Nie nauczysz się niczego nowego. Dokończysz program, korzystając z wiedzy, którą już dysponujesz.

 

Stworzymy teraz funkcje, z których gracz będzie korzystał podczas walki z potworami.

Postać może wykonać dwie akcje (poza ucieczką z walki): użyć broni na potworze lub użyć mikstury leczniczej na sobie – jeśli ma ją w ekwipunku.

Poniżej znajduje się pseudokod obu funkcji:

Użycie funkcji broni

  • Pobierz aktualnie wybraną broń z formantu ComboBox cboWeapons
  • Określ obrażenia zadane potworowi przez gracza
  • Pomniejsz punkty CurrentHitPoints zgodnie z obrażeniami
    • Wyświetl komunikat
  • Jeśli potwór jest martwy (ma zero punktów wytrzymałości)
    • Wyświetl komunikat o zwycięstwie
    • Przydziel graczowi punkty doświadczenia za zabicie potwora
      • Wyświetl komunikat
    • Przydziel graczowi złoto za zabicie potwora
      • Wyświetl komunikat
    • Przydziel łupy za potwora
      • Wyświetl komunikat dla każdego łupu
      • Dodaj odpowiednie przedmioty do ekwipunku gracza
    • Odśwież dane gracza w interfejsie użytkownika
      • Złoto i punkty doświadczenia ExperiencePoints
      • Ekwipunek i formanty ComboBox
    • „Przenieś” gracza do bieżącej lokacji
      • Spowoduje to uzdrowienie gracza i stworzenie nowego potwora
  • Jeśli potwór nadal żyje
    • Określ obrażenia zadane potworowi
    • Wyświetl komunikat
    • Odejmij punkty obrażeń od aktualnych punktów obrażeń CurrentHitPoints
      • Odśwież dane gracza w interfejsie użytkownika
    • Jeśli gracz jest martwy (ma zero punktów wytrzymałości)
      • Wyświetl komunikat
      • „Przenieś” gracza do lokacji początkowej

 

Używanie funkcji eliksiru

  • Uzyskaj aktualnie wybrany eliksir z formantu cboPotions ComboBox
  • Zwiększ liczbę punktów wytrzymałości CurrentHitPoints gracza
    • Liczba punktów CurrentHitPoints nie może być większa od maksymalnej liczby punktów wytrzymałości MaximumHitPoints
  • Usuń miksturę z ekwipunku gracza
  • Wyświetl komunikat
  • Tura ataku potwora
    • Określ obrażenia zadane potworowi
    • Wyświetl komunikat
    • Odejmij punkty obrażeń od aktualnych punktów obrażeń CurrentHitPoints
      • Odśwież dane gracza w interfejsie użytkownika
    • Jeśli gracz jest martwy (ma zero punktów wytrzymałości)
      • Wyświetl komunikat
      • „Przenieś” gracza do lokacji początkowej
  • Odśwież dane gracza w interfejsie użytkownika

 

Są to znacznie prostsze funkcje niż funkcja MoveTo().

Będziemy mogli korzystać z niektórych mniejszych funkcji, które stworzyliśmy podczas refaktoryzacji, na przykład z funkcji AddItemToInventory() w klasie Player, jeśli gracz pokona potwora i otrzyma łupy.

 

Dodanie funkcji walk z potworami

 

Etap 1: Uruchom aplikację Visual Studio i otwórz swoje rozwiązanie.

 

Etap 2: Aby rozpocząć pracę z kodem interfejsu użytkownika, prawym przyciskiem myszy kliknij formularz SuperAdventure.cs w projekcie SuperAdventure.

Aby dodać możliwość używania broni i mikstur podczas walk, można dodać poniższy kod lub zastąpić kod SuperAdventure.cs, używając poniższego kodu: https://gist.github.com/ScottLilly/b20787650f2ab2a78362

 

Do funkcji btnUseWeapon_Click dodaj:

 

Następnie do funkcji btnUsePotion_Click dodaj:

 

W tych dwóch funkcjach nie pojawia się nic nowego. Dodawane są po prostu kolejne pętle if i foreach do obsługi działań gracza podczas walki.

 

Podsumowanie

Teraz gra już działa, a gracz może poruszać się po świecie, wykonywać zadania, walczyć z potworami, otrzymywać łupy i wykonywać zadania.

Te nowe funkcje można jeszcze refaktoryzować, ponieważ są długie i wykonują kilka czynności, ale to już zadanie dla Ciebie.

 

Łącza do tej lekcji

Kod źródłowy w serwisie GitHub

Kod źródłowy w serwisie Dropbox

Leave a Reply

Your email address will not be published. Required fields are marked *