我试图用控制台获得快速时间事件类型的交互,并设法使用conio库获取它。可悲的是,我正在开发的这个项目需要在Windows和Linux上编译代码,我无法找到一种方法来改变它。有没有办法在标准C中替换kbhit()和getch()函数?

有什么我可以做得到理想的效果还是应该放弃这个概念?以下是我创建的函数的代码。

#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);

}

+0

你的标题,但代码C]说 “标准C” ++? –

+0

您应该使用_kbhit()。 kbhit自1994年以来已被弃用。在标准C中没有等价物。请查看http://cboard.cprogramming.com/c-programming/63166-kbhit-linux.html以了解相应的Linux。 –

c语言kbhit函数头文件,有没有办法在标准C中替换kbhit()和getch()函数?相关推荐

  1. C语言编程规范 — 头文件、函数

    0 编码规范说明 0.1 前言 为了提高产品或项目代码质量,软件开发人员编写出简洁.可靠.可维护.可测试.高效.可移植的代码,树立良好的编程规范是非常有必要的,良好的编程规范能提高编程效率,规避很多编 ...

  2. c语言中常用函数头文件,c语言中常用的函数和头文件

    头文件ctype.h 函数列表 函数类别函数目的详细说明 字符测试为字符和数字的isalnum 是否为isalpha字符 是否控制字符iscntrl 是否为数字isdigit 是否能够显示文字(空格除 ...

  3. C语言 define 防止头文件重复包含 - C语言零基础入门教程

    目录 一.头文件重复包含编译器报错 1.简单的理解头文件重复包 2.老流氓的理解头文件重复包 二.通过宏定义解决头文件重复包含 1.通过 #ifndef / #define 解决头文件重复包含 2.通 ...

  4. c语言的所有头文件,C语言所有头文件.doc

    C语言所有头文件 C语言所有头文件 stdlib.h包含了很多标准函数和标准宏定义,比如NULL, EXIT_SUCCESS等. ctype.h包含了很多类型定义 string.h包含了字符串操作相关 ...

  5. listlength函数头文件_酷町问答 - 我们编程时,通常要用到哪些头文件,包含什么函数...

    1.常用数学函数 头文件 #include  或者 #include 函数原型 功能 返回值 int abs(int x) 求整数x的绝对值 绝对值 double acos(double x) 计算a ...

  6. 单片机C语言常用的头文件与库函数

    单片机C语言常用的头文件与库函数 以下头文件与库函数,只用头文件包含以下相应头文件即可调用. 持续更新中 Intrins.h头文件 函数名 函数原型 功能 返回值 _crol_ unsigned ch ...

  7. C语言基础专题 - 头文件引用

    C语言基础专题 - 头文件引用 本文介绍了C语言中头文件的引用方法 阅读本文前推荐阅读C语言预处理 1.

  8. 为什么C语言要有头文件(补充)

    1.为什么要有头文件? 为了在组织项目结构的时候,减少大型项目维护成本问题. 2.引用头文件 方法一: 使用#pragmatic once可以包括 1.C头文件 2.所有的变量的声明 3.所有的函数的 ...

  9. pandas使用read_csv函数读取文件最后N行数据并保留表头、pandas使用read_csv函数读取网络url链接数据

    pandas使用read_csv函数读取文件最后N行数据并保留表头.pandas使用read_csv函数读取网络url链接数据 目录

最新文章

  1. 开源 java CMS - FreeCMS2.6 互动信件
  2. python3是unicode还是utf-8_ASCII、Unicode、UTF-8以及Python3编码问题
  3. linux下测试个人主页,一键建站集成软件包,Linux上快速搭建测试个人网站
  4. linux 下zip文件的压缩和解压
  5. 经典面试题:用typeof来判断对象的潜在陷阱
  6. Aruba 云服务代金券
  7. 大数据?这些你了解吗?------之基础知识篇
  8. python数据结构list的extend与append的差别
  9. Ubuntu中DenyHosts安装及配置
  10. globalmapper如何选取图像上的点_图像配准算法
  11. boost::property_tree读取解析ini文件--推荐
  12. CCS8.0安装教程及安装包
  13. 网页滚动截屏怎么截长图
  14. 电脑连接无线路由上不了网 连接手机热点却可以上网
  15. 迅雷x下载的东西都变成php格式化,关于文件下载后变成PHP格式的解决办法
  16. [转载] MATLAB快捷键
  17. Java利用HttpClient发送请求生成微信支付二维码、查询支付状态
  18. 蓝桥杯练习 数的读法
  19. 什么是SEO?搜索引擎优化是什么意思?
  20. Java从入门到精通十六(函数式接口编程)

热门文章

  1. python123监考系统_2020-2021学年第1学期 期末考试监考安排
  2. java绘制五角星_java画各种五角星
  3. 怎么登录163邮箱?TOMvip邮箱登录详情介绍
  4. Android 蓝牙 -- 还原网络设置 删除蓝牙所有存储配对信息流程分析---全网唯一
  5. linux复制整个目录_如何在Linux中复制整个目录?
  6. 扫雷-空白展开算法(优化)-详解
  7. [Solved] Javax.Crypto.AEADBadTagException: Tag Mismatch
  8. 从全球顶级数据库大会 SIGMOD 看数据库发展趋势
  9. word无法验证服务器,Office提示“无法验证此应用程序的许可证”时怎么处理?...
  10. 04oracle单表查询、连接查询、子查询