C 语言简单打字游戏实现

  由于时候不早,还要准备最近的考试,所以就直接贴上带有注释的代码了,不再叙述!回头再做一个带有图形化界面的!

我的代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <string>

void tips()
{
    printf("=====================================\n");
    printf("=========== 打字小游戏 ==============\n");
    printf("=========== 任意键开始 ==============\n");
    printf("=========== Ecs 键退出 ==============\n");
    printf("=====================================\n");
    // 获取键盘输入
    char ch = _getch();
    // ecs 在 ASCII 表中对应 27
    if (ch == 27)
    {
        exit(0);
    }
}

void rand_ch(char * arr)
{
    // 加入随机数种子,确保每一次的值不一样
    srand((unsigned int)time(NULL));
    // 为字符串赋值
    for (int i = 0; i < 50; i++)
    {
        arr[i] = rand() % 26 + 'a';
    }
}

void print_ch(char *p)
{
    // 打印目标字符
    printf("%s\n", p);
    // 开始时间
    unsigned int start_time;
    // 结束时间
    unsigned int end_time;
    // 计数器
    int val = 0;
    for (int i = 0; i < 50; i++)
    {
        char ch = _getch();
        if (i == 0)
        {
            // 开始计时
            start_time = time(NULL);
        }
        // 如果输入对了,则计数器+1,并且打印该字符
        if (ch == p[i])
        {
            printf("%c", ch);
            val++;
        }
        // 如果输入错了,则打印 _    
        else
        {
            printf("_");
        }
    }
    end_time = time(NULL);
    printf("\n用时:%d(秒)\n", end_time - start_time);
    printf("正确率为:%.2f%%\n\n\n\n\n", val * 1.0 / 50 * 100);
}

int main()
{
    char ch[51];
    // 初始化字符为 0
    memset(ch, 0, 51);
    while (1)
    {
        tips();
        rand_ch(ch);
        print_ch(ch);
    }
    system("pause");
    return 0;
}
最后修改:2019 年 04 月 22 日 05 : 00 PM

发表评论