#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
int main() {
int maxHP = 100; // максимальное количество HP
int currentHP = maxHP; // текущее количество HP
int hpPerInterval = 10; // количество HP, восстанавливаемых за интервал
int intervalInSeconds = 600; // интервал в секундах (10 минут = 600 секунд)
while (true) {
auto startTime = chrono::steady_clock::now(); // запоминаем время начала интервала
// сюда вставь код для обработки событий и действий персонажа
auto endTime = chrono::steady_clock::now(); // запоминаем время окончания интервала
auto elapsedTime = chrono::duration_cast<chrono::seconds>(endTime - startTime).count(); // вычисляем прошедшее время в секундах
if (elapsedTime >= intervalInSeconds) { // если прошло достаточно времени
currentHP += hpPerInterval; // увеличиваем текущее количество HP
if (currentHP > maxHP) {
currentHP = maxHP; // ограничиваем текущее количество HP максимальным значением
}
// сюда вставь код для обновления интерфейса и отображения текущего количества HP
startTime = endTime; // обновляем время начала интервала
}
// сюда вставь код для обработки других событий и действий персонажа
this_thread::sleep_for(chrono::seconds(1)); // пауза 1 секунда между итерациями цикла
}
return 0;
}
В начале кода объявляем необходимые переменные: `maxHP` (максимальное количество HP), `currentHP` (текущее количество HP), `hpPerInterval` (количество HP, восстанавливаемых за интервал) и `intervalInSeconds` (интервал в секундах, через который происходит восстановление HP).
Затем входим в бесконечный цикл `while (true)`, который будет выполняться постоянно.
Затем мы входим в бесконечный цикл `while (true)`, который будет выполняться постоянно.
Внутри цикла у нас есть два блока кода, отмеченные комментариями "Ваш код для обработки событий и действий персонажа". В этих блоках Вы можете добавить свою логику для обработки действий персонажа, например, проверку на начало и окончание боя, взаимодействие с кузнецом и т.д.
Затем мы запоминаем время начала интервала с помощью `auto startTime = chrono::steady_clock::now();`.
После этого запоминаем время окончания интервала с помощью `auto endTime = chrono::steady_clock::now();`.
Потом вычисляем прошедшее время в секундах с помощью `auto elapsedTime = chrono::duration_cast(endTime - startTime).count();`.
После проверяем, прошло ли достаточно времени для восстановления HP с помощью условия `if (elapsedTime >= intervalInSeconds)`.
Если прошло достаточно времени, мы увеличиваем текущее количество HP на `hpPerInterval` и ограничиваем его максимальным значением `maxHP`.
После этого обновляем время начала интервала с помощью `startTime = endTime;`.
В конце каждой итерации цикла делаем паузу на 1 секунду с помощью `this_thread::sleep_for(chrono::seconds(1))`, чтобы не перегруж