'How to get the value of chrono c++?

I am trying to make a text game where there is a timer and once the game was finished before or in 60 seconds, there is a bonus points. However, I have no idea how can I get the value or the time from using the chrono without cout-ing it. I want to use the value for calculating the bonus point. i can cout the value through the .count() but I cannot get that value to use for the condition part. here's my code for the scoring part:

void Game::score(auto start, auto end) {
    int bonus = 0;
    int total = 0;
    string name;
    
    box();
    gotoxy(10,8); cout << "C  O  N  G  R  A  T  U  L  A  T  I  O  N  S";
    gotoxy(15,10); cout << "You have successfully accomplished all the levels!";
    gotoxy(15,11); cout << "You are now a certified C-O-N-N-E-C-T-o-r-I-s-T" << char(002) << char(001);
    gotoxy(20,13); cout << "= = = = = = = = = = GAME STATS = = = = = = = = = =";
    gotoxy(25,15); cout << "Time Taken: " << chrono::duration_cast<chrono::seconds>(end - start).count() << " seconds";
    gotoxy(25,16); cout << "Points: " << pts << " points";
        if (chrono::duration_cast<chrono::seconds>(end - start).count() <= 60) {
            bonus == 5000;
        } else if (chrono::duration_cast<chrono::seconds>(end - start).count() <= 90) {
            bonus == 3000;
        } else if (chrono::duration_cast<chrono::seconds>(end - start).count() <= 120) {
            bonus == 1000;
        } 
    gotoxy(30,17); cout << "Bonus Points (Time Elapsed): " << bonus;
    total = pts + bonus;
    gotoxy(25,18); cout << "Total Points: " << total << " points";
    gotoxy(20,20); cout << "Enter your name: ";
    cin >> name;
    
    scoreB.open("scoreboard.txt",ios::app);
    scoreB << name << "\t" << total << "\n";
    scoreB.close();
    
}


Solution 1:[1]

You should really use the chrono literals for comparing durations. See example here:

#include <chrono>
#include <iostream>
#include <thread>

using Clock = std::chrono::system_clock;

void compareTimes(std::chrono::time_point<Clock> startTime,
                  std::chrono::time_point<Clock> finishTime) {

    using namespace std::chrono_literals;

    std::chrono::duration<float> elapsed = finishTime - startTime;

    std::cout << "elapsed = " << elapsed.count() << "\n";

    if (elapsed > 10ms) {
        std::cout << "over 10ms\n";
    }

    if (elapsed < 60s) {
        std::cout << "under 60s\n";
    }
}

int main() {
    using namespace std::chrono_literals;

    auto startTime = Clock::now();
    std::this_thread::sleep_for(20ms);
    auto finishTime = Clock::now();
    compareTimes(startTime, finishTime);
    return 0;
}

Demo: https://godbolt.org/z/hqv58acoY

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Den-Jason