Cele lekcji
Po zakończeniu tej lekcji…
- Dowiesz się, jak określać właściwości klasy.
- Nauczysz się wybierać poprawny „typ danych” dla każdej właściwości.
- Będziesz potrafić tworzyć klasy.
- Poznasz dwa sposoby na przechowywanie wartości właściwości.
Czym są właściwości?
Właściwości klasy lub obiektu to informacje, które mogą się różnić w przypadku każdego obiektu lub ulegać zmianie podczas działania programu.
W grze RPG mogą to być zasoby złota, liczba punktów doświadczenia, przedmiotów w plecaku itd. Te wartości obiektu trzeba gdzieś przechowywać i modyfikować je.
Czym są typy danych?
Typ danych to programistyczne określenie „rodzaju informacji przechowywanych we właściwości lub zmiennej”.
Na początek skupimy się tylko na dwóch rodzajach typów danych: liczbach całkowitych i ciągach.
Liczba całkowita to pełna liczba, bez żadnej części ułamkowej. Takich liczb będziemy używać do określania punktów doświadczenia, złota i poziomu gracza.
Ciąg może składać się z liter, znaków specjalnych (np. @#$%^&*) lub liczb traktowanych jako litery.
W klasie Player nie potrzebujemy żadnego ciągu, ale przydadzą się one w innych klasach. Jeśli chcesz zapisać liczbę w zmiennej lub właściwości ciągu, należy ją ująć w cudzysłów (czyli wpisujemy “1”, a nie 1), lub przekształcić z postaci liczby do łańcucha (później się dowiesz, jak to zrobić).
Po określeniu typu danych właściwości czy zmiennej można w nich przechowywać tylko ten wybrany typ danych. Więc jeśli dla właściwości ExperiencePoints wybierzesz typ danych liczba całkowita, to nie zapiszesz w niej żadnego ciągu.
UWAGA: Dodawanie ciągów zawierających liczby działa inaczej niż dodawanie typów danych liczbowych.
Przykładowo: jeśli dodasz do siebie liczby całkowite 1 i 2, otrzymasz wynik 3; ale jeśli dodasz ciągi „1” i „2”, otrzymasz wynik „12”. Ta operacja nazywa się „łączeniem ciągów”.
Właściwości klasy Player
Nasza klasa Player będzie bardzo prosta, więc określimy w niej tylko:
- bieżącą liczbę punktów wytrzymałości (żebyśmy wiedzieli, od jakiej wartości je odejmować, po utracie punktów podczas walki),
- maksymalną liczbę punktów wytrzymałości (gdy gracz jest w pełni sił),
- ilość złota,
- ilość punktów doświadczenia,
- poziom gracza,
- typem wszystkich tych danych będą liczby całkowite, ponieważ wartości te zawsze będą wyrażone w liczbach całkowitych.
W kolejnych lekcjach dodamy przedmioty i zadania gracza.
Etap 1: Uruchom aplikację Visual Studio i otwórz swoje rozwiązanie.
Etap 2: W przeglądarce Solution Explorer prawym przyciskiem myszy kliknij projekt Engine. Kliknij polecenie Add i wybierz pozycję Class. Zmień nazwę klasy z Class1.cs na Player.cs (upewnij się, że na końcu nazwy pozostawiasz tylko jedno rozszerzenie .cs). Kliknij przycisk Dodaj.
Teraz zmodyfikuj klasę Player.
Etap 3: W wierszu 9 zmień tekst na public class Player. Tę zmianę omówimy za chwilę.
Etap 4: Przejdź na koniec wiersza 10 (na prawo od znaku {) i naciśnij klawisz Enter, aby zrobić miejsce na dodanie właściwości.
Etap 5: W kolejnych wierszach wpisz:
public int CurrentHitPoints { get; set; }
public int MaximumHitPoints { get; set; }
public int Gold { get; set; }
public int ExperiencePoints { get; set; }
public int Level { get; set; }
Zauważ, że między słowami current, hit i points nie stawiamy spacji (podobnie jak w słowach MaximumHitPoints ExperiencePoints). Spacje nie mogą występować w nazwach właściwości ani zmiennych, dlatego też początek nowych słów oznaczamy wielkimi literami. Nie jest wymagane w języku C#, ale w taki właśnie sposób wielu programistów zapisuje nazwy właściwości. Taki format zapisu jest nazywany PascalCase.
UWAGA: W języku C# rozróżnienie między małymi i wielkimi literami jest bardzo ważne. Zmienna lub właściwość o nazwie test to inna zmienna ub właściwość niż Test.
Co właśnie zrobiliśmy?
Wpisaliśmy kod, ale co on w sumie robi?
Zacznijmy od elementu public. Ten element jest zakresem, czyli określa, które inne składniki rozwiązania mają dostęp do klasy lub właściwości. Modyfikator public (publiczny) oznacza, że ten element jest dostępny w całym rozwiązaniu, czyli projekt interfejsu użytkownika będzie mieć możliwość tworzenia obiektu Player oraz odczytywania wartości jego właściwości.
Inne opcje zakresów omówimy w kolejnych lekcjach.
Co się wydarzyło w wierszach 11-15?
Tutaj mamy właściwości klasy Player. Są one określone jako public, ponieważ dostęp do nich jest potrzebny w kilku innych miejscach w programie. Wyrażenie int określa, że typem danych jest liczba całkowita. Następnie pojawia się nazwa właściwości. A po każdej właściwości występują oznaczenia { get; set; }. Określają one, że korzystamy z właściwości, w której można pobrać (get) wartość, która jest przechowywana we właściwości, oraz ustawić (set) wartość przechowywaną we właściwości. Niedługo się przekonamy, jak one działają.
Co się pojawia w wierszach 1-5?
Tutaj mamy informacje, którymi się nie będziemy zajmować podczas tej lekcji. Warto tylko wiedzieć, że są one wstawiane zawsze podczas tworzenia nowej klasy w aplikacji Visual Studio, jednak teraz się nimi nie przejmujemy.
Podsumowanie
Utworzyliśmy klasę Player. Gdy program zbuduje (utworzy wystąpienie) obiekt Player, można będzie odczytywać właściwości tego obiektu i zmieniać ich wartości.
Łącza do tej lekcji