char main() { int i, sec_left = 5; // give player secs to pick letter char pick, str[100]; srand(getpid()); // seed rand for random pick if user not pick in secs sprintf(str, "%c[2J", 27); write( 1, str, strlen(str) ); sprintf( str, "%c[2;1H%s", 27, "Pick a winner A~Z " ); write( 1, str, strlen(str) ); NonBlock(1); // turn on non-block stdin while(1) { if( KeyHit() ) // check if key pressed { read(0, &pick, 1); // read key-in as a char // if not uppercase, reduce ASCII value to uppercase range if ( pick >= 'a' && pick <= 'z' ) pick -= ( 'a' - 'A' ); write(1, "You've picked: ", 15); // msg to show write(1, &pick, 1); // display pick write(1, " ", 2); // display " " sleep(1); // give time to let see msg if ( pick >= 'A' && pick <= 'Z' ) return pick; // good range } sprintf(str, "%c[4;1H%2d seconds! ", 27, sec_left); write(1, str, strlen(str)); if( sec_left == 0 ) { pick = rand()%26 + 'A'; sprintf(str, "%c[4;13HI've picked for you: ", 27); // row 4, col 13 write(1, str, strlen(str)); for( i=0; i<5; i++ ) // flash random pick { usleep(250000); sprintf(str, "%c[4;34H ", 27); // erase row 4, col 34 write(1, str, strlen(str)); usleep(250000); sprintf(str, "%c[4;34H%c ", 27, pick); write(1, str, strlen(str)); } sleep(1); // give time to let see msg return pick; } sleep(1); sec_left--; } NonBlock(0); }
void APISocket::CSocket::SetBlockMode(bool bBlock) { m_bBlockMode = bBlock; NonBlock(!bBlock); }