program AlgoWars; {$APPTYPE CONSOLE} {%ToDo 'AlgoWars.todo'} uses SysUtils, Vectores in 'Vectores.pas', Objeto in 'Objeto.pas', Tipos in 'Tipos.pas', Espacio in 'Espacio.pas', Coordenadas in 'Coordenadas.pas', Meteorito in 'ov\Meteorito.pas', ObjetoVolador in 'ov\ObjetoVolador.pas', Armas in 'ov\Armas.pas', Nave in 'ov\naves\Nave.pas', NavePropia in 'ov\naves\NavePropia.pas', NaveEnemiga in 'ov\naves\NaveEnemiga.pas', NavesEnemigas in 'ov\naves\NavesEnemigas.pas', Camara in 'Camara.pas'; var oEspacio: cEspacio; oNavePropia: cNavePropia; oCamNP, oCamM, oCamMD: cCamara; oL: cLaser; oM: cMisil; oMD: cMisilDirigido; oLista: cLista; proy: tPProy; i, j: integer; // Contador f: text; // Archivo de texto en el que se almacena la informacion. begin randomize; // Cambia la semilla del generador de numeros aleatorios oEspacio := cEspacio.create; oNavePropia := oEspacio.mGetNavePropia; oMD := cMisilDirigido.create( oNavePropia, cVector.create( 30, -15, -50 ) ); oM := cMisil.create( cVector.create( 170, 0, 0 ), cVector.create( -1, 0, 0 ) ); oL := cLaser.create( cVector.create( 30, 0, 0 ), cVector.create( -1, 0, 0 ) ); oCamM := cCamara.create( oM ); oCamMD := cCamara.create( oMD ); oCamNP := cCamara.create( oNavePropia ); oEspacio.mAgregarObjeto( oMD ); oEspacio.mAgregarObjeto( cMisilDirigido.create( oNavePropia, cVector.create( -15, 40, 50 ) ) ); oEspacio.mAgregarObjeto( oL ); oEspacio.mAgregarObjeto( cLaser.create( cVector.create( 50, 0, 0 ), cVector.create( -1, 0, 0 ) ) ); oEspacio.mAgregarObjeto( cLaser.create( cVector.create( 100, 0, 0 ), cVector.create( -1, 0, 0 ) ) ); oEspacio.mAgregarObjeto( cLaser.create( cVector.create( 130, 0, 0 ), cVector.create( -1, 0, 0 ) ) ); oEspacio.mAgregarObjeto( cLaser.create( cVector.create( 160, 0, 0 ), cVector.create( -1, 0, 0 ) ) ); oEspacio.mAgregarObjeto( cMisil.create( cVector.create( 40, 0, 0 ), cVector.create( -1, 0, 0 ) ) ); oEspacio.mAgregarObjeto( oM ); // Inicializa el archivo de texto assignFile( f, 'dump.txt' ); rewrite( f ); // Imprime la informacion del estado del espacio en este instante write( f, oEspacio.mGetDebugInfo( DI_MAXI ) ); write( f, #13 + #10 + '====================> 0 <======================' + #13 + #10 ); // Hace que corra el tiempo en el espacio 100 * aDeltaT segundos. for i := 1 to 100 do begin oEspacio.mActualizar; // Actualiza el Espacio // Verifica que la nave propia siga viva if oEspacio.mNavePropiaDestruida then begin // No esta en la lista... writeln( f, 'GAME OVER!!!!' ); break; // Si se quita este break se continua con el vuleco de informacion de los instantes posteriores a la // destruccion de la nave propia end; // Imprime la informacion del estado del espacio en este instante writeln( f, oEspacio.mGetDebugInfo( DI_NORMAL ) ); // Imprime la data de la camara oLista := oCamNP.mProcesar( oEspacio.mGetObjetos ); for j := 0 to oLista.Count - 1 do begin // recorre la lista proy := tPProy( oLista.Items[j] ); // Castea el puntero writeln( f, proy^.oOV.ClassName, ': ', proy^.oOV.mGetDebugInfo + ', ', proy^.x:10:4, ', ', proy^.y:10:4, ', ', proy^.tam:10:4 ); end; oLista.free; write( f, #13 + #10 + '====================> ' + IntToStr( i ) + ' <======================' + #13 + #10 ); end; // Cierra el archivo close( f ); end.