123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- #include "Game.h"
- #include <InitDatei.h>
- #include <TastaturEreignis.h>
- #include <Globals.h>
- #include <iostream>
- 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();
- }
- }
|