#include "Game.h" #include #include #include #include int gameCount = 0; extern "C" { __declspec( dllexport ) MiniGameV *GetMiniGame() { return new Game(); } __declspec( dllexport ) void *InitializeFromPython() { initFramework(); gameCount++; Map *map = new Map( 0 ); InitDatei *opd = new InitDatei( "optionen.ini" ); if( !opd->laden() ) DateiPfadErstellen( "optionen.ini" ); Text optionen = "Width="; if( opd->wertExistiert( "Breite" ) ) optionen += (int)* opd->zWert( "Breite" ); else { opd->addWert( "Breite", "800" ); optionen += 800; } optionen += ",Height="; if( opd->wertExistiert( "Höhe" ) ) optionen += (int)* opd->zWert( "Höhe" ); else { opd->addWert( "Höhe", "500" ); optionen += 500; } optionen += ",Ziele="; if( opd->wertExistiert( "Ziele" ) ) optionen += (int)* opd->zWert( "Ziele" ); else { opd->addWert( "Ziele", "1" ); optionen += 1; } optionen += ",Gegner="; if( opd->wertExistiert( "+Gegner" ) ) optionen += (int)* opd->zWert( "+Gegner" ); else { opd->addWert( "+Gegner", "3" ); optionen += 3; } optionen += ",Speed="; if( opd->wertExistiert( "Geschwindigkeit" ) ) optionen += (int)* opd->zWert( "Geschwindigkeit" ); else { opd->addWert( "Geschwindigkeit", "1000" ); optionen += 1000; } bool fortsetzen = 0; optionen += ",Fortsetzen="; if( opd->wertExistiert( "Fortsetzen" ) ) optionen += (int)* opd->zWert( "Fortsetzen" ) != 0; else { opd->addWert( "Fortsetzen", "0" ); optionen += 0; } opd->speichern(); opd->release(); RandomGenerator *rGen = new RandomGenerator(); optionen += Text( ",Seed=" ) + rGen->getSeed(); rGen->release(); map->reset( &optionen ); Sleep( rand() % 1000 ); return map; } __declspec( dllexport ) bool CanGoDown( void *game ) { return ( (Map *)game )->canGoDown(); } __declspec( dllexport ) bool CanGoLeft( void *game ) { return ( (Map *)game )->canGoLeft(); } __declspec( dllexport ) bool CanGoUp( void *game ) { return ( (Map *)game )->canGoUp(); } __declspec( dllexport ) bool CanGoRight( void *game ) { return ( (Map *)game )->canGoRight(); } __declspec( dllexport ) void GetBestOption( void *game, bool *left, bool *right, bool *up, bool *down ) { ( (Map *)game )->getBestOption( left, up, right, down, 4 ); } __declspec( dllexport ) bool NextFrameFromPython( void *game, char left, char right, char top, char down, int *frame ) { TastaturEreignis te; te.taste = T_Links; te.verarbeitet = 0; te.id = left ? TE_Press : TE_Release; ( (Map *)game )->doTastaturEreignis( te ); te.taste = T_Oben; te.verarbeitet = 0; te.id = top ? TE_Press : TE_Release; ( (Map *)game )->doTastaturEreignis( te ); te.taste = T_Rechts; te.verarbeitet = 0; te.id = right ? TE_Press : TE_Release; ( (Map *)game )->doTastaturEreignis( te ); te.taste = T_Unten; te.verarbeitet = 0; te.id = down ? TE_Press : TE_Release; ( (Map *)game )->doTastaturEreignis( te ); ( (Map *)game )->tick( 0.05 ); Bild *b = new Bild( 1 ); b->setPixelBuffer( frame, 0, 800, 500 ); ( (Map *)game )->render( *b ); b->release(); return !( (Map *)game )->istBeendet(); } __declspec( dllexport ) void ReleaseFromPython( void *game ) { ( (Map *)game )->release(); if( !gameCount-- ) releaseFramework(); } }