我想做一个c++的迷宫,有倒计时,还要移动
问题:如果我的循环里装了按键,那么我就不能循环时间,不然时间会知道我按下按键才刷新一次,就不能做到倒计时的作用了。
有没有一种办法:让输入按键时,无论有没有按键都直接跳过?没有的话,可以告诉我解决问题的办法吗?
谢谢各位!
问题:如果我的循环里装了按键,那么我就不能循环时间,不然时间会知道我按下按键才刷新一次,就不能做到倒计时的作用了。
谢谢各位!
多线程搞起来
简单示例,VC2022:
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
bool bTIME = true;
DWORD WINAPI ThreadFun(LPVOID parg)
{
int time = *((int *)parg);
HANDLE hOut;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos = {(SHORT)70, 0};
CONSOLE_SCREEN_BUFFER_INFO CInfo;
while (time >= 0)
{
GetConsoleScreenBufferInfo(hOut, &CInfo); //获取当前光标位置
SetConsoleCursorPosition(hOut, pos); //设置倒计时光标
cout << setw(2) << setfill('0') << time << endl;
SetConsoleCursorPosition(hOut, CInfo.dwCursorPosition); //恢复当前光标
Sleep(1000);
time--;
}
cout << "倒计时时间到" << endl;
bTIME = false;
return 1;
}
int main()
{
int time = 20;
DWORD dwThreadId = -1;
HANDLE handle = CreateThread(NULL, 0, ThreadFun, (PVOID)&time, 0, &dwThreadId);
WaitForSingleObject(handle, 0);
string str = "";
do
{
cin >> str;
cout << str << endl;
} while (str != "stop" && bTIME);
TerminateThread(handle, 0);
cout << "游戏结束!" << endl;
getchar();
return 0;
}