Klasy i Obiekty w C# na przykładzie gry RPG [Krok po kroku]

Klasy i Obiekty w C# na przykładzie gry RPG

Czujesz, że „klasa” to coś więcej niż szkolna sala, ale nie do końca wiesz jak ją wykorzystać w kodzie? 😄 Dobrze trafiłeś! W tym wpisie nauczysz się, czym są klasy i obiekty w C#, tworząc prostą grę RPG. Zero teorii z encyklopedii, 100% praktyki: bohaterowie, ich atrybuty, walka i bezpieczeństwo danych. Gotowy? Miecz w dłoń i… kodujemy! 💻⚔️

📌 Spis treści

Dlaczego klasy są potrzebne w C#

Bez klas kod szybko zmienia się w spaghetti.

// ❌ Zły sposób - bez klas
string imie = "Aragorn";
int hp = 100;
int sila = 25;

Dodaj drugiego, trzeciego bohater… i nagle masz bałagan. A co z poziomem, many, ekwipunkiem?

Rozwiązanie? Klasy. Czyli kontenery na dane i logikę – jak pudełko LEGO, w którym wszystko ma swoje miejsce.

Tworzymy naszą pierwszą klasę

Klasa to szablon – jak foremka do ciastek 🍪. Definiuje, jakie cechy będzie miał nasz bohater.

// Bohater.cspublic class Bohater
{
    public string imie;
    public int punktyZycia;
    public int sila;
}

Tylko szablon? Tak! Aby działała, potrzebujemy obiektu – czyli konkretnej instancji tej klasy. Jak forma na ciastka – sama forma to nie ciastko. Musimy stworzyć konkretnych bohaterów – czyli obiekty.

Instancje: tworzenie obiektów

Tworzymy bohatera. Obiekt to konkretna instancja klasy – jak upieczone ciastko z naszej formy.

Bohater aragorn = new Bohater();
aragorn.imie = "Aragorn";
aragorn.punktyZycia = 100;
aragorn.sila = 25;

I wyświetlamy:

Console.WriteLine($"{aragorn.imie} - HP: {aragorn.punktyZycia}, Siła: {aragorn.sila}");

Świetnie! Ale prawdziwa moc klas pokazuje się, gdy tworzymy wiele obiektów. Dodajemy drużynę:

Bohater[] druzyna = {
    new Bohater { imie = "Legolas", punktyZycia = 80, sila = 30 },
    new Bohater { imie = "Gimli", punktyZycia = 120, sila = 35 },
    aragorn
};

Każdy obiekt to osobna jednostka – zmiana w jednym nie wpływa na resztę. Każdy obiekt jest niezależny.


Konstruktory – przyspieszamy start

Ręczne przypisywanie właściwości jest męczące. Rozwiązanie? Konstruktor:

public Bohater(string imie, int punktyZycia, int sila)
{
    this.imie = imie;
    this.punktyZycia = punktyZycia;
    this.sila = sila;
}

Teraz tworzenie bohaterów jest dużo prostsze! Tworzenie obiektów:

Bohater legolas = new Bohater("Legolas", 80, 30);
Bohater gimli = new Bohater("Gimli", 120, 35);

Szybko, prosto, z klasą 😉


Hermetyzacja – jak chronić dane

Publiczne pola? Zło. Ktoś może zrobić głupie rzeczy z naszymi bohaterami!

aragorn.punktyZycia = -999;  // ❌ Nonsens!

Czas na hermetyzację – dane prywatne, dostęp kontrolowany. Hermetyzacja to ukrywanie wewnętrznych szczegółów klasy.

private int punktyZycia;

public void SetPunktyZycia(int noweHP)
{
    punktyZycia = Math.Max(noweHP, 0);  // minimum 0
}

Właściwości – nowoczesne Get/Set

C# pozwala na elegancję:

public int PunktyZycia
{
    get => punktyZycia;
    set
    {
        if (value < 0)
        {
            punktyZycia = 0;
            Console.WriteLine($"{Imie}: HP ustawione na 0");
        }
        else
        {
            punktyZycia = value;
        }
    }
}

Użycie:

gimli.PunktyZycia = -50;  // Wynik: HP ustawione na 0

Sztos, co nie? 👌


Podsumowanie i zadanie dla Ciebie

✅ Dziś nauczyłeś się:

  • Czym są klasy i obiekty
  • Jak tworzyć konstruktor
  • Jak chronić dane (hermetyzacja)
  • Jak korzystać z właściwości

🧠 Zadanie:

Stwórz nowego bohatera, np. „Boromir”, z własnymi statystykami i dodaj go do drużyny. Dodaj walidację punktów many lub doświadczenia.

Zostaw komentarz z kodem swojego bohatera!

Dodaj komentarz

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