008
Matthias Hofmann
Administrator Bürstenkaiser
|
Geschrieben am: 30.12.2009, 01:46 Uhr Also vertragliche Abmachungen gibt es in diesem Fall nicht, aber einen derartigen Spaghetticode zu veröffentlichen ist mir eigentlich ein biÃ?chen peinlich... Aber meinetwegen, hier ist der Quelltext für die Tombola: format_source('// Führt die Tombola durch void StartTombola ( BYTE index_king ) { HDC hdc; DWORD delay; // Verzögerungszeit bei Tombolaausgabe
// Verschiedene Schüsselobjekte als Preise einführen Bowl ceramics, metal, marble, gold, emerald; ceramics.SetName( ceramicsbowl[sprache] ); ceramics.SetKind( 0 );
metal.SetName( metalbowl[sprache] ); metal.SetKind( 1 );
marble.SetName( marblebowl[sprache] ); marble.SetKind( 2 );
gold.SetName( goldbowl[sprache] ); gold.SetKind( 3 );
emerald.SetName( emeraldbowl[sprache] ); emerald.SetKind( 4 );
// Spülung entsprechend dem Spülungsgrad des Spülers einführen Flush flush;
char flushname[20]; ZeroMemory( flushname, 20 ); // Damit eine Null als Endmarkierung vorhanden ist
memcpy( flushname, fTypeSym[sprache] + ( spieler[index_king].techflush - 1 ) * 14, 14 );
flush.SetName( flushname ); flush.SetKind( spieler[index_king].techflush - 1 );
// Klobrille entsprechend dem Brillengrad des Spülers einführen Seat seat;
char seatname[20]; ZeroMemory( seatname, 20 ); // Damit eine Null als Endmarkierung vorhanden ist
memcpy( seatname, sTypeSym[sprache] + ( spieler[index_king].techbrille - 1 ) * 14, 14 );
seat.SetName( seatname ); seat.SetKind( spieler[index_king].techbrille - 1 );
// Geldpreis einführen Money money;
money.SetName( "10.000 Euro" );
// Zeigerarray auf die 20 Tombolapreise TombolaPrize *ptrPrize[20] = { &ceramics, &metal, &marble, &seat, &ceramics, &flush, &metal, &money, &ceramics, &marble, &gold, &metal, &ceramics, &emerald, &seat, &flush, &ceramics, &metal, &marble, &gold };
////////////////////// // Tombola beginnen // ////////////////////// // Zahl zwischen 29 und 48 als Anfangswert auswürfeln // a darf in der Schleife nicht unter Null sinken, deswegen // muÃ? der letzte Wert ( hier "+ 29" ) mindestens a - 1 sein int a = ( rand() % 20 ) + 29;
for ( int i = 30; i; i--, a-- ) { // Grafik der Krone in den Hintergrundpuffer kopieren ( diese // Grafik wurde in der aufrufenden Routine in osTemporary geladen ) BackBuffer->BltFast( 0, 0, osTemporary, NULL, DDBLTFAST_WAIT );
BackBuffer->GetDC( &hdc ); SetTextAlign( hdc, TA_TOP | TA_CENTER ); SelectObject( hdc, CreateKloFont( 60, 300, FF_MODERN, "Times New Roman" ) ); SetTextColor( hdc, RGB ( 200, 0, 0 ) ); SetBkMode( hdc, TRANSPARENT );
// "Der Rundenkönig heiÃ?t:" ausgeben TextOut( hdc, 400, 20, roundkingis[sprache], strlen( roundkingis[sprache] ) );
// Name des Spülers ausgeben TextOut( hdc, 400, 260, spieler[index_king].name, strlen( spieler[index_king].name ) );
DeleteObject( SelectObject( hdc, CreateKloFont( 20, 300, FF_MODERN, "Times New Roman" ) ) ); SetTextColor( hdc, RGB ( 204, 201, 176 ) );
// "Und hier ist Ihr Preis:" ausgeben TextOut( hdc, 400, 460, yourprize[sprache], strlen( yourprize[sprache] ) );
DeleteObject( SelectObject( hdc, CreateKloFont( 40, 300, FF_MODERN, "Times New Roman" ) ) ); SetTextColor( hdc, RGB ( 0, 0, 180 ) );
// Namen des Preises ausgeben TextOut( hdc, 400, 490, ptrPrize[a % 20]->GetName(), strlen( ptrPrize[a % 20]->GetName() ) );
DeleteObject( SelectObject( hdc, GetStockObject ( SYSTEM_FONT ) ) ); BackBuffer->ReleaseDC( hdc );
PrimaryScreen->Flip( NULL, DDFLIP_WAIT );
// Verzögerungszeit berechnen delay = ( DWORD ) ( 1 / ( float ) i * 2000 ); ROULETTESOUND;
WaitEx( delay ); }
// Den gewonnenen Preis verbuchen ptrPrize[( a + 1 ) % 20]->DoWork( index_king ); // Nach dem letzten Durchlauf der obigen Schleife wird a nochmal // dekrementiert, deswegen muÃ? zum Ausgleich "( a + 1) % 20" // in der eckigen Klammer stehen // Dafür sorgen, daÃ? Hintergrundpuffer und primäre Oberfläche identisch sind: BackBuffer->BltFast( 0, 0, PrimaryScreen, NULL, DDBLTFAST_WAIT );
RECT blRect;
// Dialogbox für "Hurra!" einblenden SetRect( &blRect, 20, 270, 150, 320 ); BackBuffer->BltFast( 335, 540, osLittle, &blRect, DDBLTFAST_WAIT );
BackBuffer->GetDC( &hdc ); SetTextAlign( hdc, TA_TOP | TA_CENTER ); SelectObject( hdc, CreateKloFont( 28, 300, FF_MODERN, "Times New Roman" ) ); SetTextColor( hdc, RGB ( 204, 201, 176 ) ); SetBkMode( hdc, TRANSPARENT );
// "Hurra!" ausgeben TextOut( hdc, 400, 550, hurrah[sprache], strlen( hurrah[sprache] ) );
DeleteObject( SelectObject( hdc, GetStockObject ( SYSTEM_FONT ) ) ); BackBuffer->ReleaseDC( hdc );
if ( g_gPlayMusic ) { // Stop the background music for a moment ... DMOBSERVE( lpPerformance->Stop( NULL, NULL, 0, 0 ) );
// ... play the jingle-motif ... PlayMotif( lpMain, "Jingle", DMUS_SEGF_DEFAULT, &lpSegmentState );
// .., and play the background music again, after the motif has finished. DMOBSERVE( lpPerformance->PlaySegment( lpMain, DMUS_SEGF_GRID | DMUS_SEGF_QUEUE, 0, NULL ) ); }
PrimaryScreen->Flip( NULL, DDFLIP_WAIT ); }') ------ Matthias Hofmann | Klomanager Deluxe jetzt bei Gamesload kaufen |