지금 문제가 입력받은 문자열이 화면에 랜덤하게 나타나게 하고

 그걸 마우스로 클릭하면 점점 속도가 빨라지고 클릭 못하면 화면이 문자열이 나타나는 속도가 느려지다

결국 멈추는 게임인데

지금 내 껀 마우스 클릭을 받아야만 다음 랜덤 화면이 출력되더라고 원래는 계속 화면에 문자열이 랜덤하게 출력되어야 하는데..

#include <stdio.h>

#include <windows.h>

#include <stdlib.h>

#include <time.h>


int H(char* ptr);


void gotoxy(int x, int y)   // 커서위치조정 gotoxy를 사용하기 위함

{

    COORD Cur={x,y};

    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Cur);

}


void main(void)

{

    /*UART 통신 부분*/

    HANDLE hSerial;

    int i = 0;

    int C=0;

    int Count = 0;


    const char good[10]="good";

    const char bad[10]="bad";

    unsigned long bytes_written;

    DCB dcbSerialParams = {0};

    COMMTIMEOUTS timeouts = {0};


    hSerial = CreateFile("COM2",GENERIC_READ | GENERIC_WRITE,

                       0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);


    if(hSerial==INVALID_HANDLE_VALUE) {

        if(GetLastError()==ERROR_FILE_NOT_FOUND) {

            printf("Serial port does not exist\n");

        }

        printf("\t ERROR : Failed to access to COM4 successfully \n");

    }


    dcbSerialParams.DCBlength=sizeof(dcbSerialParams);

    if(!GetCommState(hSerial, &dcbSerialParams)) {

        printf("\t ERROR : Failed to get Serial Parameters \n");

    }

    dcbSerialParams.BaudRate=CBR_57600;

    dcbSerialParams.ByteSize=8;

    dcbSerialParams.StopBits=ONESTOPBIT;

    dcbSerialParams.Parity=NOPARITY;


    timeouts.ReadIntervalTimeout=50;

    timeouts.ReadTotalTimeoutConstant=50;

    timeouts.ReadTotalTimeoutMultiplier=10;

    timeouts.WriteTotalTimeoutConstant=50;

    timeouts.WriteTotalTimeoutMultiplier=10;

    if(!SetCommTimeouts(hSerial, &timeouts)) { printf("\t ERROR : Time Out \n\n"); }

    srand(GetTickCount());


    char name[30];

    char *str = name;

    printf("학번과 이름을 입력하시오 : ");

    scanf("%s",name);

    /*학번 출력 및 판정후 결과 출력*/

    for(;;) {

        C=H(str);


        if(C==0) {   //H()에서 0이 리턴되었을시에 배열W출력

            WriteFile(hSerial, bad,4,&bytes_written,NULL);

        }


        else if(C==1) {   //H()에서 1이 리턴되었을시에 배열R출력

            WriteFile(hSerial, good,4,&bytes_written,NULL);

        }

        Count++;

        if(Count==30)

            break;

    }


    CloseHandle(hSerial);

}


int H(char* ptr)

{

    int c, d;

    POINT p;

    srand((unsigned int)time(NULL)); // 난수생성


    while(1) {

        system("cls");     //화면을 지웁니다


        gotoxy(p.x=rand()P,p.y=rand()%);    //랜덤한위치로 커서이동

        printf("%s",ptr);

        Sleep(1000);

        Mouselick(&c,&d);


            if((c >= p.x && c<=p.x+strlen(ptr)) && (d == p.y))

                return 1;

            else

                return 0;

    }

}


void Mouselick(int *x, int *y)

{

HANDLE hIn, hOut;

DWORD dwNOER;

INPUT_RECORD rec;

    COMMTIMEOUTS timeouts={0};

hIn=GetStdHandle(STD_INPUT_HANDLE);

hOut=GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleMode(hIn, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT);


while( 1 ){



ReadConsoleInput(hIn,&rec,1,&dwNOER);


if( rec.EventType == MOUSE_EVENT ){

if( rec.Event.MouseEvent.dwButtonState & FROM_LEFT_1ST_BUTTON_PRESSED ){

*x = rec.Event.MouseEvent.dwMousePosition.X;

*y = rec.Event.MouseEvent.dwMousePosition.Y;

   if(timeout(1)==1)

           {

               break;

           }

return ;

}

}

}

}



  int timeout (int seconds)

  {


        clock_t endwait;

         endwait = clock () + seconds* CLOCKS_PER_SEC;

         while(clock()<endwait) {}

         return 1;

  }