Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для НеАдмин
4 / 3 / 1
Регистрация: 05.06.2020
Сообщений: 85

Реализация таймера для нескольких участников игры

14.06.2020, 14:02. Показов 2561. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот мини игра:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <ctime>
using namespace std;
 
int my_point = 100;
int virus_point = 100;
int attack;
int armor;
 
void my_attack();
void my_protection();
 
int main()
{
    srand(time(0));
    do{
        my_attack();
        my_protection();
    }while(my_point > 0 && virus_point > 0);
    if(my_point > virus_point){
    cout << "You win!!!";
}else{
    cout << "Virus win!!!";
}
}
 
void my_attack(){
    cout << "Enter position attack (1-30): ";
    do{
        cin >> attack;    
    }while(attack < 1 || attack > 30);
    armor = 1 + rand()%30;
    cout << "Virus protected: " << armor << endl;
    virus_point = virus_point - (abs(attack - armor));
    cout << "Virus point " << virus_point << endl;
}
 
void my_protection(){
    cout << "Enter position protected (1-30): ";
    do{
        cin >> armor;    
    }while(armor < 1 || armor > 30);
    attack = 1 + rand()%30;
    cout << "Virus attack: " << attack << endl;
    my_point = my_point - (abs(attack - armor));
    cout << "My point " << my_point << endl;
}
и надо зделать таймер для хода вируса и для моего хода.
Таймер:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <ctime>
#include <thread>
#ifdef _WIN32
    #include <Windows.h>
    #pragma comment (lib, "Winmm.lib")
#endif // _WIN64
 
int main()
{
    uint64_t hours = 0;
    std::cout << "Enter hours: ";
    std::cin >> hours;
    std::cin.ignore();
 
    uint64_t minutes = 0;
    std::cout << "Enter minutes: ";
    std::cin >> minutes;
    std::cin.ignore();
 
    uint64_t seconds = 0;
    std::cout << "Enter seconds: ";
    std::cin >> seconds;
    std::cin.ignore();
    
    int64_t target = hours * 3600 + minutes * 60 + seconds;
    int64_t current = time(0);
 
    while (target > 0)
    {
        int64_t delta = time(0) - current;
        current = time(0);
        target -= delta;
 
        system("cls");
        int64_t hours = target / 3600;
        std::cout << "Hours: " << target / 3600 << " Minutes: " << (target - (hours * 3600)) / 60 << " Seconds: " << target % 60 << std::endl;
        std::this_thread::sleep_for(std::chrono::milliseconds(500));
    }
#ifdef _WIN32
 
    MessageBox(NULL, L"TIME IS OUT!", L"TIME OUT!", 0);
    PlaySound(TEXT("SystemStart"), NULL, SND_ALIAS);
#endif // _WIN64
 
    system("cls");
 
}
Таймер будет установлен на 20 сек. И таймер нужно будет показивать сколько кому осталось до окончания хода. Если время хода вируса или моего закончилось. Дать ход вирусу или мне.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.06.2020, 14:02
Ответы с готовыми решениями:

Реализация таймера для программы тетрис
Здравствуйте. Возникла необходимость написать таймер обратного отсчета для реализации движения фигуры в тетрисе с определенным интервалом...

Реализация DAO для нескольких сущностей
Доброго времени суток! Вопрос быть может банальный, но... Имеется некоторый абстрактный сайт на котором каждый юзер может создавать свои...

Реализация карты для игры pacman
Всем доброго времени суток! Пишу курсач - игру pacman. Думаю как запилить карты...Есть идея записать массив в txt и считать оттуда и...

1
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
14.06.2020, 15:13
Лучший ответ Сообщение было отмечено НеАдмин как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
class Timer {
    
public:
    template<typename func>
    void setTimeout(func function, int delay)
    {
        this->clear = false;
        std::thread t([=]() {
            if (this->clear) return;
            std::this_thread::sleep_for(std::chrono::milliseconds(delay));
            if (this->clear) return;
            function();
        });
        t.detach();
    }
 
    template<typename func>
    void setInterval(func function, int interval)
    {
        this->clear = false;
        std::thread t([=]() {
            while (true) {
                if (this->clear) return;
                std::this_thread::sleep_for(std::chrono::milliseconds(interval));
                if (this->clear) return;
                function();
            }
        });
        t.detach();
    }
 
    void stop()
    {
        clear = true;
    }
private:
    bool clear = false;
};
 
void printDelay()
{
    std::cout << "\nHello, world\n";
}
 
int main()
{
    Timer test;
    std::cout << "Starting function with delay, please wait: ";
    test.setTimeout(&printDelay, 100);
    std::this_thread::sleep_for(std::chrono::milliseconds(150)); // тут мы типо думаем/ждём ввода
    std::cout << "\nNow, function with interval: ";
    test.setInterval(&printDelay, 100);
    std::this_thread::sleep_for(std::chrono::milliseconds(1525));
    test.stop();
    std::cout << "\nEnd of test\n";
    system("pause");
 
}
вот вам реализация setTimeout и setInterval (с примером использования)
вам нужен setTimeout и функция на случай истечения времени (можно не функцию а лямбду пропихнуть)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.06.2020, 15:13
Помогаю со студенческими работами здесь

Реализация ТОП-списка для игры
Это сложно обьяснить. &gt;&lt; Вообщем,необходима возможность добавлять в файл данные(имя и количество очко(читается с label)),но добавить эту...

Реализация реляционной связи между коллекциями участников и их баллов
Здравствуйте! Делаю базу данных для проведения соревнований. Всего может проходить 3 круга (1/4 финал, 1/2 финал, финал), это...

Воспроизведение нескольких звуков для игры
Как реализовать воспроизведение звуков, при нажатие кнопки, выйгрышной комбинации и т.д. Точнее, как это сделать знаю, вопрос через что это...

Использование нескольких потоков для игры
Пишу игру на C++. Мне нужно использовать два объекта: игрока и противника. Противник должен двигаться медленнее, то есть должен двигаться с...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru