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; }
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; }