练涛

输入语句,当代码运行到它的时候就要等待输入,才能执行下一行代码,如果不输入的话,就相当于在这里暂停了(程序设计老师讲过通过这样的方式以达到暂停(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;
}

 

posted on 2018-10-12 01:26  氵丨  阅读(303)  评论(0编辑  收藏  举报