这个打字游戏的代码哪里错了,输入一个字母就弹出去了

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<time.h>
#define MAX 51
#pragma warning (disable:4996);
void help()
{
    printf("\n*********************");
    printf("\n输入过程中无法退出,输入错误则以_表示");
    printf("\n按任意键开始测试,按下首字母时开始计算时间");
    printf("\n***********************");
}
void my_start(char*str)
{
    srand((unsigned int)time(NULL));//产生随机数种子
    for (int i = 0; i < MAX - 1; i++)
    {
         str[i]= rand() % 26 + 'a';//rand()%(n-m+1)+m表示产生m,n的随机数
    }
    *(str + MAX - 1) = 0;
}
void my_game(char*str)
{
    char ch;
    int count = 0;
    time_t t_start;//产生起始时间
    time_t t_end;//产生结束时间
    system("cls");//清屏
    printf("\n");
    printf("str=%s\n,str");
    count = 0;
    for (int i = 0; i < MAX - 1; i++)
    {
        ch = _getch;
        if (i == 0)
        {
            t_start = time(NULL);//取开始时间
        }
        if (ch == *(str + i))
        {
            printf("ch=%c\n,ch");
            count++;
        }
        else
        {
            printf("_");//打印错误标志
        }

    }

    t_end = time(NULL);//产生结束时间
    printf("完成输入用时%d\n", t_end - t_start);
    printf("正确率为lf\n", count*1.0 / (MAX - 1) * 100);
    printf("按下ESC退出,按任意键继");
}    

int main()
{
    char str[MAX] = { 0 };
    char esc;
    while (1)
    {
        help();//游戏说明菜单
        my_start(str);//产生随机字母
        char ch = _getch();//请输入任意键
        my_game(str);//开始游戏
        if (ch == 27);
        {
            break;
        }
        system("cls");//清屏
    }
    return 0;
}

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。