c语言kbhit函数头文件,c - 有没有办法替换标准C中的kbhit()和getch()函数? - 堆栈内存溢出...
我試圖獲得與控制臺(tái)交互的快速時(shí)間事件類(lèi)型,并設(shè)法使用conio庫(kù)獲得了它。 不幸的是,我正在從事的項(xiàng)目要求代碼必須在Windows和Linux上都可以編譯,但我想不出一種改變它的方法。
我可以做些什么以獲得理想的效果,還是應(yīng)該放棄這個(gè)概念? 以下是我創(chuàng)建的函數(shù)的代碼。
#include
#include
#include
#include
#include
void battle(int x) {
srand(time(0));
printf("Use Q to dodge projectile attacks, E to block melee attacks and W to attack when the boss is stunned. Button mashing will not work! Press any key to start the battle.\n\nYou face Brutus, Lord Incarcerator!\n\n");
getchar();
bool ok;
int dealt = 0 ,recieved = 0 , state, prev = 0;
time_t start, end;
double elapsed;
while(dealt < 5 && recieved < 3)
{
do
{
state = rand() % 3 + 1;
}
while(prev == state);
prev = state;
time(&start);
switch(state)
{
case(1):
ok = 1;
printf("Brutus uses Hook Attack!\n\n");
do
{
time(&end);
elapsed = difftime(end, start);
if(kbhit())
{
if( getchar() == 'q')
{
printf("Dodged!\n\n");
ok = 0;
break;
}
else
{
break;
}
}
}
while(elapsed < 3);
if(ok)
{
printf("You took damage!\n\n");
recieved++;
break;
}
break;
case(2):
ok = 1;
printf("Brutus is stunned!\n\n");
do
{
time(&end);
elapsed = difftime(end, start);
if(kbhit())
{
if( getchar() == 'w')
{
printf("You dealt damage!\n\n");
dealt++;
ok = 0;
break;
}
else
{
break;
}
}
}
while(elapsed < 3);
if(ok)
{
printf("Too slow!\n\n");
break;
}
break;
case(3):
ok = 1;
printf("Brutus uses Blood Slam!\n\n");
do
{
time(&end);
elapsed = difftime(end, start);
if(kbhit())
{
if( getchar() == 'e')
{
printf("Blocked!\n\n");
ok = 0;
break;
}
else
{
break;
}
}
}
while(elapsed < 3);
if(ok)
{
printf("You took damage!\n\n");
recieved++;
break;
}
break;
}
}
if(recieved >= 3)
{
printf("Battle lost; you will now respawn in town.");
getchar();
}
else
{
printf("Battle won!");
getchar();
}
}
int main()
{
battle(2);
}
總結(jié)
以上是生活随笔為你收集整理的c语言kbhit函数头文件,c - 有没有办法替换标准C中的kbhit()和getch()函数? - 堆栈内存溢出...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 王润涵:如何用链脉名片打造朋友圈自明星
- 下一篇: kbhit函数(讲解)