Specjalny typ danych „enum”

W Godot, enum to specjalny typ danych, który pozwala na definiowanie nazwanych stałych wartości liczbowych. Dzięki niemu możesz przypisywać intuicyjne nazwy liczbom całkowitym, co ułatwia czytelność kodu oraz jego zarządzanie. Użycie enum w Godot jest podobne do jego odpowiedników w innych językach programowania, takich jak C# czy Java.

Definiowanie enum w Godot

enum w Godot można zdefiniować w sposób następujący:

enum WeaponType { SWORD, AXE, BOW }

var current_weapon = WeaponType.SWORD

W powyższym przykładzie zdefiniowaliśmy enum o nazwie WeaponType, w którym mamy trzy typy broni: SWORD, AXE oraz BOW. Te wartości są automatycznie przypisywane do liczb całkowitych, zaczynając od 0 (czyli SWORD ma wartość 0, AXE ma 1, a BOW ma 2).

Używanie wartości enum

Kiedy mamy zdefiniowany enum, możemy używać jego wartości jako zmiennych:

if current_weapon == WeaponType.SWORD:
    print("Postać używa miecza!")
elif current_weapon == WeaponType.AXE:
    print("Postać używa topora!")

To pozwala na łatwe porównywanie i sprawdzanie stanów obiektu na podstawie jego typu.

Dodatkowe zastosowania

Możemy przypisywać konkretne wartości do elementów enum, co daje większą kontrolę nad ich wartością:

enum StatusCode { OK = 200, NOT_FOUND = 404, INTERNAL_ERROR = 500 }

var current_status = StatusCode.OK

W tym przykładzie, OK ma wartość 200, NOT_FOUND ma 404, a INTERNAL_ERROR ma 500. Jest to szczególnie przydatne w przypadku kodów stanów lub zdefiniowanych kategorii, które mają specyficzne znaczenia.

Korzyści z używania enum:

  1. Poprawia czytelność kodu – zamiast korzystać z liczbowych wartości magicznych, możesz używać nazwanych stałych.
  2. Łatwiejsze zarządzanie stanami – szczególnie przydatne w przypadku złożonych logik, np. stanów graczy, typów broni czy elementów interfejsu.
  3. Bezpieczeństwo typów – korzystając z enum, zmniejszasz ryzyko przypisania nieprawidłowej wartości liczbowej.

Przykład zaawansowany:

enum GameState { MENU, PLAYING, PAUSED, GAME_OVER }

var current_state = GameState.MENU

func _process(delta):
    match current_state:
        GameState.MENU:
            print("W menu głównym")
        GameState.PLAYING:
            print("Gra w toku")
        GameState.PAUSED:
            print("Gra jest wstrzymana")
        GameState.GAME_OVER:
            print("Koniec gry")

W tym przykładzie enum jest używany do zarządzania stanem gry.


Komentarze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *