Beispiel #1
0
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);
}
Beispiel #2
0
void APISocket::CSocket::SetBlockMode(bool bBlock)
{
	m_bBlockMode = bBlock;
	NonBlock(!bBlock);
}