Kurs C++: Pętle i Iteracje

W tej lekcji stworzymy prostą grę tekstową, w której gracz eksploruje loch, walczy z potworami i zdobywa skarby. Gra będzie wykorzystywać pętle (while, for) oraz instrukcje warunkowe (if, switch-case) do kontrolowania przebiegu rozgrywki.


1. Założenia gry

✅ Gracz ma punkty życia (HP) i złoto.
✅ Może walczyć z potworami, uciekać lub przeglądać ekwipunek.
✅ Jeśli HP spadnie do 0, gra się kończy.
✅ Gracz może znaleźć skarb, który zwiększa złoto.
✅ Gra działa w pętli, aż gracz zginie lub zdecyduje się wyjść.


2. Implementacja gry w C++

#include <iostream>
#include <cstdlib>  // rand(), srand()
#include <ctime>    // time()
using namespace std;

int main() {
    srand(time(0)); // Inicjalizacja generatora liczb losowych

    int hp = 100;  // Punkty życia gracza
    int gold = 0;  // Ilość złota
    char choice;   // Wybór gracza

    cout << "=== Przygoda w lochu ===\n";

    while (hp > 0) {
        cout << "\nTwoje statystyki: HP = " << hp << " | Złoto = " << gold << endl;
        cout << "Wybierz działanie:\n";
        cout << "1. Walcz z potworem\n";
        cout << "2. Szukaj skarbu\n";
        cout << "3. Uciekaj\n";
        cout << "4. Wyjdź z gry\n";
        cout << "Twój wybór: ";
        cin >> choice;

        switch (choice) {
            case '1': { // Walka z potworem
                int damage = rand() % 20 + 5; // Losowy atak potwora (5-25)
                int loot = rand() % 20 + 10;  // Losowa nagroda złota (10-30)
                cout << "Stajesz do walki z potworem!\n";
                cout << "Potwór zadaje ci " << damage << " obrażeń!\n";
                hp -= damage;
                if (hp > 0) {
                    cout << "Pokonałeś potwora i zdobywasz " << loot << " złota!\n";
                    gold += loot;
                } else {
                    cout << "Zostałeś pokonany! Koniec gry.\n";
                }
                break;
            }
            case '2': { // Szukanie skarbu
                int treasure = rand() % 50 + 10; // Losowa wartość skarbu (10-60)
                cout << "Przeszukujesz loch i znajdujesz " << treasure << " złota!\n";
                gold += treasure;
                break;
            }
            case '3': { // Ucieczka
                cout << "Uciekasz do bezpiecznego miejsca!\n";
                break;
            }
            case '4': { // Wyjście z gry
                cout << "Opuszczasz loch. Koniec gry.\n";
                return 0;
            }
            default:
                cout << "Niepoprawny wybór! Spróbuj ponownie.\n";
        }
    }

    cout << "Dziękujemy za grę!\n";
    return 0;
}

3. Jak działa gra?

🔹 Gracz podejmuje decyzje (walka, skarb, ucieczka, wyjście).
🔹 Pętla while (hp > 0) sprawia, że gra trwa do momentu śmierci gracza.
🔹 switch-case obsługuje wybory gracza.
🔹 Liczby losowe (rand()) dodają element nieprzewidywalności.


4. Możliwe ulepszenia

✅ Dodanie ekwipunku i ulepszeń broni.
✅ Możliwość leczenia w lochu.
✅ Więcej rodzajów przeciwników i wydarzeń.
✅ Zapis statystyk gracza po zakończeniu gry.