输入语句,当代码运行到它的时候就要等待输入,才能执行下一行代码,如果不输入的话,就相当于在这里暂停了(程序设计老师讲过通过这样的方式以达到暂停(pause)的效果),但如果我们想要如果没输入仍然可以运行,比如,玩坦克大战的时候不按方向键,游戏画面依旧在变动(还比如以前我想在我一个小软件中做一点美化:标题文字颜色在深蓝与浅蓝间随时间不断变化,结果最后的效果是颜色随鼠标移动变化,鼠标不动,颜色就不变),那如果要改变这一问题,怎么办?

头文件: conio.h

函数:

        _kbhit()    :无阻塞函数,当运行到这里检测键盘是否有输入,有则返回1,无则返回0 

        _getch()   :不回显输入函数,作用同getchar(),区别在于_getch()输入时输入的内容不会被显示。

下面来一个简单的例子示范一下:

    假如你让一个人帮你数天上的星星,然后他数了十多分钟后累了,又不能停下,就只好问你:还要继续数吗?你说:要。他继续数了一颗,又问你要不要继续数,就一直这样不断的数一颗问一遍,数一遍问一遍,是不是很烦?那你会怎么办?当然是告诉他:我没叫你停,你就一直数!对吧,下面用代码实现一下。

#include<conio.h>
#include<iostream>
using namespace std;
int main() {
int i = 0;
char ch;
while (1) {
cout << ++i << "颗星星" << endl;
if (_kbhit()) { //如果键盘有输入
ch = _getch(); //且输入k
if (ch == 'k')
break;
}
}
return 0;
}

这样我们就达到了一个动态的效果:如果不输入k,就一直“数星星”。

下面再将代码进行一个简单的完善:

#include<conio.h>
#include<iostream>
#include<Windows.h>
using namespace std;
int main() {
int i = 0;
while (1) {
cout << ++i << "颗星星" << endl;
if (_kbhit()&&toupper(_getch())=='K') //如果键盘有输入且输入K键(即k,K)
break;
Sleep(1000); //不能数得太快,不然太夸张容易被看出来是假的,所以1000ms(1s)数一次
system("cls"); //清屏,过去的都让它过去吧
}
return 0;
}

让键盘输入不影响界面的动态效果(C++)的更多相关文章

  1. Android 软键盘弹出,界面整体上移

    在做搜索功能的时候,点击搜索框,搜索框获取焦点,键盘弹出:现在问题出来了,android软键盘弹出的时候,android整个界面上移,布局被挤压,很难看:要解决这个问题,我们需要用到 windowSo ...

  2. 用Delphi模拟键盘输入

    在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的操作,我们能否通过编制程序来代替手工输入, ...

  3. VB模拟键盘输入的N种方法

    VB模拟键盘输入的N种方法http://bbs.csdn.net/topics/90509805hd378发表于: 2006-12-24 14:35:39用VB模拟键盘事件的N种方法 键盘是我们使用计 ...

  4. noVNC支持手机自带键盘输入

    代码修改说明 novnc的web链接类似为:http://192.168.1.177:6080/vnc_auto.html?token=105356fa-bbe3-43e4-a0ce-7703dc42 ...

  5. Android - 隐藏EditText弹出的软键盘输入(SoftInput)

    隐藏EditText弹出的软键盘输入(SoftInput) 本文地址: http://blog.csdn.net/caroline_wendy 保持界面的整洁, 能够选择在进入界面时, 隐藏EditT ...

  6. 【转】C# winform 加载网页 模拟键盘输入自动接入访问网络

    [转]C# winform 加载网页 模拟键盘输入自动接入访问网络 声明: 本文原创,首发于博客园 http://www.cnblogs.com/EasyInvoice/p/6070563.html  ...

  7. java学习笔记(5) 控制语句、键盘输入

    控制语句: java控制可以分为7种: *控制选择结构语句: *if  if else *switch *控制循环结构语句: *for *while *do while *改变控制语句顺序: *bre ...

  8. 解决 minicom 不能接收键盘输入问题

    今天突然minicom 不能接受键盘输入了.早上的时候在其他设备上不能识别usb转串口的设备,重新启动电脑后,恢复正常了.下午又出现minicom 不接收键盘输入. 百度了一下解决了. 解决方法 由于 ...

  9. WPF进阶技巧和实战09-事件(1-路由事件、鼠标键盘输入)

    理解路由事件 当有意义的事情发生时,有对象(WPF的元素)发送的用于通知代码的消息,就是事件的核心思想.WPF通过事件路由的概念增强了.NET事件模型.事件由允许源自某个元素的事件由另一个元素引发.例 ...

随机推荐

  1. java axis2 webservice

    http://clq9761.iteye.com/blog/976029/ 这篇文章写的是最全的,也是最好的.无须下一步下一步操作来操作去,写类直接调试,非常好!

  2. Uni2D 入门 -- Skeletal Animation

    转载 csdn http://blog.csdn.net/kakashi8841/article/details/17615195 Skeletal Animation Uni2D V2.0 引进了一 ...

  3. tensorflow中run和eval的区别(转)

    在tensorflow中,eval和run都是获取当前结点的值的一种方式. 在使用eval时,若有一个 t 是Tensor对象,调用t.eval()相当于调用sess.run(t) 一下两段代码等效: ...

  4. java-学习1

    作为一个想要深入的程序猿,只是学习前端是不够的,我总结我的前端工作是围绕着html.css.js展开写的再好也是展现在表面,所以 我想学习一门能够深入的后台语言,想来想去我还是选择java作为以后深入 ...

  5. hibernate flush clear的区别

    有的时候你执行了更新什么的操作不一定能查出来:没有保存到数据库 以下的缓存是指一级缓存,即session:默认缓存是一级缓存: flush的意思就是执行sql,但是还没有commit,没有持久化:再清 ...

  6. 04_web基础(七)之jsp

    39.jsp与el表达式引入 JSP:Java Server Pages:Java的服务网页(Java动态网页):=========================================== ...

  7. Mysql5.6 导出sql文件数据导入到5.7

    由于在linux安装了mysql5.7,在需要导入数据时发现报错,说时间默认值不能为0,因为之前用的是mysql5.6 的版本.经过网上百度查找方法,发现是mysql的sql_mode值的问题,于是就 ...

  8. react input的几个坑

    [react input的几个坑] 1.input标签中设置value后,input进入controlled模式,valuechange由自动变为手动,导致input无法编辑.如: <input ...

  9. SpringBoot点滴(1)

    spring boot 注意事项 1.项目启动的主类,放置位置在所有类的外层与controller,dao,service,util,entity同层,SpringBoot会自动扫描@SpringBo ...

  10. 【C++】正则表达式引擎学习心得

    最近参照一些资料实现了一个非常简易的正则表达式引擎,支持基本的正则语法 | + * ()等. 实现思路是最基本的:正则式->AST->NFA->DFA. 以下是具体步骤: 一. 正则 ...