c语言kbhit函数头文件,有没有办法在标准C中替换kbhit()和getch()函数?
我试图用控制台获得快速时间事件类型的交互,并设法使用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()函数?相关推荐
- C语言编程规范 — 头文件、函数
0 编码规范说明 0.1 前言 为了提高产品或项目代码质量,软件开发人员编写出简洁.可靠.可维护.可测试.高效.可移植的代码,树立良好的编程规范是非常有必要的,良好的编程规范能提高编程效率,规避很多编 ...
- c语言中常用函数头文件,c语言中常用的函数和头文件
头文件ctype.h 函数列表 函数类别函数目的详细说明 字符测试为字符和数字的isalnum 是否为isalpha字符 是否控制字符iscntrl 是否为数字isdigit 是否能够显示文字(空格除 ...
- C语言 define 防止头文件重复包含 - C语言零基础入门教程
目录 一.头文件重复包含编译器报错 1.简单的理解头文件重复包 2.老流氓的理解头文件重复包 二.通过宏定义解决头文件重复包含 1.通过 #ifndef / #define 解决头文件重复包含 2.通 ...
- c语言的所有头文件,C语言所有头文件.doc
C语言所有头文件 C语言所有头文件 stdlib.h包含了很多标准函数和标准宏定义,比如NULL, EXIT_SUCCESS等. ctype.h包含了很多类型定义 string.h包含了字符串操作相关 ...
- listlength函数头文件_酷町问答 - 我们编程时,通常要用到哪些头文件,包含什么函数...
1.常用数学函数 头文件 #include 或者 #include 函数原型 功能 返回值 int abs(int x) 求整数x的绝对值 绝对值 double acos(double x) 计算a ...
- 单片机C语言常用的头文件与库函数
单片机C语言常用的头文件与库函数 以下头文件与库函数,只用头文件包含以下相应头文件即可调用. 持续更新中 Intrins.h头文件 函数名 函数原型 功能 返回值 _crol_ unsigned ch ...
- C语言基础专题 - 头文件引用
C语言基础专题 - 头文件引用 本文介绍了C语言中头文件的引用方法 阅读本文前推荐阅读C语言预处理 1.
- 为什么C语言要有头文件(补充)
1.为什么要有头文件? 为了在组织项目结构的时候,减少大型项目维护成本问题. 2.引用头文件 方法一: 使用#pragmatic once可以包括 1.C头文件 2.所有的变量的声明 3.所有的函数的 ...
- pandas使用read_csv函数读取文件最后N行数据并保留表头、pandas使用read_csv函数读取网络url链接数据
pandas使用read_csv函数读取文件最后N行数据并保留表头.pandas使用read_csv函数读取网络url链接数据 目录
最新文章
- 开源 java CMS - FreeCMS2.6 互动信件
- python3是unicode还是utf-8_ASCII、Unicode、UTF-8以及Python3编码问题
- linux下测试个人主页,一键建站集成软件包,Linux上快速搭建测试个人网站
- linux 下zip文件的压缩和解压
- 经典面试题:用typeof来判断对象的潜在陷阱
- Aruba 云服务代金券
- 大数据?这些你了解吗?------之基础知识篇
- python数据结构list的extend与append的差别
- Ubuntu中DenyHosts安装及配置
- globalmapper如何选取图像上的点_图像配准算法
- boost::property_tree读取解析ini文件--推荐
- CCS8.0安装教程及安装包
- 网页滚动截屏怎么截长图
- 电脑连接无线路由上不了网 连接手机热点却可以上网
- 迅雷x下载的东西都变成php格式化,关于文件下载后变成PHP格式的解决办法
- [转载] MATLAB快捷键
- Java利用HttpClient发送请求生成微信支付二维码、查询支付状态
- 蓝桥杯练习 数的读法
- 什么是SEO?搜索引擎优化是什么意思?
- Java从入门到精通十六(函数式接口编程)
热门文章
- python123监考系统_2020-2021学年第1学期 期末考试监考安排
- java绘制五角星_java画各种五角星
- 怎么登录163邮箱?TOMvip邮箱登录详情介绍
- Android 蓝牙 -- 还原网络设置 删除蓝牙所有存储配对信息流程分析---全网唯一
- linux复制整个目录_如何在Linux中复制整个目录?
- 扫雷-空白展开算法(优化)-详解
- [Solved] Javax.Crypto.AEADBadTagException: Tag Mismatch
- 从全球顶级数据库大会 SIGMOD 看数据库发展趋势
- word无法验证服务器,Office提示“无法验证此应用程序的许可证”时怎么处理?...
- 04oracle单表查询、连接查询、子查询