• 让键盘输入不影响界面的动态效果(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;
    }
  • 相关阅读:
    触发器操作:在触发器中嵌套多个游标
    哈 希 表 的 操 作
    类的覆盖
    java、数据库中命名规则
    html中文字移动命令大全(摘录)
    java中四种过滤器
    日常生活收缩毛孔几个小妙招 生活至上,美容至尚!
    收缩毛孔全过程,很详细! 生活至上,美容至尚!
    懒人的七种超级减肥方法 生活至上,美容至尚!
    晚上美容护肤10要诀 生活至上,美容至尚!
  • 原文地址:https://www.cnblogs.com/F-itachi/p/9974345.html
Copyright © 2020-2023  润新知