codeFlowType:
codeWrite
codeFlowLang:
C++
Инди Игра с сюжетом, главный герой рыцарь который хочет спасти царство от монстров
Ниже представлен пример простого кода на языке 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
создается экземпляр рыцаря и вектор монстров.Этот код является простым примером и может быть расширен для добавления графики, более сложного взаимодействия и других игровых механик.