#include <unistd.h> #include <sys/types.h> #include <sys/time.h> void changemode(int); int kbhit kbhit() ) { putchar('.'); } ch = getchar(); printf("\nGot %c\n", ch); changemode(0); return tcsetattr( STDIN_FILENO, TCSANOW, &newt); } else tcsetattr( STDIN_FILENO, TCSANOW, &oldt); } int kbhit } 二,用非阻塞io #include <stdio.h> #include <termios.h> #include <unistd.h> #include <fcntl.h> int kbhit kbhit()) puts("Press a key!"); printf("You pressed '%c'!/n", getchar()); return 0; }
bytes); eg: #include<stdio.h> #include<stdlib.h> #include<sys/ioctl.h> #include<errno.h> int kbhit =’q’;++i){ if(kbhit()){ c=getchar(); printf(“\n got %c, on iteration %d”,c,i); }
bytes); eg: #include<stdio.h> #include<stdlib.h> #include<sys/ioctl.h> #include<errno.h> int kbhit =’q’;++i){ if(kbhit()){ c=getchar(); printf(“\n got %c, on iteration %d”,c,i); }
kbhit()) { setcolor(RGB(c, 0, 0)); outtextxy(280, 400, "按任意键继续"); c -= 8; if (c < 0) c = 255 y=0; y<460; y++) { setcolor(WHITE); // 设置字母的颜色 outtextxy(x, y, target); // 显示字母 if(kbhit
enemy_x++; speed = 1; } } void updateWithInput()//与输入有关的更新 { char input; if (kbhit ())//在VC6.0++下,为_kbhit() { input = getch();//在VC6.0++下为_getch(); if (input == 'a' show(); updateWithoutInput(); updateWithInput(); } return 0; } 注意107行和109行的kbhit
C语言实现,编译环境VS2017 附:easyx图形化(文章末尾) 效果图如下 (有一些函数kbhit,getch,在这表示为_kbhit与_getch)//不同编译器原因 注意在Dev等集成开发软件下可能会 ,以及一些初设的东西,如蛇的初始长度,可以的话可以自己加上出场界面 2、食物产生 通过srand,与rand 函数实现随机产生 3、键盘信号获取 由 _kbhit int ClickControl() { char c; while (1) { if (Judge() == 0) return 0; if (_kbhit
kbhit()) /*当无按键时敌人自己移动 */ { setcolor(GREEN);/*重画敌人*/ for(i=0;i<5;i++) circle(them[i].y kbhit())*/ if(false) break; key=bioskey(0); setcolor(0);/*把自己原来位置的人给删除掉*/ circle(100+you.y*20,100 kbhit()) { setcolor(rand()%13+1); outtextxy(180,200,"GAME OVER!") kbhit()) { setcolor(rand()%13+1); outtextxy(200,200,"YOU WIN!")
coord) coord.X = x; //横坐标x coord.Y = y; //纵坐标y SetConsoleCursorPosition(handle, coord); //移动光标 } 2.kbhit kbhit()) //当没有键按下 { cout<<“无键按下”<<endl; } cout<<“有键按下”<<endl; //有键按下时输出这 system(“pause”); } kbhit() 在执行时,检测是否有按键按下,有按下返回非0值,一般是1 没有按下返回0;是非阻塞函数 getch() 在执行时,检测按下什么键,如果不按键该函数不返回;是阻塞函数 类似地 在Tc2.0 //个人理解kbhit()有点像bioskey(1) 具体搜索bioskey词条吧 :) 3.playsound函数 引用一下这个函数的详细说明 所需头文件,顺序要这样子 #include < / 4; food.y = MAP_HIGHT / 2; gotoxy(food.x, food.y); printf("◆"); } void KeyDown() { //无按键操作 if (_kbhit
100000000;break; default: break; } ss[0].x=x; ss[0].y=y; } int ClickControl() { char c; while (1) { if (_kbhit () == 0) return 0; if (_kbhit()) { click = _getch(); } moveobject(); } return 1; } void food() { int
endl;; SetConsoleTextAttribute(handle,FOREGROUND_INTENSITY | FOREGROUND_GREEN); while(1) { char c; if(kbhit = 27) { C.end_game(); } S.change_point(keydown); if(keydown == ' ') { S.Display(); while(true) { if(kbhit kbhit()) { S.move(); S.Display(); Sleep(S.snake_speed); } } } int main() { memset(S.vis,0,sizeof(S.vis
方法一 if(GetKeyState('S')<0) { //响应键盘 } 方法二 if(_kbhit()) //键盘输入值时 { int key; key = _getch
#include <stdio.h> #include <time.h> #include <conio.h> //kbhit()/_kbhit(),getch() #include <Windows.h } } /**************** 键盘按键扫描+操作 ****************/ key = 0; if(_kbhit
); } // 画线擦掉一个像素行 line(0, i, 639, i); Sleep(10); // 延时 if (i >= 479) i = -1; if (_kbhit
kbhit()) //kbhit(检测键盘是否有消息) { if (food.flag == 0)//没有食物 FoodCoor
end = GetTickCount(); /* 获取end时间 */ t2 = GetTickCount(); /* 获取t2时间 */ if (kbhit int kbhit( void ); 返回值: 如果按下某个键,则kbhit返回一个非零值。否则,它返回0。
); // 输出倒计时的秒数 while (sec_count--) { // 非阻塞式键盘监听,输入缓冲区非空时则退出while循环 if (kbhit ()) // kbhit函数包含在头文件conio.h中,所以只适用于windows系统 { break; } printf(" Sleep(1000); system("cls"); } // 非阻塞式键盘监听,输入缓冲区非空时则退出while循环 if (kbhit
_kbhit()) { for(int i = 0; i < MAXSTAR; i++) MoveStar(i); Sleep(20); } closegraph(); /
display position and wait for song end while(1) { // check key press if(kbhit
printf("\n 哇,你输掉了游戏ヾ( ̄ー ̄)X(^▽^)ゞ");break;}}}蛇的移动首先定义一个全局变量direction用来判断每次自动移动时蛇头向那个方向移动主体逻辑获取玩家输入:通过 _kbhit 注意事项_kbhit() 和 _getch() 是Windows特有的函数,用于检测键盘输入。 * snakeLength) {int dirX = 0;int dirY = 0;// 获取玩家输入//char keydown = _getch();//反应时间Sleep(1000);if (_kbhit * snakeLength) {int dirX = 0;int dirY = 0;// 获取玩家输入//char keydown = _getch();//反应时间Sleep(1000);if (_kbhit
{ MouseGetXY(); if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85) { gameFLAG=1; continue; } } if(kbhit kbhit()) { if(LeftPress()) { MouseGetXY(); if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85) { MouseOff kbhit()) {while(t[0].ti_sec==s) gettime(t); sound(400); delay(70); sound(200); delay(30); nosound(); kbhit()) { if(food.yes==1) { food.x=rand()%400+60; food.y=rand()%350+60; while(food.x%10!