008
30.12.2009, 01:46 Uhr
Matthias Hofmann
Administrator Bürstenkaiser
Beiträge: 4133 Dabei seit: 15.04.2003, 23:00 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 |