Инди Игра с сюжетом, главный герой рыцарь который

Инди Игра с сюжетом, главный герой рыцарь который хочет спасти царство от монстров
Дополнительные параметры: codeFlowType: codeWrite codeFlowLang: C++
Создано: 13.03.2025 08:45

Инди Игра с сюжетом, главный герой рыцарь который хочет спасти царство от монстров

Ниже представлен пример простого кода на языке C++, который иллюстрирует концепцию инди-игры с сюжетом о рыцаре, стремящемся спасти царство от монстров. Этот код содержит базовые элементы, такие как классы для героя и монстра, а также основную логику игры.

#include <iostream>
#include <vector>
#include <string>

class Monster {
public:
    Monster(std::string name, int health, int attack)
        : name(name), health(health), attack(attack) {}

    void takeDamage(int damage) {
        health -= damage;
        if (health < 0) health = 0;
    }

    bool isAlive() const {
        return health > 0;
    }

    std::string getName() const {
        return name;
    }

    int getAttack() const {
        return attack;
    }

private:
    std::string name;
    int health;
    int attack;
};

class Knight {
public:
    Knight(std::string name, int health, int attack)
        : name(name), health(health), attack(attack) {}

    void takeDamage(int damage) {
        health -= damage;
        if (health < 0) health = 0;
    }

    void attackMonster(Monster& monster) {
        monster.takeDamage(attack);
    }

    bool isAlive() const {
        return health > 0;
    }

    void displayStatus() const {
        std::cout << name << " - Health: " << health << std::endl;
    }

private:
    std::string name;
    int health;
    int attack;
};

int main() {
    Knight hero("Sir Lancelot", 100, 20);
    std::vector<Monster> monsters = {
        Monster("Goblin", 30, 5),
        Monster("Troll", 50, 10),
        Monster("Dragon", 80, 15)
    };

    std::cout << "The kingdom is in danger! " << hero.getName() << " must defeat the monsters!" << std::endl;

    for (auto& monster : monsters) {
        std::cout << "A wild " << monster.getName() << " appears!" << std::endl;

        while (monster.isAlive() && hero.isAlive()) {
            hero.attackMonster(monster);
            std::cout << hero.getName() << " attacks " << monster.getName() << "!" << std::endl;
            monster.takeDamage(hero.getAttack());

            if (monster.isAlive()) {
                hero.takeDamage(monster.getAttack());
                std::cout << monster.getName() << " attacks " << hero.getName() << "!" << std::endl;
            } else {
                std::cout << monster.getName() << " has been defeated!" << std::endl;
            }

            hero.displayStatus();
        }

        if (!hero.isAlive()) {
            std::cout << hero.getName() << " has been defeated! Game Over." << std::endl;
            break;
        }
    }

    if (hero.isAlive()) {
        std::cout << hero.getName() << " has saved the kingdom!" << std::endl;
    }

    return 0;
}

Описание кода:

  • Определены два класса: Monster и Knight, представляющие монстров и рыцаря соответственно.
  • В каждом классе реализованы методы для атаки, получения урона и проверки состояния (жив ли персонаж).
  • В функции main создается экземпляр рыцаря и вектор монстров.
  • Игровой цикл проходит через каждого монстра, пока хоть один из них или рыцарь жив.
  • Программа выводит состояние боя и победителя.

Этот код является простым примером и может быть расширен для добавления графики, более сложного взаимодействия и других игровых механик.