コード例 #1
0
void ProcessHands( int level, int start )
{
	int n;
	if( level == 0 )
	{
      start_tick = GetTickCount();
		if( !no_output )
		{
			pvt_sql = VarTextCreate();
			vtprintf( pvt_sql, WIDE("insert into poker_odds (ID,card1,card2,card3,card4,card5,value,class,name) values ") );
			first = 1;
		}
	}
	handcount++;
	if( ( handcount & 0xFFF ) == 0 )
	{
      uint32_t tick = GetTickCount();
      lprintf( WIDE("hands %ld in %ld = %ld"), handcount, tick - start_tick, (handcount)/(tick-start_tick));
			start_tick = tick;
         handcount = 0;
	}
	if( level == 5 )
	{
		int value;
      static PTEXT hand_string;
		handcount++;
		value = ValuePokerHand( l.hand, NULL, TRUE );
		//if( ( value = ValuePokerHand( l.hand, NULL, TRUE ) ) >= 0x100000 )
		GetPokerHandName( l.hand, &hand_string );
      /*
		lprintf( WIDE("hand %d,%d,%d,%d,%d,%d,%d,%d,\'%s\'")
				 , handcount
				 , hand[0]->id
				 , hand[1]->id
				 , hand[2]->id
				 , hand[3]->id
				 , hand[4]->id
				 , value
				 , value >> 20
				 , hand_string?GetText( hand_string ):WIDE("unknown")
				 );
      */
		if( !no_output )
		{
			vtprintf( pvt_sql, WIDE("%s(%d,%d,%d,%d,%d,%d,%d,%d,\'%s\')")
					 , first?WIDE(""):WIDE(",")
					 , handcount
					 , hand[0]->id
					 , hand[1]->id
					 , hand[2]->id
					 , hand[3]->id
					 , hand[4]->id
					 , value
					 , value >> 20
					 , hand_string?GetText( hand_string ):WIDE("unknown")
					  );
         first = 0;
		}
コード例 #2
0
PTEXT GetPokerHandName( PHAND pHand, PTEXT *ppLastValue )
{
	int value;
	PVARTEXT pvt;
	if( *ppLastValue )
		LineRelease( *ppLastValue );
	pvt = VarTextCreate();
	value = ValuePokerHand( pHand, NULL, TRUE );
	if( !value )
	{
		vtprintf( pvt, WIDE("No hand") );
	}
	else switch( value >> 20 )
	{
	case 0:
		vtprintf( pvt, WIDE("High Card - %s"), cardlongnames[ ((value>>16)&0xF)-1 ] );
		break;
	case 1:
		vtprintf( pvt, WIDE("A Pair of %ss"), cardlongnames[ (value&0xF) ] );
		break;
	case 2:
		vtprintf( pvt, WIDE("2 Pair %ss and %ss")
						, cardlongnames[ (value&0xF0)>>4] 
						, cardlongnames[ (value&0xF) ] 
						 );
		break;
	case 3:
		vtprintf( pvt, WIDE("3 of a Kind %ss"), cardlongnames[ (value&0xF) ] );
		break;
	case 4:
		vtprintf( pvt, WIDE("Straight") );
		break;
	case 5:
		vtprintf( pvt, WIDE("Flush") );
		break;
	case 6:
		vtprintf( pvt, WIDE("Full House %ss over %ss")
						, cardlongnames[ (value&0xF0)>>4] 
						, cardlongnames[ (value&0xF) ] 
						);
		break;
	case 7:
		vtprintf( pvt, WIDE("4 of a Kind %ss"), cardlongnames[(value&0xF0)>>4] );
		break;
	case 8:
		vtprintf( pvt, WIDE("Straight Flush") );
		break;
	case 9:
		vtprintf( pvt, WIDE("Royal Flush") );
		break;
	case 10:
		vtprintf( pvt, WIDE("5 of a Kind %ss"), cardlongnames[value&0xF] );
		break;
	}
	*ppLastValue = VarTextGet( pvt );
   VarTextDestroy( &pvt );
	return *ppLastValue;
}