让键盘输入不影响界面的动态效果(C++)
输入语句,当代码运行到它的时候就要等待输入,才能执行下一行代码,如果不输入的话,就相当于在这里暂停了(程序设计老师讲过通过这样的方式以达到暂停(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++)的更多相关文章
- Android 软键盘弹出,界面整体上移
在做搜索功能的时候,点击搜索框,搜索框获取焦点,键盘弹出:现在问题出来了,android软键盘弹出的时候,android整个界面上移,布局被挤压,很难看:要解决这个问题,我们需要用到 windowSo ...
- 用Delphi模拟键盘输入
在Windows大行其道的今天,windows界面程序受到广大用户的欢迎.对这些程序的操作不外乎两种,键盘输入控制和鼠标输入控制.有时,对于繁杂的,或重复性的操作,我们能否通过编制程序来代替手工输入, ...
- VB模拟键盘输入的N种方法
VB模拟键盘输入的N种方法http://bbs.csdn.net/topics/90509805hd378发表于: 2006-12-24 14:35:39用VB模拟键盘事件的N种方法 键盘是我们使用计 ...
- noVNC支持手机自带键盘输入
代码修改说明 novnc的web链接类似为:http://192.168.1.177:6080/vnc_auto.html?token=105356fa-bbe3-43e4-a0ce-7703dc42 ...
- Android - 隐藏EditText弹出的软键盘输入(SoftInput)
隐藏EditText弹出的软键盘输入(SoftInput) 本文地址: http://blog.csdn.net/caroline_wendy 保持界面的整洁, 能够选择在进入界面时, 隐藏EditT ...
- 【转】C# winform 加载网页 模拟键盘输入自动接入访问网络
[转]C# winform 加载网页 模拟键盘输入自动接入访问网络 声明: 本文原创,首发于博客园 http://www.cnblogs.com/EasyInvoice/p/6070563.html ...
- java学习笔记(5) 控制语句、键盘输入
控制语句: java控制可以分为7种: *控制选择结构语句: *if if else *switch *控制循环结构语句: *for *while *do while *改变控制语句顺序: *bre ...
- 解决 minicom 不能接收键盘输入问题
今天突然minicom 不能接受键盘输入了.早上的时候在其他设备上不能识别usb转串口的设备,重新启动电脑后,恢复正常了.下午又出现minicom 不接收键盘输入. 百度了一下解决了. 解决方法 由于 ...
- WPF进阶技巧和实战09-事件(1-路由事件、鼠标键盘输入)
理解路由事件 当有意义的事情发生时,有对象(WPF的元素)发送的用于通知代码的消息,就是事件的核心思想.WPF通过事件路由的概念增强了.NET事件模型.事件由允许源自某个元素的事件由另一个元素引发.例 ...
随机推荐
- java工程师基础笔试题(一)-参考答案
一.选择和填空 (不定项哦!) 1,如下是一份文件名为Test2.java的源文件,请问,编译该文件之后会生成几份字节码文件 class Test{ class Inner{} static cla ...
- jquery使用post方法传值
1.js代码 <script type="text/javascript"> function addSku(skuId){ var m = $("#m&qu ...
- 使用Fiddler远程抓包(转载)
转载自 http://www.cnblogs.com/111testing/p/6436372.html Fiddler简介以及web抓包 一.Fiddler简介 简单来说,Fiddler是一个htt ...
- python生成Excel图表(通过xlsxwriter)
前面介绍了pandas的简单用法,pandas的数据可以通过matlab第三方包将数据生成报表,但是我想将报表生成在Excel中,这时候就可以借助xlsxwriter第三方包来生成图标 缺点:xl ...
- jquery 动态数字滚动
1.引入jQuery <script src="js/jquery.min.js"></script>2.html <div id="cou ...
- AttributeError: 'dict' object has no attribute 'iteritems'
在python3.6中运行 sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse= ...
- Ubuntu下ssh的安装
1.安装 Ubuntu缺省安装了openssh-client,,如果没有安装,可用apt-get安装上即可. 安装ssh-server sudo apt-get install openssh-ser ...
- NumPy 矩阵库(Matrix)
NumPy 矩阵库(Matrix) NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象. 一个 的矩阵是一个由行(row)列(col ...
- DDMS 使用方法
一.真机调试的两个必备条件 (1)手机打开开发者模式并且运行USB调试 (2)PC上装好手机对应的驱动 二.DDMS(DalvikDebugMonitorServer)四个主要窗口 Devices:当 ...
- 牛客网练习赛12---A and B
A题传送门:https://www.nowcoder.net/acm/contest/68/A B题传送门: https://www.nowcoder.net/acm/contest/68/B A ...