1~50 숫자 맞추기 게임하는데
딱 시작하면 시간초가 증가하기 시작하면서 게임 끝내면 그 걸린시간 구하려고하는데 (실시간으로 올라가는 시간초가 보여야함)
이러기 위해서는 스레드를 써야될꺼같아서
#include <thread>
하고
void user_Timer(int s_time)
{
if (timer_start)
{
start_time = GetTickCount()-s_time;
timer_start = false;
}
else{
end_time = GetTickCount() - start_time;
move(20, 25);
cout << end_time;
}
}
이렇게 타이머 만든다음에
int temp1 = GetTickCount();
thread t1(&user_Timer, temp1);
while (1)
{
key = _getch();
switch (key)
{
case LEFT:
if (board_x_index - 1 < 0) break;
remove(x, y);
x -= 10;
board_x_index--;
select_number(x, y);
break;
case RIGHT:
if (board_x_index + 1 > 4) break;
remove(x, y);
x += 10;
board_x_index++;
select_number(x, y);
break;
case UP:
if (board_y_index - 1 < 0) break;
remove(x, y);
y -= 3;
board_y_index--;
select_number(x, y);
break;
case DOWN:
if (board_y_index + 1 > 4) break;
remove(x, y);
y += 3;
board_y_index++;
select_number(x, y);
break;
case space:
change_number(board[board_x_index][board_y_index], x, y);
break;
}
}
t1.join();
이렇게 호출했는데 이게
while문 전에 join을 하거나 while문 후에 join을 하거나 상관있나??
그리고 아무 숫자도 안뜨는데 스레드가 아예 실행이안되는거같은데
사용법 아는사람있어??
먼저 join이 뭐하는지부터 이해하는 것이 필요하다
아 시발 C++은 잘 몰라서 정확한 답변을 불가능하지만 언어 불문하고 join()은 스레드가 끝나기를 기다리는거임
thread api를 찾아봐야겠네..
근데 니가올린 코드를 대충 보면 user_Timer를 실행하는 스레드를 만들어는 놨는데 저 안에 while문이 있어서 계속 스레드가 살아있는것도 아니고 니가 뭘 하고싶은건지도 잘 알수없는 코드다
내가 이해한게 맞으면 저 스레드는 실행하자마자 뒤졌을거임
실시간으로 올리고 싶다니까 스레드를 쓸수밖에 없겠지
엌