在ANSI C中,我该如何制作计时器



我正在为一个项目而在C中陷入困境。如果您不熟悉Boggle,那没关系。长话短说,每轮都有时间限制。我正在使时间限制1分钟。

我有一个循环显示游戏板并要求用户输入一个单词,然后调用一个函数,该函数检查是否接受该单词,然后再次循环。

    while (board == 1)
{
    if (board == 1)
    {
        printf(display gameboard here);
        printf("Points: %d                  Time left: n", player1[Counter1].score);
        printf("Enter word: ");
        scanf("%15s", wordGuess);
        pts = checkWord(board, wordGuess);

需要更改while (board == 1),以使其仅循环1分钟。

我希望用户只能执行1分钟。我也想在剩下的时间放置时间:在printf语句中显示。我将如何实现?我已经在网上看到了一些使用C中的计时器在线的示例,而我认为这是可能的唯一方法是,如果我让用户超越了时间限制,但是当用户试图超越时间限制时,它将通知他们时间已经到了。还有其他方法吗?

编辑:我正在Windows 10 PC上进行编码。

使用标准c time()以自Epoch(1970-01-01-01 00:00 0000 UTC(以来获取秒数(现实世界时间(,并计数difftime()两个time_t值之间的秒数。

在游戏中的秒数中,使用常数:

#define  MAX_SECONDS  60

然后,

char    word[100];
time_t  started;
double  seconds;
int     conversions;
started = time(NULL);
while (1) {
    seconds = difftime(time(NULL), started);
    if (seconds >= MAX_SECONDS)
        break;
    /* Print the game board */
    printf("You have about %.0f seconds left. Word:", MAX_SECONDS - seconds);
    fflush(stdout);
    /* Scan one token, at most 99 characters long. */
    conversions = scanf("%99s", word);
    if (conversions == EOF)
        break;    /* End of input or read error. */
    if (conversions < 1)
        continue; /* No word scanned. */
    /* Check elapsed time */
    seconds = difftime(time(NULL), started);
    if (seconds >= MAX_SECONDS) {
        printf("Too late!n");
        break;
    }
    /* Process the word */
}

相关内容

  • 没有找到相关文章

最新更新