First commit 11/11/1991
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								EGAVGA.BGI
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								EGAVGA.BGI
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										341
									
								
								FREC.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										341
									
								
								FREC.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,341 @@
 | 
				
			|||||||
 | 
					#include <math.h>		// Para getch();
 | 
				
			||||||
 | 
					#include <dos.h>		// Para getch();
 | 
				
			||||||
 | 
					#include <stdio.h>		// Para getch();
 | 
				
			||||||
 | 
					#include <conio.h>		// Para getch();
 | 
				
			||||||
 | 
					#include <graphics.h>		// Para outtextxy(...); y cleardevice(...);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "..\libs\make_bot\make_bot.h"		// Fuciones de MAKE_BOTON
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define LINEFREC      2
 | 
				
			||||||
 | 
					#define MatrizPoint  56
 | 
				
			||||||
 | 
					#define BackGRID      0
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					#define GRID_Y 6
 | 
				
			||||||
 | 
					#define GRID_X 6
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					#define GRID_Y 4
 | 
				
			||||||
 | 
					#define GRID_X 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PriGRID_Y 247
 | 
				
			||||||
 | 
					#define PriGRID_X  11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  int x, y;
 | 
				
			||||||
 | 
					  char ndigitos;
 | 
				
			||||||
 | 
					  char AX, AY;
 | 
				
			||||||
 | 
					  char C1, C2, C3;
 | 
				
			||||||
 | 
					 } p_graphics;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern void Carga_Puntero(void);
 | 
				
			||||||
 | 
					extern int Numero_Digital( long numero,  p_graphics *ND );
 | 
				
			||||||
 | 
					extern void Fuente_Amplia( char *Frase, p_graphics *FA );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int Espera_TeclaRatonFrec(void);
 | 
				
			||||||
 | 
					//((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1), ( y_raton - ( PriGRID_Y - 8 ) )/GRID_Y )
 | 
				
			||||||
 | 
					int PerfilX[4096];
 | 
				
			||||||
 | 
					int oldPerfilX, oldPerfilY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TrazaPerfiles(void);
 | 
				
			||||||
 | 
					void TrazaGrafica(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char cruz = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main(void){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 p_graphics Numeros = { 20,  20,  6, 3, 3, EGA_RED,   EGA_BLACK, EGA_DARKGRAY };
 | 
				
			||||||
 | 
					 p_graphics Letras  = { 15, 102, 14, 1, 1, EGA_BLACK, EGA_RED,   EGA_DARKGRAY };
 | 
				
			||||||
 | 
					 char Buffer[80];
 | 
				
			||||||
 | 
					 int numero=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 float num = 0;
 | 
				
			||||||
 | 
					 for ( numero=0; numero < 640; numero++ )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
								num += 0.5;
 | 
				
			||||||
 | 
								PerfilX[ numero ] = 15 + 10*sin( num );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Initialize( 9, 2 ); 		          // Inicializa el Modo Gr<47>fico
 | 
				
			||||||
 | 
					// carga_botones("Frec.img");               // Carga botones del fichero "Frec.img"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Imprime_Estaticos( 1, "Frec.img");     // Imprime botones estaticos 'Seccion 1'
 | 
				
			||||||
 | 
					 /// Dibujamos la malla
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 TrazaGrafica();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 PunteroRaton = 1;
 | 
				
			||||||
 | 
					 inicializa_raton_grafico( 0, 0, 640, 480 );
 | 
				
			||||||
 | 
					 float vez=1, numerof=0;
 | 
				
			||||||
 | 
					 while( 1 )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
						Espera_TeclaRatonFrec();
 | 
				
			||||||
 | 
						if ( cruz == 0 ) Anclar_Raton();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//      if ( y_raton >= (PriGRID_Y -  8) ) numero = 10101;
 | 
				
			||||||
 | 
						Numero_Digital( numerof,  &Numeros );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 /*********************************************************************************************************\
 | 
				
			||||||
 | 
					|***/ oldPerfilX = PerfilX[ ((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1) ];                               /*|
 | 
				
			||||||
 | 
					|**/  oldPerfilY = ((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1);                                         /**|
 | 
				
			||||||
 | 
					|*/   PerfilX[ ((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1) ] = ( y_raton - ( PriGRID_Y - 8 ) )/GRID_Y; /***|
 | 
				
			||||||
 | 
					 \*********************************************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						TrazaPerfiles();
 | 
				
			||||||
 | 
						switch ((int)(vez))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						 case 1:
 | 
				
			||||||
 | 
							sprintf( Buffer, "X: %2d, Y: %2d |", ((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1), ( y_raton - ( PriGRID_Y - 8 ) )/GRID_Y );
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						 case 2:
 | 
				
			||||||
 | 
							sprintf( Buffer, "X: %2d, Y: %2d |", ((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1), ( y_raton - ( PriGRID_Y - 8 ) )/GRID_Y );
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						 case 3:
 | 
				
			||||||
 | 
							sprintf( Buffer, "X: %2d, Y: %2d |", ((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1), ( y_raton - ( PriGRID_Y - 8 ) )/GRID_Y );
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						 case 4:
 | 
				
			||||||
 | 
							sprintf( Buffer, "X: %2d, Y: %2d |", ((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1), ( y_raton - ( PriGRID_Y - 8 ) )/GRID_Y );
 | 
				
			||||||
 | 
							vez = 1;
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if ( (int(vez*100))%100 == 0 )
 | 
				
			||||||
 | 
							Fuente_Amplia( Buffer, &Letras );
 | 
				
			||||||
 | 
						vez+=1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if( kbhit() )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   switch( getch() )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					    case '+':
 | 
				
			||||||
 | 
							numerof += 0.05;
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					    case '-':
 | 
				
			||||||
 | 
							numerof -= 0.05;
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					    case 27:
 | 
				
			||||||
 | 
							restorecrtmode();
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   num = 0;
 | 
				
			||||||
 | 
					   for ( numero=0; numero < 640; numero++ )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
								num += numerof;
 | 
				
			||||||
 | 
								PerfilX[ numero ] = 15 + 10*sin( num );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  TrazaGrafica();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					// Imprime_Secuencia(1);		          // Imprime secuencia 1.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					while(1){				  // Bucle infinito
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 switch( Comprueba_Secuencia( 1 ) ) {     // Iniciamos comprobacion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       case  0:				  // No se pulso ningun BOTON
 | 
				
			||||||
 | 
						       while( kbhit() ) getch();  // Limpiamos posibles teclas en BUFFER
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       case -1:				  // Hay una tecla especial en BUFFER
 | 
				
			||||||
 | 
						       getch();			  // La eliminamos
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       case  1:
 | 
				
			||||||
 | 
						       Ayuda();
 | 
				
			||||||
 | 
						       cleardevice();
 | 
				
			||||||
 | 
						       Imprime_Estaticos( 1, "botones.p1"); // Devolvemos el aspecto inicial
 | 
				
			||||||
 | 
						       Imprime_Secuencia(1);
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       case  2:
 | 
				
			||||||
 | 
						       restorecrtmode();
 | 
				
			||||||
 | 
						       return 0;
 | 
				
			||||||
 | 
					       default:
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					getch();
 | 
				
			||||||
 | 
					restorecrtmode();
 | 
				
			||||||
 | 
					return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int Espera_TeclaRatonFrec(void){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 char Que;
 | 
				
			||||||
 | 
					 int  bot_izq, bot_der;
 | 
				
			||||||
 | 
					  activa_raton();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 //char cruz = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  do{
 | 
				
			||||||
 | 
					      asm  mov AX, 3
 | 
				
			||||||
 | 
					      asm  int 0x33
 | 
				
			||||||
 | 
					      asm  mov x_raton, cx
 | 
				
			||||||
 | 
					      asm  mov y_raton, dx
 | 
				
			||||||
 | 
					      asm  mov bot_izq, bx
 | 
				
			||||||
 | 
					      asm  mov bot_der, bx
 | 
				
			||||||
 | 
					      bot_izq =  bot_izq & 1;
 | 
				
			||||||
 | 
					      bot_der = (bot_izq >> 1 ) & 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if ( y_raton >= (PriGRID_Y -  8) )
 | 
				
			||||||
 | 
					       {
 | 
				
			||||||
 | 
						if ( !cruz ) {
 | 
				
			||||||
 | 
								cruz = 1;
 | 
				
			||||||
 | 
								PunteroRaton = 2;
 | 
				
			||||||
 | 
								Carga_Puntero();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ( ( (x_raton - (PriGRID_X-1) )%GRID_X ) >= GRID_X/2 && ( ( (x_raton - PriGRID_X)%GRID_X ) != 0 ) )
 | 
				
			||||||
 | 
								x_raton +=  (GRID_X - ( (x_raton - (PriGRID_X-1))%GRID_X ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
								x_raton -= ( ( (x_raton - (PriGRID_X-1))%GRID_X ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								y_raton = PriGRID_Y -  8;
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ( x_raton > 622 )
 | 
				
			||||||
 | 
					 x_raton = 622; else
 | 
				
			||||||
 | 
					if ( ( (x_raton - (PriGRID_X-1) )%GRID_X ) >= GRID_X/2 && ( ( (x_raton - PriGRID_X)%GRID_X ) != 0 ) )
 | 
				
			||||||
 | 
								x_raton += (GRID_X - ( (x_raton - (PriGRID_X-1))%GRID_X ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
								x_raton -= ( ( (x_raton - (PriGRID_X-1))%GRID_X ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ( y_raton > 459 )
 | 
				
			||||||
 | 
					 y_raton = 459; else
 | 
				
			||||||
 | 
					if ( ( (y_raton - ( PriGRID_Y - 8 ) )%GRID_Y ) >= GRID_Y/2 && ( ( (y_raton - ( PriGRID_Y - 8 ) )%GRID_Y ) != 0 ) )
 | 
				
			||||||
 | 
								y_raton += (GRID_Y - ( (y_raton - ( PriGRID_Y - 8 ) )%GRID_Y ) );
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
								y_raton -= ( ( (y_raton - ( PriGRID_Y - 8 ) )%GRID_Y ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						asm mov ax, 4
 | 
				
			||||||
 | 
						asm mov cx, x_raton
 | 
				
			||||||
 | 
						asm mov dx, y_raton
 | 
				
			||||||
 | 
						asm int 0x33
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       } else
 | 
				
			||||||
 | 
						if ( cruz ) {
 | 
				
			||||||
 | 
								cruz = 0;
 | 
				
			||||||
 | 
								PunteroRaton = 1;
 | 
				
			||||||
 | 
								Carga_Puntero();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }while( bot_izq == 0 && bot_izq == 0 && !MB_TeclaPulsada() );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /////////////////////////////////////////
 | 
				
			||||||
 | 
					  //     RETURN    Derecho   Izquierdo   //
 | 
				
			||||||
 | 
					  //                                     //
 | 
				
			||||||
 | 
					  //       0         0           0       //
 | 
				
			||||||
 | 
					  //       1         1           0       //
 | 
				
			||||||
 | 
					  //       2         0           1       //
 | 
				
			||||||
 | 
					  //       3         1           1       //
 | 
				
			||||||
 | 
					  //                                     //
 | 
				
			||||||
 | 
					  /////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ( bot_der ==0 && bot_izq ==0 ) Que = 0;
 | 
				
			||||||
 | 
					  if ( bot_der ==1 && bot_izq ==0 ) Que = 1;
 | 
				
			||||||
 | 
					  if ( bot_der ==0 && bot_izq ==1 ) Que = 2;
 | 
				
			||||||
 | 
					  if ( bot_der ==1 && bot_izq ==1 ) Que = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  desactiva_raton();
 | 
				
			||||||
 | 
					  return Que;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TrazaPerfiles(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 int X = x_raton+6;//((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)*GRID_X + PriGRID_X;
 | 
				
			||||||
 | 
					 int Y = y_raton+8;
 | 
				
			||||||
 | 
					 int Desde_Y, Hasta_Y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 if ( y_raton < (PriGRID_Y - 8) ) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // Calculo desde donde, hasta donde tengo que borrar para hacelerar el borrado.
 | 
				
			||||||
 | 
					 // ( esta nueva optimizaci<63>n acelera el tiempo de retardo:
 | 
				
			||||||
 | 
					 //		en el mejor caso:    un 98.4 %
 | 
				
			||||||
 | 
					 //		en el peor  caso:    un  0.0 %
 | 
				
			||||||
 | 
					 // tiempo medio acelerado ( teu:    un 6i.j %
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Desde_Y = Hasta_Y = oldPerfilX;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 if ( Hasta_Y < PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)+1] ) Hasta_Y = PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)+1]*GRID_Y+PriGRID_Y; else
 | 
				
			||||||
 | 
					 if ( Hasta_Y < PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)-1] ) Hasta_Y = PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)-1]*GRID_Y+PriGRID_Y; else
 | 
				
			||||||
 | 
					// if ( Hasta_Y = PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)-1] )
 | 
				
			||||||
 | 
					 Hasta_Y = Hasta_Y*GRID_Y+PriGRID_Y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 if ( Desde_Y > PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)+1] ) Desde_Y = PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)+1]*GRID_Y+PriGRID_Y; else
 | 
				
			||||||
 | 
					 if ( Desde_Y > PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)-1] ) Desde_Y = PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)-1]*GRID_Y+PriGRID_Y; else
 | 
				
			||||||
 | 
					 Desde_Y = Desde_Y*GRID_Y+PriGRID_Y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 setcolor( BackGRID );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // Borro las franjas adyacentes al punto perfilado:
 | 
				
			||||||
 | 
					 if ( (((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)-1) >=0 ) line( X - ( GRID_X - 1 ), PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)-1]*GRID_Y+PriGRID_Y, (X+1), oldPerfilX*GRID_Y+PriGRID_Y );
 | 
				
			||||||
 | 
					  line( (X+1), oldPerfilX*GRID_Y+PriGRID_Y, X + ( GRID_X + 1 ), PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)+1]*GRID_Y+PriGRID_Y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//      putpixel( X - ( GRID_X - 1 ), PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)-1]*GRID_Y+PriGRID_Y, MatrizPoint );
 | 
				
			||||||
 | 
					//      putpixel( (X+1), oldPerfilX*GRID_Y+PriGRID_Y, MatrizPoint );
 | 
				
			||||||
 | 
					//      putpixel( X + ( GRID_X + 1 ), PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)+1]*GRID_Y+PriGRID_Y,  MatrizPoint );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // Retrazo los puntos de la matriz anulada
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 auto int x, y;
 | 
				
			||||||
 | 
					 for( x= ( (((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)-1) >=0 ) ?
 | 
				
			||||||
 | 
												X - ( GRID_X - 1 ):
 | 
				
			||||||
 | 
												( X - 1 );
 | 
				
			||||||
 | 
										    x<=  (x_raton > 622) ?  ( X + 1 ) :
 | 
				
			||||||
 | 
										    ( X + ( GRID_X + 1 ) ); x+=GRID_X)
 | 
				
			||||||
 | 
					// /*
 | 
				
			||||||
 | 
					   for( y=Desde_Y; y<=Hasta_Y; y+=GRID_Y)
 | 
				
			||||||
 | 
					      putpixel( x, y, MatrizPoint );
 | 
				
			||||||
 | 
					 } // Destruccion de x, y
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // Ahora dibujo las lineas correspondientes al perfil izq. y derch.
 | 
				
			||||||
 | 
					 setcolor( LINEFREC );
 | 
				
			||||||
 | 
					if ( (((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)-1) >=0 ) line( X - ( GRID_X - 1 ), PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)-1]*GRID_Y+PriGRID_Y, (X+1), Y );
 | 
				
			||||||
 | 
					if ( x_raton <= 622 ) line( (X+1), Y, X + ( GRID_X + 1 ), PerfilX[((( x_raton - ( PriGRID_X - 1 ) )/GRID_X)+1)+1]*GRID_Y+PriGRID_Y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TrazaGrafica(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 int x, y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 setfillstyle( SOLID_FILL, BackGRID );
 | 
				
			||||||
 | 
					 bar( PriGRID_X, PriGRID_Y, 631, 467 );
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 for( x=PriGRID_X; x<=631; x+=GRID_X)
 | 
				
			||||||
 | 
					   for( y=PriGRID_Y; y<=467; y+=GRID_Y)
 | 
				
			||||||
 | 
					      putpixel( x, y, MatrizPoint );
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					 //for( x=6 - ( GRID_X - 1 ); x<=631; x+=GRID_X)
 | 
				
			||||||
 | 
					 for( x= ( 6 - ( 1 - PriGRID_X )%GRID_X - ( GRID_X - 1 ) ) + GRID_X; x<=631; x+=GRID_X)
 | 
				
			||||||
 | 
					   for( y=PriGRID_Y; y<=467; y+=GRID_Y)
 | 
				
			||||||
 | 
					      putpixel( x, y, MatrizPoint );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 setcolor( LINEFREC );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 for( x= ( 6 - ( 1 - PriGRID_X )%GRID_X - ( GRID_X - 1 ) ) + GRID_X; x<=631; x+=GRID_X)
 | 
				
			||||||
 | 
					 if ( (x-PriGRID_X)/GRID_X >= 0 )
 | 
				
			||||||
 | 
					  line( x, PerfilX[ (x-PriGRID_X)/GRID_X ]*GRID_Y+PriGRID_Y, x+GRID_X, PerfilX[ ( (x-PriGRID_X)/GRID_X ) + 1 ]*GRID_Y+PriGRID_Y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										20
									
								
								FREC.IMG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								FREC.IMG
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<EFBFBD>1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Cuadro de ondas
 | 
				
			||||||
 | 
					&   0, 190, 640, 480,       7, 63, 56, 2, 2
 | 
				
			||||||
 | 
					&   5, 195, 635, 235,       1, 56, 63, 1, 2
 | 
				
			||||||
 | 
					&   5, 241, 635, 475,       0, 56, 63, 1, 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Cuadro de numeros
 | 
				
			||||||
 | 
					&   0,   0, 250, 130,       7, 63, 56, 2, 2
 | 
				
			||||||
 | 
					&   8,   8, 242,  92,       0, 56, 63, 2, 2
 | 
				
			||||||
 | 
					&   8,  97, 242, 122,       0, 56, 63, 2, 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* |     397,      50,        2,  4,  0, 63, MMMMMMMMM-MMMMMMMMM-MMMMMMMMM-, 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* x y fuente tama<6D>o orientacion color texto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										123
									
								
								FREC/CREDIT.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								FREC/CREDIT.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,123 @@
 | 
				
			|||||||
 | 
					#include <graphics.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <alloc.h>
 | 
				
			||||||
 | 
					#include <conio.h>
 | 
				
			||||||
 | 
					#include <dos.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 int Ex, Ey, Ez;
 | 
				
			||||||
 | 
					 char Ecolor;
 | 
				
			||||||
 | 
					} CAMPO_de_ESTRELLAS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CAMPO_de_ESTRELLAS *Cestrellas, *o;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Actualiza(CAMPO_de_ESTRELLAS *Cest);
 | 
				
			||||||
 | 
					void Star3d(CAMPO_de_ESTRELLAS *Cest);
 | 
				
			||||||
 | 
					void pon_estrella(CAMPO_de_ESTRELLAS *Cest);
 | 
				
			||||||
 | 
					void llena_campo(CAMPO_de_ESTRELLAS *Cest);
 | 
				
			||||||
 | 
					void deinit_star(void);
 | 
				
			||||||
 | 
					void init_star(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void init_star(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  randomize();
 | 
				
			||||||
 | 
					  if ( ( Cestrellas = (CAMPO_de_ESTRELLAS *)malloc( sizeof(CAMPO_de_ESTRELLAS)*200 ) ) == NULL ) return;
 | 
				
			||||||
 | 
					  if ( ( o = (CAMPO_de_ESTRELLAS *)malloc( sizeof(CAMPO_de_ESTRELLAS)*200 ) ) == NULL ) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  llena_campo(Cestrellas);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void deinit_star(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 free( Cestrellas );
 | 
				
			||||||
 | 
					 free( o          );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void llena_campo(CAMPO_de_ESTRELLAS *Cest)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 int estrellas;
 | 
				
			||||||
 | 
					 for ( estrellas = 0; estrellas < 200; estrellas++ )
 | 
				
			||||||
 | 
					                                                pon_estrella( &Cest[estrellas] );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void pon_estrella(CAMPO_de_ESTRELLAS *Cest)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Cest -> Ex = random(320)+1;
 | 
				
			||||||
 | 
					  Cest -> Ey = random(240)+1;
 | 
				
			||||||
 | 
					  Cest -> Ez = 400          ;
 | 
				
			||||||
 | 
					  Cest -> Ecolor = EGA_WHITE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Star3d(CAMPO_de_ESTRELLAS *Cest)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Star3d( Cestrellas );
 | 
				
			||||||
 | 
					  while( !kbhit() ) Actualiza(Cest);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Actualiza(CAMPO_de_ESTRELLAS *Cest)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 int Ex, Ey, conta;
 | 
				
			||||||
 | 
					 static float FactorMovimientoX = 0, FactorMovimientoY = 0, ox = 0, oy = 0;
 | 
				
			||||||
 | 
					 static float x=0.1, y=0.1;
 | 
				
			||||||
 | 
					 static char color = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 for( conta=0; conta<200; conta++ )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					if (  o[conta].Ex+ox> 10 && o[conta].Ex+ox < 635 && o[conta].Ey+oy+100 >325 && o[conta].Ey+oy+100 < 470 )
 | 
				
			||||||
 | 
					  putpixel ( o[conta].Ex+ox, o[conta].Ey+oy+100, 0 );
 | 
				
			||||||
 | 
					//  putpixel ( o[conta].Ex+ox+5, o[conta].Ey+oy+(317/2), 0 );
 | 
				
			||||||
 | 
					  Ex = ( ((256*Cest[conta].Ex)/Cest[conta].Ez))+320;
 | 
				
			||||||
 | 
					  Ey = ( ((256*Cest[conta].Ey)/Cest[conta].Ez))+320;//240;
 | 
				
			||||||
 | 
					  Cest[conta].Ez = Cest[conta].Ez - 5            ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  o[conta].Ex = Ex;
 | 
				
			||||||
 | 
					  o[conta].Ey = Ey;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					color++;
 | 
				
			||||||
 | 
					if ( color > 10 )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if ( Cest[conta].Ecolor == EGA_WHITE )
 | 
				
			||||||
 | 
					  Cest[conta].Ecolor = EGA_LIGHTGRAY;
 | 
				
			||||||
 | 
					else if ( Cest[conta].Ecolor == EGA_LIGHTGRAY )
 | 
				
			||||||
 | 
					  Cest[conta].Ecolor = EGA_DARKGRAY;
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  Cest[conta].Ecolor = EGA_WHITE;
 | 
				
			||||||
 | 
					color = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ( Ex>635 && Ey>470+100 )
 | 
				
			||||||
 | 
					                 pon_estrella ( &Cest[conta] );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ( Cest[conta].Ez <= 20  || Ex>635 || Ey>470 || Ex<5 || Ey<0 )
 | 
				
			||||||
 | 
					//  if ( Cest[conta].Ez <= 20  || Ex>635 || Ey>470 || Ex<5 || Ey<317 )
 | 
				
			||||||
 | 
					                 pon_estrella ( &Cest[conta] );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if ( Ex+FactorMovimientoX > 10 && Ex+FactorMovimientoX < 635 && Ey+FactorMovimientoY+100 >325 && Ey+FactorMovimientoY+100 < 470 )
 | 
				
			||||||
 | 
					  putpixel ( Ex+FactorMovimientoX, Ey+FactorMovimientoY+100, Cest[conta].Ecolor );
 | 
				
			||||||
 | 
					//  putpixel ( Ex+FactorMovimientoX+5, Ey+FactorMovimientoY+(317/2), Cest[conta].Ecolor );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 ox = FactorMovimientoX;
 | 
				
			||||||
 | 
					 oy = FactorMovimientoY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 FactorMovimientoX+= x;
 | 
				
			||||||
 | 
					 FactorMovimientoY+= y;
 | 
				
			||||||
 | 
					 if ( FactorMovimientoX > 100 ) x = -0.1;
 | 
				
			||||||
 | 
					 if ( FactorMovimientoX < -100 ) x =  0.1;
 | 
				
			||||||
 | 
					 if ( FactorMovimientoY > 100 ) y = -0.1;
 | 
				
			||||||
 | 
					 if ( FactorMovimientoY < -100 ) y =  0.1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								FREC/CREDIT.FLI
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								FREC/CREDIT.FLI
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										417
									
								
								FREC/DIBUJOS.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										417
									
								
								FREC/DIBUJOS.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,417 @@
 | 
				
			|||||||
 | 
					#include <graphics.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 char cargar [18] [18] =
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  14,14,14,14,14,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  14,14,14,14,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  14,14,14,14,3,0,0,0,0,0,0,0,0,0,0,0,3,3,
 | 
				
			||||||
 | 
					  14,14,14,14,14,0,1,1,1,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  14,3,14,14,14,14,1,1,1,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,14,14,14,14,0,0,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,14,14,7,7,0,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,7,7,0,1,1,0,0,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,7,7,0,1,0,7,7,0,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,0,0,0,1,0,7,7,0,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,0,0,0,1,1,0,0,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,7,7,0,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,0,0,0,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,1,1,1,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,1,1,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 char TipoOnda[][18] [18] =
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,3,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,3,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,3,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,3,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,3,3,3,14,14,3,3,3,3,3
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,14,14,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,14,14,14,14,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,14,14,14,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,14,14,14,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,14,14,14,14,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,14,14,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,14,14,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,14,14,14,14,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,14,14,14,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,14,14,14,3,3,3,3,3,3
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,14,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,14,14,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,14,14,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,14,14,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,14,14,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,14,14,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,14,14,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,14,14,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,14,14,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,14,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,14,6,3,3,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,14,14,14,14,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,14,14,14,14,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,14,14,14,14,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,14,14,14,14,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,14,14,14,14,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,14,14,14,14,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,6,3,3,14,14,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,14,14,14,14,14,14,3,3,3,3,3
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,14,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,14,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,14,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,3,6,3,3,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,14,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,3,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,3,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,14,14,14,14,14,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,3,14,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,14,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,14,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,14,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,3,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,3,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,14,14,14,14,14,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,3,14,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,14,14,14,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,14,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,14,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,14,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,3,14,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,14,14,14,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,14,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,14,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,14,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,3,14,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,14,14,14,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,14,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,3,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,3,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,3,3,3,4,3,3,14,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,3,14,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,14,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,14,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,14,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,3,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,3,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,3,3,3,4,3,3,14,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,3,14,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,14,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,14,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,14,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,3,14,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,14,3,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,14,4,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,14,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,14,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,3,3,3,4,3,14,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,3,3,4,3,3,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,14,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,14,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,3,14,14,14,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,14,14,3,3,3,6,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					   3,3,3,3,14,14,14,3,6,3,3,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 char flecha [18] [18] =
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,0,4,0,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,0,4,4,4,0,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,4,4,4,4,4,4,4,0,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,0,4,4,4,4,4,4,4,4,4,0,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,0,4,4,4,4,4,4,4,4,4,4,4,0,3,3,
 | 
				
			||||||
 | 
					  3,3,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,0,0,0,0,0,0,3,3,3,3,3
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 char salvar[18] [18] =
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  3,14,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  14,14,14,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  14,14,14,14,3,3,14,0,0,0,0,0,0,0,0,0,3,3,
 | 
				
			||||||
 | 
					  3,14,14,14,14,14,14,1,1,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,14,14,14,14,14,1,1,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,14,14,14,14,14,0,0,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,14,14,14,14,14,14,7,0,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,7,7,0,1,1,0,0,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,7,7,0,1,0,7,7,0,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,0,0,0,1,0,7,7,0,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,0,0,0,1,1,0,0,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,7,7,0,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,0,0,0,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,1,1,1,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,1,1,1,1,1,1,1,1,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 char salir [18] [18] =
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,8,8,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,8,0,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,0,4,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,4,4,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,4,4,4,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,4,4,0,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,4,4,0,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,3,3,0,4,4,0,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,3,0,4,4,0,15,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,3,0,4,4,0,15,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,3,0,4,4,0,15,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,0,4,4,4,0,15,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,0,4,4,0,15,15,0,8,0,15,15,15,15,15,0,
 | 
				
			||||||
 | 
					  3,3,3,0,4,4,0,0,0,0,8,0,0,0,0,0,0,0,
 | 
				
			||||||
 | 
					  3,3,3,0,4,0,7,7,0,8,0,7,7,7,7,7,0,3,
 | 
				
			||||||
 | 
					  3,3,0,4,0,7,7,0,8,0,7,7,7,7,7,0,3,3,
 | 
				
			||||||
 | 
					  3,3,0,0,0,0,0,8,0,7,7,7,7,7,0,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,0,0,0,0,0,0,0,0,3,3,3,3
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 char led_off [18] [18] =
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  3,3,3,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,0,7,7,7,7,0,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,0,7,4,12,12,4,7,0,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  0,7,4,12,4,4,4,4,8,0,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  0,7,4,4,4,4,4,4,8,0,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  0,7,4,4,4,4,4,12,8,0,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  0,7,4,4,4,4,12,12,8,0,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,0,8,4,12,12,12,8,0,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,0,8,8,8,8,0,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 char help [18] [18] =
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,0,4,4,4,4,0,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,0,4,4,4,4,4,0,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  0,4,4,4,0,4,4,0,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  0,4,4,0,3,0,0,3,3,3,3,3,0,0,3,3,3,0,
 | 
				
			||||||
 | 
					  0,4,4,0,3,3,3,3,3,3,3,0,4,4,0,3,0,4,
 | 
				
			||||||
 | 
					  0,4,4,0,3,3,3,3,3,3,0,4,4,4,0,3,0,4,
 | 
				
			||||||
 | 
					  0,4,4,0,3,3,3,3,3,0,4,4,0,0,3,3,3,0,
 | 
				
			||||||
 | 
					  0,4,4,4,0,3,3,3,0,4,4,0,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,0,4,4,4,0,0,0,4,4,0,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,0,4,4,4,4,4,4,0,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,0,4,4,4,4,0,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,0,0,0,0,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 char CREDITS [18] [18] =
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,0,4,4,4,4,4,4,4,4,0,0,3,3,3,0,0,3,
 | 
				
			||||||
 | 
					  0,4,4,4,4,4,4,4,4,4,4,4,0,3,0,4,4,0,
 | 
				
			||||||
 | 
					  0,4,4,4,4,4,4,4,4,4,4,4,0,3,0,4,4,0,
 | 
				
			||||||
 | 
					  3,0,4,4,4,4,4,4,4,4,0,0,3,3,3,0,0,3,
 | 
				
			||||||
 | 
					  3,3,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 char led_on [18] [18] =
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  3,3,3,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,0,7,7,7,7,0,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,0,7,11,13,13,11,7,0,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  0,7,11,13,11,11,11,11,8,0,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  0,7,11,11,11,11,11,11,8,0,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  0,7,11,11,11,11,11,13,8,0,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  0,7,11,11,11,11,13,13,8,0,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,0,8,11,13,13,13,8,0,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,0,8,8,8,8,0,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
 | 
				
			||||||
 | 
					  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ponicono(int x,int y,char matriz[18][18], char pos)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 int veces1,veces2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 for (veces1=0;veces1<=17;veces1++)
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					     for (veces2=0;veces2<=17;veces2++)
 | 
				
			||||||
 | 
						 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          switch( pos )
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					           case 1:
 | 
				
			||||||
 | 
					                   if ( matriz[veces1][veces2] != 3 )
 | 
				
			||||||
 | 
					           	    putpixel(x+veces1,y+veces2,matriz[veces1][veces2]);
 | 
				
			||||||
 | 
					                   break;
 | 
				
			||||||
 | 
					           case 2:
 | 
				
			||||||
 | 
					                   if ( matriz[17-veces2][veces1] != 3 )
 | 
				
			||||||
 | 
					           	    putpixel(x+veces1,y+veces2,matriz[17-veces2][veces1]);
 | 
				
			||||||
 | 
					                   break;
 | 
				
			||||||
 | 
					           case 3:
 | 
				
			||||||
 | 
					                   if ( matriz[17-veces1][veces2] != 3 )
 | 
				
			||||||
 | 
					           	    putpixel(x+veces1,y+veces2,matriz[17-veces1][veces2]);
 | 
				
			||||||
 | 
					                   break;
 | 
				
			||||||
 | 
					           case 4:
 | 
				
			||||||
 | 
					                   if ( matriz[veces2][veces1] != 3 )
 | 
				
			||||||
 | 
					           	    putpixel(x+veces1,y+veces2,matriz[veces2][veces1]);
 | 
				
			||||||
 | 
					                   break;
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
						 }
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										17
									
								
								FREC/DIBUJOS.H
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								FREC/DIBUJOS.H
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					#define MODULO extern
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MODULO      char CREDITS [18] [18];
 | 
				
			||||||
 | 
					MODULO      char help    [18] [18];
 | 
				
			||||||
 | 
					MODULO      char led_on  [18] [18];
 | 
				
			||||||
 | 
					MODULO      char led_off [18] [18];
 | 
				
			||||||
 | 
					MODULO      char salir   [18] [18];
 | 
				
			||||||
 | 
					MODULO      char salvar  [18] [18];
 | 
				
			||||||
 | 
					MODULO      char cargar  [18] [18];
 | 
				
			||||||
 | 
					MODULO      char flecha  [18] [18];
 | 
				
			||||||
 | 
					MODULO      char TipoOnda [11] [18] [18];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#undef MODULO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ponicono(int x,int y,char matriz[18][18], char pos);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								FREC/EGAVGA.BGI
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								FREC/EGAVGA.BGI
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								FREC/FREC.DSK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								FREC/FREC.DSK
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								FREC/FREC.EXE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								FREC/FREC.EXE
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										64
									
								
								FREC/FREC.H
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								FREC/FREC.H
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,64 @@
 | 
				
			|||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					    #define __CPPARGS ...
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    #define __CPPARGS
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define INTR                           0X1C    /* The clock tick interrupt */
 | 
				
			||||||
 | 
					#define OK                                1
 | 
				
			||||||
 | 
					#define ERROR                            -1
 | 
				
			||||||
 | 
					#define oAnchoVentana                   626
 | 
				
			||||||
 | 
					#define oAltoVentana                    156
 | 
				
			||||||
 | 
					#define oVentanas                         5
 | 
				
			||||||
 | 
					#define oFinalOnda                        oAnchoVentana * oVentanas
 | 
				
			||||||
 | 
					#define inicioMGx                         7
 | 
				
			||||||
 | 
					#define inicioMGy                       127
 | 
				
			||||||
 | 
					#define GRANDEo				  1
 | 
				
			||||||
 | 
					#define MINIo				  0
 | 
				
			||||||
 | 
					#define alcanceRatonY                   292
 | 
				
			||||||
 | 
					#define alcanceRatonX                   626
 | 
				
			||||||
 | 
					#define factorCorreccionRatonY           -9
 | 
				
			||||||
 | 
					#define mAltoCuadro                      20
 | 
				
			||||||
 | 
					#define inicioMmGy                      290
 | 
				
			||||||
 | 
					#define ON                                1
 | 
				
			||||||
 | 
					#define OFF                               0
 | 
				
			||||||
 | 
					#define Salvar                            1
 | 
				
			||||||
 | 
					#define Cargar                            2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					       // N<>'s grandes
 | 
				
			||||||
 | 
					  char nBorde, nRelleno, nFondo,
 | 
				
			||||||
 | 
					       // Letras digitales
 | 
				
			||||||
 | 
					       lFondo, lLetra,
 | 
				
			||||||
 | 
					       // Onda osciloscopio
 | 
				
			||||||
 | 
					       oMatrix, oOnda, oSelect,
 | 
				
			||||||
 | 
					       // Onda Generada
 | 
				
			||||||
 | 
					       gMatrix, gOnda,
 | 
				
			||||||
 | 
					       // Cuadro MiniOnda
 | 
				
			||||||
 | 
					       mOnda, mFondo, mMarco,
 | 
				
			||||||
 | 
					       // Textos
 | 
				
			||||||
 | 
					       Texto, F_Texto, VisorLCD;
 | 
				
			||||||
 | 
					} CFG_FREC;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern CFG_FREC cfgFREC;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  int x, y;
 | 
				
			||||||
 | 
					  char ndigitos;
 | 
				
			||||||
 | 
					  char AX, AY;
 | 
				
			||||||
 | 
					  char C1, C2, C3;
 | 
				
			||||||
 | 
					 } p_graphics;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern p_graphics Numeros;
 | 
				
			||||||
 | 
					extern p_graphics Letras;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern void Carga_Puntero (void);
 | 
				
			||||||
 | 
					extern char Optar( char *texto1, char *texto2, char *texto3 );
 | 
				
			||||||
 | 
					extern char file_browser( char *comodin_name, char *texto1, char Cargar_Salvar );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int  Numero_Digital( long numero,  p_graphics *ND );
 | 
				
			||||||
 | 
					extern void Fuente_Amplia( char *Frase, p_graphics *FA );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int statusBoton;
 | 
				
			||||||
							
								
								
									
										280
									
								
								FREC/FREC.IMG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										280
									
								
								FREC/FREC.IMG
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,280 @@
 | 
				
			|||||||
 | 
					*
 | 
				
			||||||
 | 
					* ATENCION, ESTE ES EL C<>DIGO FUENTE DE MIS LIBRERIAS PARA GENERAR FONDOS
 | 
				
			||||||
 | 
					*           Y PULSADORES.
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					*           VERSION DEL CODIGO COMPILABLE EN TIEMPO DE EJECUCION
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					*           UTILICE EL PROGRAMA MK_BOTON.EXE PARA CONVERTIR A C++    
 | 
				
			||||||
 | 
					*           Y COMPILARLO JUNTO AL CODIGO FUENTE DE LA APLICACION.    
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					* El autor de este programa vende LAS LIBRERIAS que el mismo a fabricado
 | 
				
			||||||
 | 
					* y con las que estan ello este programa:
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					*  MAKE_BOTON           5.000 ptas  ( Crea Pulsadores y FX's sin esfuerzo   )
 | 
				
			||||||
 | 
					*  WAVE_GENER           5.000 ptas  ( Muestreador y retocador completo      )
 | 
				
			||||||
 | 
					*  FX_PACK              5.000 ptas  ( N<>s Grandes, Letras Despl, MouseP...  )
 | 
				
			||||||
 | 
					*  WAVE_PLAY            3.500 ptas  ( Librerias de reproducci<63>n de waves
 | 
				
			||||||
 | 
					*                                      de hasta 32 TeraBytes con solo 8 Kb  )
 | 
				
			||||||
 | 
					*  XMS_MEMMGR           3.500 ptas  ( Clase para manejar la XMS             )
 | 
				
			||||||
 | 
					*  B_DATOS              5.000 ptas  ( Clase  " la gestion de bases de datos )
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					*    <20>---> 15.000 <---<2D>---> 15.000 <---<2D>---> 15.000 <---<2D>---> 15.000 <---<2D>
 | 
				
			||||||
 | 
					*    <20>---> 15.000 <---<2D>      TODO EL KIT POR SOLO       <20>---> 15.000 <---<2D>
 | 
				
			||||||
 | 
					*    <20>---> 15.000 <---<2D>---> 15.000 <---<2D>---> 15.000 <---<2D>---> 15.000 <---<2D>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
					* <20>                                                                      <20>
 | 
				
			||||||
 | 
					* <20>                         Pantalla Principal                           <20>
 | 
				
			||||||
 | 
					* <20>                                                                      <20>
 | 
				
			||||||
 | 
					* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<EFBFBD>1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Cuadro de ondas
 | 
				
			||||||
 | 
					&   0, 120, 640, 480,       7, 63, 56, 2, 2
 | 
				
			||||||
 | 
					&   5, 125, 635, 284,       0, 56, 63, 1, 2
 | 
				
			||||||
 | 
					&   5, 288, 635, 313,       1, 56, 63, 1, 2
 | 
				
			||||||
 | 
					&   5, 317, 635, 475,       0, 56, 63, 1, 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Cuadro de numeros
 | 
				
			||||||
 | 
					&   0,   0, 240, 120,       7, 63, 56, 2, 2
 | 
				
			||||||
 | 
					&   8,   8, 232,  82,       0, 56, 63, 2, 2
 | 
				
			||||||
 | 
					&   8,  87, 232, 112,       0, 56, 63, 2, 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Cuadro de Botone
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					*       COMIENZA EL JUEGO... ( JD EL GENIO DE GENIOS... )
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!1, 33
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Boton Seleccion Generador/Osciloscopio
 | 
				
			||||||
 | 
					$ 240,   0, 315,  24,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					 * Boton ejecutar accion GENERAR/OBTENER onda
 | 
				
			||||||
 | 
					 $ 315,   0, 340,  24,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					* ????????????????????????????????????
 | 
				
			||||||
 | 
					$ 240,  24, 315,  48,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					 * ????????????????????????????????????
 | 
				
			||||||
 | 
					 $ 315,  24, 340,  48,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Boton Salvar
 | 
				
			||||||
 | 
					$ 240,  48, 340,  72,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					* Boton Cargar
 | 
				
			||||||
 | 
					$ 240,  72, 340,  96,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Boton Salir
 | 
				
			||||||
 | 
					$ 240,  96, 340, 120,       7, 63, 56, 2, 2, 83, 00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Boton Ayuda on-Line
 | 
				
			||||||
 | 
					$ 340,   0, 365,  30,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					* Boton Creditos
 | 
				
			||||||
 | 
					$ 340,  30, 365,  60,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					* Boton REGISTRO / MI LICENCIA
 | 
				
			||||||
 | 
					$ 340,  60, 365, 120,       7, 63, 56, 2, 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Cuadro/Boton Amplitud
 | 
				
			||||||
 | 
					& 540,   0, 615,  24,       7, 63, 56, 2, 2
 | 
				
			||||||
 | 
					 $ 542,   2, 613,  22,       0, 56, 63, 2, 2, 00, 00
 | 
				
			||||||
 | 
					& 540,  24, 615,  48,       7, 63, 56, 2, 2
 | 
				
			||||||
 | 
					 $ 542,  26, 613,  46,       0, 56, 63, 2, 2, 00, 00
 | 
				
			||||||
 | 
					* Cuadro/Boton unidad
 | 
				
			||||||
 | 
					& 611,   0, 640,  24,       7, 63, 56, 2, 2
 | 
				
			||||||
 | 
					 $ 613,   2, 638,  22,       0, 56, 63, 2, 2, 00, 00
 | 
				
			||||||
 | 
					& 611,  24, 640,  48,       7, 63, 56, 2, 2
 | 
				
			||||||
 | 
					 $ 613,  26, 638,  46,       0, 56, 63, 2, 2, 00, 00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Botones de cursor y acciones mas precisas para estos
 | 
				
			||||||
 | 
					        *
 | 
				
			||||||
 | 
					        $ 615,  48, 640,  72,       7, 63, 56, 2, 2, 00, 73
 | 
				
			||||||
 | 
					        * --------->>>>>>       Flecha derecha
 | 
				
			||||||
 | 
					        $ 615,  72, 640,  96,       7, 63, 56, 2, 2, 00, 77
 | 
				
			||||||
 | 
					        * Marcar Parte de la onda
 | 
				
			||||||
 | 
					        $ 615,  96, 640, 120,       7, 63, 56, 2, 2, 00, 81
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        * ^^^^^                 Flecha arriba
 | 
				
			||||||
 | 
					        $ 590,  48, 615,  72,       7, 63, 56, 2, 2, 00, 72
 | 
				
			||||||
 | 
					        * Centrar cero
 | 
				
			||||||
 | 
					        $ 590,  72, 615,  96,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					        * \/ \/ \/ \/ \/        Flecha abajo
 | 
				
			||||||
 | 
					        $ 590,  96, 615, 120,       7, 63, 56, 2, 2, 00, 80
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        *
 | 
				
			||||||
 | 
					        $ 565,  48, 590,  72,       7, 63, 56, 2, 2, 00, 71
 | 
				
			||||||
 | 
					        * <<<<<<--------        Flecha izquierda
 | 
				
			||||||
 | 
					        $ 565,  72, 590,  96,       7, 63, 56, 2, 2, 00, 75
 | 
				
			||||||
 | 
					        * Ground ( Tierra )
 | 
				
			||||||
 | 
					        $ 565,  96, 590, 120,       7, 63, 56, 2, 2, 00, 79
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Selecciona la onda completa
 | 
				
			||||||
 | 
					$ 540,  48, 565, 120,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Creacion de onda predefinida
 | 
				
			||||||
 | 
					        * Estancar proceso
 | 
				
			||||||
 | 
					        $ 365,   0, 395,  24,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					        * Retroceder tipo de onda
 | 
				
			||||||
 | 
					        $ 395,   0, 424,  24,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					        * Onda pred. 1, 2, 3
 | 
				
			||||||
 | 
					        $ 424,   0, 453,  24,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					        $ 453,   0, 482,  24,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					        $ 482,   0, 511,  24,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					        * Avanzar tipo de onda
 | 
				
			||||||
 | 
					        $ 511,   0, 540,  24,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$ 365,  24, 424,  48,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					$ 424,  24, 482,  48,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					*
 | 
				
			||||||
 | 
					$ 482,  24, 540,  48,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* |     397,      50,        2,  4,  0, 63, MMMMMMMMM-MMMMMMMMM-MMMMMMMMM-,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<EFBFBD>2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					|     240,      50,        2,  6,  0, 63,    Salvar,
 | 
				
			||||||
 | 
					|     241,      51,        2,  6,  0,  0,    Salvar,
 | 
				
			||||||
 | 
					|     240,      74,        2,  6,  0, 63,    Cargar,
 | 
				
			||||||
 | 
					|     241,      75,        2,  6,  0,  0,    Cargar,
 | 
				
			||||||
 | 
					|     240,      98,        2,  6,  0, 63,    Salir,
 | 
				
			||||||
 | 
					|     241,      99,        2,  6,  0,  0,    Salir,
 | 
				
			||||||
 | 
					 |     240,      99,        2,  6,  0, 63,    _,
 | 
				
			||||||
 | 
					 |     241,     100,        2,  6,  0,  0,    _,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					|     614,     108,        2,  2,  0, 63,  Marca,
 | 
				
			||||||
 | 
					|     615,     109,        2,  2,  0,  0,  Marca,
 | 
				
			||||||
 | 
					|     563,     107,        2,  4,  0, 63,  GND,
 | 
				
			||||||
 | 
					|     564,     108,        2,  4,  0,  0,  GND,
 | 
				
			||||||
 | 
					|     382,       1,        2,  4,  1, 63, CRT,
 | 
				
			||||||
 | 
					|     383,       2,        2,  4,  1,  0, CRT,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!2, 1
 | 
				
			||||||
 | 
					$  204, 274, 276, 291,       7,  56,  63,  -2,  1, 00, 30
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
					* <20>                                                                      <20>
 | 
				
			||||||
 | 
					* <20>         Casilla de pregunta ( OPTAR por....  ACEPTAR CANCELAR        <20>
 | 
				
			||||||
 | 
					* <20>                                                                      <20>
 | 
				
			||||||
 | 
					* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<EFBFBD>100
 | 
				
			||||||
 | 
					&  200, 212, 440, 267,       7,  56,  63,  2,  1
 | 
				
			||||||
 | 
					&  205, 217, 435, 262,       7,  63,  56, -2,  1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Boton Aceptar
 | 
				
			||||||
 | 
					&  200, 270, 280, 295,       7,  63,  56,  2,  1
 | 
				
			||||||
 | 
					* Boton Cancelar
 | 
				
			||||||
 | 
					&  360, 270, 440, 295,       7,  63,  56,  2,  1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<EFBFBD>101
 | 
				
			||||||
 | 
					|       200,      274,       2,  5, 0,   63,   Aceptar,
 | 
				
			||||||
 | 
					|       201,      275,       2,  5, 0,    0,   Aceptar,
 | 
				
			||||||
 | 
					 |       200,      274,       2,  5, 0,   14,   A,
 | 
				
			||||||
 | 
					 |       201,      275,       2,  5, 0,    0,   A,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					|       340,      274,       2,  5, 0,   63,     Cancelar,
 | 
				
			||||||
 | 
					|       341,      275,       2,  5, 0,    0,     Cancelar,
 | 
				
			||||||
 | 
					 |       340,      274,       2,  5, 0,   14,     C,
 | 
				
			||||||
 | 
					 |       341,      275,       2,  5, 0,    0,     C,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!3, 2
 | 
				
			||||||
 | 
					* Boton Aceptar
 | 
				
			||||||
 | 
					$  204, 274, 276, 291,       7,  56,  63,  -2,  1, 00, 30
 | 
				
			||||||
 | 
					* Boton Cancelar
 | 
				
			||||||
 | 
					$  364, 274, 436, 291,       7,  56,  63,  -2,  1, 00, 46
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
					* <20>                                                                      <20>
 | 
				
			||||||
 | 
					* <20>                              File Browser                            <20>
 | 
				
			||||||
 | 
					* <20>                                                                      <20>
 | 
				
			||||||
 | 
					* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					!4, 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*Cuadro Cancelar
 | 
				
			||||||
 | 
					$  377, 169, 391, 221,       7,  56,  63,  0,  1, 00, 46
 | 
				
			||||||
 | 
					*Boton Aceptar
 | 
				
			||||||
 | 
					$  377, 223, 391, 276,       7,  56,  63,  0,  1, 00, 30
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Subir
 | 
				
			||||||
 | 
					$  377, 278, 391, 303,       7,  56,  63,  0,  1, 00, 72
 | 
				
			||||||
 | 
					* Bajar
 | 
				
			||||||
 | 
					$  377, 305, 391, 330,       7,  56,  63,  0,  1, 00, 80
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* x y fuente tama<6D>o orientacion color texto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Men<65> para Cargar o Salvar
 | 
				
			||||||
 | 
					<EFBFBD>10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*Cuadro Total
 | 
				
			||||||
 | 
					&  240, 140, 400, 340,       7,  63,  56,  2,  1
 | 
				
			||||||
 | 
					&  243, 143, 397, 337,       7,  56,  63, -2,  1
 | 
				
			||||||
 | 
					*Cuadro Informativo
 | 
				
			||||||
 | 
					&  250, 150, 391, 164,       7,  56,  63, -0,  1
 | 
				
			||||||
 | 
					*Cuadro introduccion nuevos datos
 | 
				
			||||||
 | 
					&  250, 169, 375, 180,       0,  56,  63,  0,  1
 | 
				
			||||||
 | 
					*Cuadro de muestreo
 | 
				
			||||||
 | 
					&  250, 185, 375, 330,       0,  56,  63,  0,  1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*Cuadro Cancelar
 | 
				
			||||||
 | 
					&  377, 169, 391, 221,       7,  56,  63,  0,  1
 | 
				
			||||||
 | 
					*Boton Aceptar
 | 
				
			||||||
 | 
					&  377, 223, 391, 276,       7,  56,  63,  0,  1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Subir
 | 
				
			||||||
 | 
					&  377, 278, 391, 303,       7,  56,  63,  0,  1
 | 
				
			||||||
 | 
					* Bajar
 | 
				
			||||||
 | 
					&  377, 305, 391, 330,       7,  56,  63,  0,  1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					|377, 169, 2, 4, 1, 63, Cancelar,
 | 
				
			||||||
 | 
					 |378, 170, 2, 4, 1,  0, Cancelar,
 | 
				
			||||||
 | 
					  |377, 169, 2, 4, 1,  2, C       ,
 | 
				
			||||||
 | 
					   |378, 170, 2, 4, 1,  0, C       ,
 | 
				
			||||||
 | 
					|377, 223, 2, 4, 1, 63, Aceptar ,
 | 
				
			||||||
 | 
					 |378, 224, 2, 4, 1,  0, Aceptar ,
 | 
				
			||||||
 | 
					  |377, 223, 2, 4, 1,  2, A       ,
 | 
				
			||||||
 | 
					   |378, 224, 2, 4, 1,  0, A       ,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					|377, 288, 2, 4, 0, 63,  -,
 | 
				
			||||||
 | 
					 |378, 289, 2, 4, 0,  0,  -,
 | 
				
			||||||
 | 
					|377, 315, 2, 4, 0, 63,  +,
 | 
				
			||||||
 | 
					 |378, 316, 2, 4, 0,  0,  +,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					********************************************************************************
 | 
				
			||||||
 | 
					****  Prueba del pulsador derecho... *******************************************
 | 
				
			||||||
 | 
					********************************************************************************
 | 
				
			||||||
 | 
					!5, 7
 | 
				
			||||||
 | 
					* Boton Cerrar seleccion derecho
 | 
				
			||||||
 | 
					$    0,   0,  25,  52,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Boton seleccion DISPERSION
 | 
				
			||||||
 | 
					$   30,   0, 105,  24,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					$   50,   3, 103,  21,       0, 56, 63, 2, 1, 00, 00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Boton seleccion PRESICI<43>N
 | 
				
			||||||
 | 
					$   30,  29, 105,  52,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					$   50,  32, 103,  49,       0, 56, 63, 2, 1, 00, 00
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 * Subir selecci<63>n
 | 
				
			||||||
 | 
					 $ 110,   0, 135,  24,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					 * Bajar selecci<63>n
 | 
				
			||||||
 | 
					 $ 110,  29, 135,  52,       7, 63, 56, 2, 2, 00, 00
 | 
				
			||||||
 | 
					* TODO EL CUADRO MIDE: (0, 0) - (135, 52)
 | 
				
			||||||
 | 
					********************************************************************************
 | 
				
			||||||
 | 
					********************************************************************************
 | 
				
			||||||
 | 
					********************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								FREC/FREC.PRJ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								FREC/FREC.PRJ
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										577
									
								
								FREC/FRECFILE.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										577
									
								
								FREC/FRECFILE.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,577 @@
 | 
				
			|||||||
 | 
					#include <io.h>
 | 
				
			||||||
 | 
					#include <dos.h>
 | 
				
			||||||
 | 
					#include <dir.h>
 | 
				
			||||||
 | 
					#include <direct.h>
 | 
				
			||||||
 | 
					#include <ctype.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <alloc.h>
 | 
				
			||||||
 | 
					#include <conio.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <graphics.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "..\..\libs\make_bot\make_bot.h"
 | 
				
			||||||
 | 
					#include "frec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern CFG_FREC cfgFREC;
 | 
				
			||||||
 | 
					////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					/***************************************************************************\
 | 
				
			||||||
 | 
					| Critical Disk Error handling routines (C) 1995 Jason Speight.             |
 | 
				
			||||||
 | 
					|	void interrupt critical_error_handler(__CPPARGS) is the interrupt which   |
 | 
				
			||||||
 | 
					|	captures disk io errors. (int 0x24, if you're interested!) Such errors    |
 | 
				
			||||||
 | 
					|	are : Disk not inserted in drive, seek error reading from a drive, general|
 | 
				
			||||||
 | 
					|	disk failure etc. The only things the interrupt does is :                 |
 | 
				
			||||||
 | 
					|		Suppress the dos ABORT,RETRY,FAIL,IGNORE statement                      |
 | 
				
			||||||
 | 
					|		Sets a variable erroroccurred to the dos error statement. (!=0)         |
 | 
				
			||||||
 | 
					|																																						|
 | 
				
			||||||
 | 
					|	StartCEH() and StopCEH() start and stop the error handler. YOU MUST       |
 | 
				
			||||||
 | 
					|	STOPCEH BEFORE THE EXIT OF THE PROGRAM. or else when you get a disk       |
 | 
				
			||||||
 | 
					|	error, the int 24 issued bu DOS points to the middle of nowhere! *HANG*   |
 | 
				
			||||||
 | 
					|																																						|
 | 
				
			||||||
 | 
					|	diskerror() is my routine to display a disk IO error. It also sets the    |
 | 
				
			||||||
 | 
					|	global variable erroroccurred to 0 for future use. This procedure also    |
 | 
				
			||||||
 | 
					|	needs access to "SCRNHNDL.H" and "BOXES.H"                                |
 | 
				
			||||||
 | 
					|																																						|
 | 
				
			||||||
 | 
					|	BTW, anybody know how to trap the message "PLEASE INSERT DISK FOR DRIVE x"|
 | 
				
			||||||
 | 
					\***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void interrupt critical_error_handler(.../*__CPPARGS*/);	// interrupt prototype
 | 
				
			||||||
 | 
					void interrupt (*old_int24)(.../*__CPPARGS*/);			// interrupt function pointer
 | 
				
			||||||
 | 
					void startceh();
 | 
				
			||||||
 | 
					void stopceh();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int erroroccurred=0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					 char files[13]   ;  //200 files, 12 byte filename (+1 for terminator!)
 | 
				
			||||||
 | 
					 long filesize    ; //Try as static.. free up that ram, bud.  (Use HUGE mem model)
 | 
				
			||||||
 | 
					 unsigned char attrs       ;
 | 
				
			||||||
 | 
					} SFile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SFile *S_File;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void FileDownRow(void);
 | 
				
			||||||
 | 
					void FileUpRow(void)  ;
 | 
				
			||||||
 | 
					void PrintWholeScreen_Files(void);
 | 
				
			||||||
 | 
					void PrintSelectRow( char Hide_Show );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned char FileRow = 0; int FileCurrTopRow = 0;
 | 
				
			||||||
 | 
					unsigned int maxfiles=0;
 | 
				
			||||||
 | 
					unsigned int rasterscan(char *fm);
 | 
				
			||||||
 | 
					char Archivo[13];
 | 
				
			||||||
 | 
					void PrintVisor(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char Optar( char *texto1, char *texto2, char *texto3 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, int left, int up, int right, int down);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char file_browser( char *comodin_name, char *texto1, char Cargar_Salvar );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char file_browser( char *comodin_name, char *texto1, char Cargar_Salvar ){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 int ok = 0, inst = 0;
 | 
				
			||||||
 | 
					 struct textsettingstype textinfo;
 | 
				
			||||||
 | 
					 char oldpath[229]=" -- NONE -- ";				//internal. do not change
 | 
				
			||||||
 | 
					 unsigned char olddrive=255;					//impossible drive name
 | 
				
			||||||
 | 
					 char olddisk, key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 startceh();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 FileRow = FileCurrTopRow = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 olddrive = getdisk();
 | 
				
			||||||
 | 
					 getcwd( oldpath, 229 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       void *C_Texto;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					C_Texto    = malloc( JD_imagesize(240, 140, 400, 340) );
 | 
				
			||||||
 | 
					S_File     = (SFile *)malloc( sizeof(SFile) * 201 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if( C_Texto == NULL || S_File == NULL )  {
 | 
				
			||||||
 | 
					 closegraph();
 | 
				
			||||||
 | 
					 cprintf("\n\rSALIENDO");
 | 
				
			||||||
 | 
					 cprintf("\n\rImposible encontrar %ldKbytes en el Heap", ( JD_imagesize(240, 140, 400, 340) + sizeof(SFile)*201 ) );
 | 
				
			||||||
 | 
					 return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rasterscan( comodin_name );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gettextsettings(&textinfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					getimage( 240, 140, 400, 340, C_Texto);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Imprime_Estaticos( 10, "FREC.IMG");     // Imprime botones estaticos 'Seccion 20'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					settextstyle( SMALL_FONT, HORIZ_DIR, 4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					setcolor( 1 );
 | 
				
			||||||
 | 
					outtextxy( 250+( ( 141 - textwidth(texto1) ) / 2 ), 150, texto1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PrintWholeScreen_Files();
 | 
				
			||||||
 | 
					PrintSelectRow( 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while(!ok){				  // Bucle infinito
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 switch( Comprueba_Secuencia( 4, NULL ) ) {     // Iniciamos comprobacion de 2<> sec
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       case  0:				  // No se pulso ningun BOTON
 | 
				
			||||||
 | 
										  // Pero el raton fue presionado en
 | 
				
			||||||
 | 
										  // algun sitio...
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       case -2:				  // Hay una tecla normal en BUFFER
 | 
				
			||||||
 | 
						       switch( key = getch() ) {  // La utilizamos
 | 
				
			||||||
 | 
							// ESC   ( CANCELAR )
 | 
				
			||||||
 | 
							case 27:
 | 
				
			||||||
 | 
								inst = 0;
 | 
				
			||||||
 | 
								ok   = 1;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case 13:
 | 
				
			||||||
 | 
								switch( S_File[FileRow + FileCurrTopRow].attrs )
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								 // Si directorio: cambiamos simplemente
 | 
				
			||||||
 | 
								 case FA_DIREC:
 | 
				
			||||||
 | 
									chdir( S_File[FileRow + FileCurrTopRow].files );
 | 
				
			||||||
 | 
									FileRow = FileCurrTopRow = 0;
 | 
				
			||||||
 | 
									rasterscan( comodin_name );
 | 
				
			||||||
 | 
									PrintWholeScreen_Files();
 | 
				
			||||||
 | 
									PrintSelectRow( 1 );
 | 
				
			||||||
 | 
								    break;
 | 
				
			||||||
 | 
								 // Si unidad comprobamos que podemos cambiar y como directorio...
 | 
				
			||||||
 | 
								 case 255:
 | 
				
			||||||
 | 
									 erroroccurred=0;
 | 
				
			||||||
 | 
									 olddisk=getdisk();
 | 
				
			||||||
 | 
									 setdisk( (S_File[FileRow + FileCurrTopRow].files[0] - 'A') );
 | 
				
			||||||
 | 
									 if (erroroccurred) {
 | 
				
			||||||
 | 
										setdisk(olddisk);
 | 
				
			||||||
 | 
									 } else {
 | 
				
			||||||
 | 
									  FileRow = FileCurrTopRow = 0;
 | 
				
			||||||
 | 
									  rasterscan( comodin_name );
 | 
				
			||||||
 | 
									  PrintWholeScreen_Files();
 | 
				
			||||||
 | 
									  PrintSelectRow( 1 );
 | 
				
			||||||
 | 
									 }
 | 
				
			||||||
 | 
								    break;
 | 
				
			||||||
 | 
								 default:
 | 
				
			||||||
 | 
								 if ( strcmp(Archivo, S_File[FileRow+FileCurrTopRow].files) == 0 )
 | 
				
			||||||
 | 
								  {
 | 
				
			||||||
 | 
								       if ( Cargar_Salvar == 0 ) {
 | 
				
			||||||
 | 
									if ( access(Archivo, 0) != 0) break;
 | 
				
			||||||
 | 
									 sprintf( comodin_name, "%c:\\", getdisk() + 'A' );
 | 
				
			||||||
 | 
									 getcurdir(0,comodin_name+3);
 | 
				
			||||||
 | 
									 strcat(comodin_name, "\\");
 | 
				
			||||||
 | 
									 strcat(comodin_name, Archivo);
 | 
				
			||||||
 | 
									 inst = 1;
 | 
				
			||||||
 | 
									 ok   = 1;
 | 
				
			||||||
 | 
								       }
 | 
				
			||||||
 | 
								  }
 | 
				
			||||||
 | 
								  strcpy(Archivo, S_File[FileRow+FileCurrTopRow].files);
 | 
				
			||||||
 | 
								  PrintVisor();
 | 
				
			||||||
 | 
								    break;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
								strcpy( Archivo, "\0" );
 | 
				
			||||||
 | 
								ungetch(key);
 | 
				
			||||||
 | 
								InputCadenaG(Archivo, 0, 12, 0, cfgFREC.F_Texto, 252, 171, 373, 178);
 | 
				
			||||||
 | 
								if (Cargar_Salvar == 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								 // Comprobamos que existe el fichero
 | 
				
			||||||
 | 
								 if ( access(Archivo, 0) != 0)
 | 
				
			||||||
 | 
								   strcpy( Archivo, "\0" );
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								 PrintVisor();
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
						       }
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       case -1:				  // Hay una tecla especial en BUFFER
 | 
				
			||||||
 | 
						       getch();			  // La eliminamos
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       // Boton Aceptar
 | 
				
			||||||
 | 
					       case  2:
 | 
				
			||||||
 | 
						       if ( Cargar_Salvar == 0 ) {
 | 
				
			||||||
 | 
							if ( access(Archivo, 0) != 0) break;
 | 
				
			||||||
 | 
							 sprintf( comodin_name, "%c:\\", getdisk() + 'A' );
 | 
				
			||||||
 | 
							 getcurdir(0,comodin_name+3);
 | 
				
			||||||
 | 
							 strcat(comodin_name, "\\");
 | 
				
			||||||
 | 
							 strcat(comodin_name, Archivo);
 | 
				
			||||||
 | 
							 inst = 1;
 | 
				
			||||||
 | 
							 ok   = 1;
 | 
				
			||||||
 | 
						       } else {
 | 
				
			||||||
 | 
							if ( access(Archivo, 0) == 0)
 | 
				
			||||||
 | 
							 if ( Optar( "Fichero Existe", "<EFBFBD> Reemplazarlo ?","" ) == 0 ) break;
 | 
				
			||||||
 | 
							  sprintf( comodin_name, "%c:\\", getdisk() + 'A' );
 | 
				
			||||||
 | 
							  getcurdir(0,comodin_name+3);
 | 
				
			||||||
 | 
							  strcat(comodin_name, "\\");
 | 
				
			||||||
 | 
							  strcat(comodin_name, Archivo);
 | 
				
			||||||
 | 
							  inst = 1;
 | 
				
			||||||
 | 
							  ok   = 1;
 | 
				
			||||||
 | 
						       }
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       // Boton Cancelar
 | 
				
			||||||
 | 
					       case  1:
 | 
				
			||||||
 | 
						       inst = 0;
 | 
				
			||||||
 | 
						       ok   = 1;
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       // Boton Subir
 | 
				
			||||||
 | 
					       case  3:
 | 
				
			||||||
 | 
						       FileUpRow();
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       // Boton Bajar
 | 
				
			||||||
 | 
					       case  4:
 | 
				
			||||||
 | 
						       FileDownRow();
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       default:
 | 
				
			||||||
 | 
						       while( kbhit() ) getch();  // Limpiamos posibles teclas en BUFFER
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					putimage( 240, 140, C_Texto, COPY_PUT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					free ( C_Texto    );
 | 
				
			||||||
 | 
					free ( S_File     );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					settextstyle(textinfo.font, textinfo.direction, textinfo.charsize );
 | 
				
			||||||
 | 
					settextjustify(textinfo.horiz, textinfo.vert);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 setdisk(olddrive);
 | 
				
			||||||
 | 
					 chdir(oldpath);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					stopceh();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return inst;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned int rasterscan(char *fm) {
 | 
				
			||||||
 | 
						struct ffblk ffblk;
 | 
				
			||||||
 | 
						char done=0;
 | 
				
			||||||
 | 
						unsigned int olddisk;
 | 
				
			||||||
 | 
						maxfiles = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// build a disk drive availiable list
 | 
				
			||||||
 | 
						olddisk=getdisk();
 | 
				
			||||||
 | 
						for (int i=1;i<27;i++) if (_chdrive(i) == 0)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
								sprintf( S_File[maxfiles].files, "%c:", (char)('A' + i - 1) );
 | 
				
			||||||
 | 
								S_File[maxfiles].filesize=0;
 | 
				
			||||||
 | 
								S_File[maxfiles].attrs=255;	// Unidad
 | 
				
			||||||
 | 
								if (ffblk.ff_attrib & 16) S_File[maxfiles].filesize=0;
 | 
				
			||||||
 | 
								maxfiles++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						setdisk(olddisk);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//	drivelist[2]='N'; //stop access to B drive until I sort out pahntom dive probs
 | 
				
			||||||
 | 
					//Ok, Drive B may be a phantom drive. If you try to access drive B, then
 | 
				
			||||||
 | 
					//the program looses controll. Bummer!
 | 
				
			||||||
 | 
					// needs debugging. (always ignores drive b...)
 | 
				
			||||||
 | 
					//	asm int 0x11
 | 
				
			||||||
 | 
					//	asm mov equipmentlist,ax
 | 
				
			||||||
 | 
					//	drivelist[2]='N';
 | 
				
			||||||
 | 
					//	if ((equipmentlist & 16)) drivelist[2]='Y';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						done = findfirst("*.*",&ffblk,FA_DIREC);
 | 
				
			||||||
 | 
						while (!done) {
 | 
				
			||||||
 | 
							if (ffblk.ff_attrib == 0x10) {
 | 
				
			||||||
 | 
								strcpy(S_File[maxfiles].files,ffblk.ff_name);
 | 
				
			||||||
 | 
								S_File[maxfiles].filesize=ffblk.ff_fsize;
 | 
				
			||||||
 | 
								S_File[maxfiles].attrs=ffblk.ff_attrib;
 | 
				
			||||||
 | 
								if (ffblk.ff_attrib & 16) S_File[maxfiles].filesize=0;
 | 
				
			||||||
 | 
								maxfiles++;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
								done = findnext(&ffblk);
 | 
				
			||||||
 | 
								if (maxfiles==200) done=!done; //stop to prevent internal crashes.
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						done = findfirst(fm,&ffblk,FA_DIREC);
 | 
				
			||||||
 | 
						while (!done)	{
 | 
				
			||||||
 | 
							if (ffblk.ff_attrib != 0x10) {
 | 
				
			||||||
 | 
								strcpy(S_File[maxfiles].files,ffblk.ff_name);
 | 
				
			||||||
 | 
								S_File[maxfiles].filesize=ffblk.ff_fsize;
 | 
				
			||||||
 | 
								S_File[maxfiles].attrs=ffblk.ff_attrib;
 | 
				
			||||||
 | 
								if (ffblk.ff_attrib & 16) S_File[maxfiles].filesize=0;
 | 
				
			||||||
 | 
								maxfiles++;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							done = findnext(&ffblk);
 | 
				
			||||||
 | 
							if (maxfiles==200) done=!done; //stop to prevent internal crashes.
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (maxfiles==0) { //no files to browse
 | 
				
			||||||
 | 
							strcpy(S_File[0].files," -- NONE -- ");
 | 
				
			||||||
 | 
							S_File[0].filesize=-1;
 | 
				
			||||||
 | 
							maxfiles=1;}
 | 
				
			||||||
 | 
						strcpy(S_File[200].files," -- NONE -- ");
 | 
				
			||||||
 | 
						S_File[200].filesize=-1;
 | 
				
			||||||
 | 
						return maxfiles;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void PrintWholeScreen_Files(void )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  int OldFileRow = FileRow ;
 | 
				
			||||||
 | 
					  char Contador;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  setfillstyle( SOLID_FILL, 0 );
 | 
				
			||||||
 | 
					  bar(252, 187, 374, 327);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  PrintSelectRow ( 0 );
 | 
				
			||||||
 | 
						for ( FileRow = 0; FileRow < 14; FileRow++ )
 | 
				
			||||||
 | 
							if ( ( FileRow + FileCurrTopRow ) < maxfiles )
 | 
				
			||||||
 | 
											  PrintSelectRow ( 0 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  FileRow = OldFileRow;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void PrintSelectRow( char Hide_Show )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  char Buffer[80];
 | 
				
			||||||
 | 
					    char Buff1[80];
 | 
				
			||||||
 | 
						char Buff2[80];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ( Hide_Show==0 )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					     setfillstyle( SOLID_FILL, 0 );
 | 
				
			||||||
 | 
					     bar(252, 188 + ( FileRow * 10 ) , 373, 187 + 10 + ( FileRow * 10 ) );
 | 
				
			||||||
 | 
					     setcolor( cfgFREC.Texto );
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					     setfillstyle( SOLID_FILL, cfgFREC.F_Texto );
 | 
				
			||||||
 | 
					     bar(252, 188 + ( FileRow * 10 ) , 373, 187 + 10 + ( FileRow * 10 ) );
 | 
				
			||||||
 | 
					     setcolor(0);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					switch( S_File[FileRow + FileCurrTopRow].attrs )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 case FA_DIREC:
 | 
				
			||||||
 | 
					           sprintf(Buffer, "%-13s", S_File[FileRow+FileCurrTopRow].files );
 | 
				
			||||||
 | 
					           sprintf(Buff1 , "              < DIR >"                       );
 | 
				
			||||||
 | 
					         break;
 | 
				
			||||||
 | 
					 case 255:
 | 
				
			||||||
 | 
					           sprintf(Buffer, "%-8s", strncpy( Buff1, S_File[FileRow+FileCurrTopRow].files, 8) );
 | 
				
			||||||
 | 
					           sprintf(Buff1 , "             >DRIVER<"                                         );
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					 default:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					           sprintf(Buffer, "%-13s",        S_File[FileRow+FileCurrTopRow].files);
 | 
				
			||||||
 | 
					//           outtextxy( 252 , 187 + ( FileRow * 10 ) , Buffer );
 | 
				
			||||||
 | 
					           sprintf(Buff1 , "             %7lu", S_File[FileRow+FileCurrTopRow].filesize );
 | 
				
			||||||
 | 
						break;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  outtextxy( 252 , 187 + ( FileRow * 10 ) , Buffer );
 | 
				
			||||||
 | 
					  outtextxy( 252 , 187 + ( FileRow * 10 ) , Buff1  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void FileDownRow(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // <20><> Estoy en la linea fisica 000 ???
 | 
				
			||||||
 | 
					 if ( (FileRow + FileCurrTopRow) != (maxfiles - 1) ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Linea 0, Baja Con retroceso multiple
 | 
				
			||||||
 | 
					    if ( FileRow == 13 ) {
 | 
				
			||||||
 | 
						FileCurrTopRow += 14;
 | 
				
			||||||
 | 
						while ( (FileCurrTopRow + FileRow) > maxfiles ) FileCurrTopRow--;
 | 
				
			||||||
 | 
						FileRow =  0;
 | 
				
			||||||
 | 
						PrintWholeScreen_Files();
 | 
				
			||||||
 | 
						PrintSelectRow( 1 );
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
						PrintSelectRow( 0 );
 | 
				
			||||||
 | 
						FileRow++;
 | 
				
			||||||
 | 
						PrintSelectRow( 1 );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void FileUpRow(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // <20><> Estoy en la linea fisica 000 ???
 | 
				
			||||||
 | 
					 if ( (FileRow + FileCurrTopRow) != 0 ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Linea 0, Baja Con retroceso multiple
 | 
				
			||||||
 | 
					    if ( FileRow == 0 ) {
 | 
				
			||||||
 | 
						FileCurrTopRow -= 14;
 | 
				
			||||||
 | 
						if ( FileCurrTopRow < 0 ) FileCurrTopRow = 0;
 | 
				
			||||||
 | 
						FileRow =  0;
 | 
				
			||||||
 | 
						PrintWholeScreen_Files();
 | 
				
			||||||
 | 
						FileRow = 13;
 | 
				
			||||||
 | 
						PrintSelectRow( 1 );
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
						PrintSelectRow( 0 );
 | 
				
			||||||
 | 
						FileRow--;
 | 
				
			||||||
 | 
						PrintSelectRow( 1 );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					void diskerror(void) {
 | 
				
			||||||
 | 
					char message[30];
 | 
				
			||||||
 | 
						pushscreen();
 | 
				
			||||||
 | 
						draw3dboxup(19,10,43,6);
 | 
				
			||||||
 | 
						draw3dboxdn(21,11,39,4);
 | 
				
			||||||
 | 
						switch (erroroccurred) {
 | 
				
			||||||
 | 
							case 1 : strcpy(message,"Write Protected Disk"); break;
 | 
				
			||||||
 | 
							case 2 : strcpy(message,"Drive Not Ready"); break;
 | 
				
			||||||
 | 
							case 3 : strcpy(message,"Unknown Command"); break;
 | 
				
			||||||
 | 
							case 4 : strcpy(message,"Data Error (CRC)"); break;
 | 
				
			||||||
 | 
							case 5 : strcpy(message,"Bad Request Structure Length"); break;
 | 
				
			||||||
 | 
							case 6 : strcpy(message,"Seek Error"); break;
 | 
				
			||||||
 | 
							case 7 : strcpy(message,"Unknown Media Type"); break;
 | 
				
			||||||
 | 
							case 8 : strcpy(message,"Sector Not Found"); break;
 | 
				
			||||||
 | 
							case 9 : strcpy(message,"Printer Out Of Paper"); break;
 | 
				
			||||||
 | 
							case 10: strcpy(message,"Write Fault"); break;
 | 
				
			||||||
 | 
							case 11: strcpy(message,"Read Fault"); break;
 | 
				
			||||||
 | 
							case 12: strcpy(message,"General Failure"); break;
 | 
				
			||||||
 | 
							default: strcpy(message,"Unknown Error");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						printcentered(12,"Error - Press any key to continue",0x74);
 | 
				
			||||||
 | 
						printcentered(13,message,0x70);
 | 
				
			||||||
 | 
						getch();
 | 
				
			||||||
 | 
						popscreen();
 | 
				
			||||||
 | 
						erroroccurred=0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void interrupt critical_error_handler(.../*__CPPARGS*/) {
 | 
				
			||||||
 | 
						asm push ax               //preserve only modified register
 | 
				
			||||||
 | 
						asm mov ax,di							//di holds error code ranging from 0 to 0x0c
 | 
				
			||||||
 | 
					//	asm inc ax
 | 
				
			||||||
 | 
						asm mov erroroccurred,ax	//increase erroroccurred for ease of programming
 | 
				
			||||||
 | 
						asm mov al,0x20
 | 
				
			||||||
 | 
						asm out 0x20,al  					//send interrupt clear flag
 | 
				
			||||||
 | 
					//  asm pushf									// I think I dont need this line in....
 | 
				
			||||||
 | 
						asm pop ax								//restore ax
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void startceh() {
 | 
				
			||||||
 | 
						old_int24 = _dos_getvect( 0x24 );
 | 
				
			||||||
 | 
						_dos_setvect( 0x24, critical_error_handler);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void stopceh() {
 | 
				
			||||||
 | 
						_dos_setvect(0x24,old_int24);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void PrintVisor(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     setfillstyle( SOLID_FILL, 0 );
 | 
				
			||||||
 | 
					     bar(252, 171, 373, 178);
 | 
				
			||||||
 | 
					     setcolor( cfgFREC.Texto );
 | 
				
			||||||
 | 
					     outtextxy(252, 169, strupr(Archivo) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, int left, int up, int right, int down)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  int  ls;                                      // longitud cadena
 | 
				
			||||||
 | 
					  char *s1;                                     // puntero a cadena inicial
 | 
				
			||||||
 | 
					  int c, ok = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  s1 = s;                                       // inicio cadena
 | 
				
			||||||
 | 
					  ls = strlen ( s );                            // Longitud de actual
 | 
				
			||||||
 | 
					  s += ls;                                      // se coloca en el final
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								setfillstyle(SOLID_FILL, cf);
 | 
				
			||||||
 | 
					  do{
 | 
				
			||||||
 | 
								bar(left, up, right, down);
 | 
				
			||||||
 | 
								setcolor(cc);
 | 
				
			||||||
 | 
								outtextxy( left, up-2, s1 );
 | 
				
			||||||
 | 
								if ( ls < lmax ) {
 | 
				
			||||||
 | 
									setcolor(4);
 | 
				
			||||||
 | 
									outtextxy( left+textwidth( s1 ), up-2, "<");
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch( c = getch() )                   // obtiene tecla
 | 
				
			||||||
 | 
						 {
 | 
				
			||||||
 | 
						  case  0:
 | 
				
			||||||
 | 
						  case 13:
 | 
				
			||||||
 | 
							  ok = 1;                       // 13 = INTRO || Especiales
 | 
				
			||||||
 | 
							  break;
 | 
				
			||||||
 | 
						  case  8:
 | 
				
			||||||
 | 
							  if ( ls > 0 ) {  	 	//  8 = Back Space
 | 
				
			||||||
 | 
							   ls--;
 | 
				
			||||||
 | 
							   s--;
 | 
				
			||||||
 | 
							   *s = '\0';
 | 
				
			||||||
 | 
							  }
 | 
				
			||||||
 | 
							  break;
 | 
				
			||||||
 | 
						  case 27:
 | 
				
			||||||
 | 
							  *s='\0';
 | 
				
			||||||
 | 
							  ok = 1;
 | 
				
			||||||
 | 
							  break;
 | 
				
			||||||
 | 
						  default:
 | 
				
			||||||
 | 
							  if ( !numalp && c >= 32 && c <= 254 && ls < lmax)
 | 
				
			||||||
 | 
							  {
 | 
				
			||||||
 | 
								*s++ = toupper(c);
 | 
				
			||||||
 | 
								ls++;
 | 
				
			||||||
 | 
								*s = '\0';
 | 
				
			||||||
 | 
							  } else
 | 
				
			||||||
 | 
							  if ( numalp && isdigit(c)  && ls < lmax) {
 | 
				
			||||||
 | 
									*s++ = c;
 | 
				
			||||||
 | 
									ls++;
 | 
				
			||||||
 | 
									*s = '\0';
 | 
				
			||||||
 | 
							  }
 | 
				
			||||||
 | 
							  break;
 | 
				
			||||||
 | 
						 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }while(!ok);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ok = 1;
 | 
				
			||||||
 | 
					  *s = ' ';
 | 
				
			||||||
 | 
					  while( ok ) {
 | 
				
			||||||
 | 
							if(*s==' ') { *s = '\0'; s--;
 | 
				
			||||||
 | 
							} else { s++; ok = 0; }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  *s = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while(kbhit()) getch();              // Vacia Buffer impidiendo falsas
 | 
				
			||||||
 | 
									       //  pulsaciones...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return ls;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										144
									
								
								FREC/FRECUTIL.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								FREC/FRECUTIL.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,144 @@
 | 
				
			|||||||
 | 
					#include <dos.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <alloc.h>
 | 
				
			||||||
 | 
					#include <conio.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <graphics.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "..\..\libs\make_bot\make_bot.h"
 | 
				
			||||||
 | 
					#include "frec.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char Optar( char *texto1, char *texto2, char *texto3 );
 | 
				
			||||||
 | 
					int Muestra_Mensaje(int Mensaje, char *file);
 | 
				
			||||||
 | 
					//void redefine_cursor_raton(int r_e);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern CFG_FREC cfgFREC;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char Optar( char *texto1, char *texto2, char *texto3 ){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 int ok = 0, inst = 0;
 | 
				
			||||||
 | 
					 struct textsettingstype textinfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       void *C_Texto, *C_Aceptar, *C_Cancelar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					C_Texto    = malloc( JD_imagesize(200, 212, 440, 267) );
 | 
				
			||||||
 | 
					C_Aceptar  = malloc( JD_imagesize(200, 270, 280, 295) );
 | 
				
			||||||
 | 
					C_Cancelar = malloc( JD_imagesize(360, 270, 440, 295) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if( C_Texto == NULL || C_Aceptar == NULL || C_Cancelar == NULL)  {
 | 
				
			||||||
 | 
					 closegraph();
 | 
				
			||||||
 | 
					 cprintf("\n\rSALIENDO");
 | 
				
			||||||
 | 
					 cprintf("\n\rImposible encontrar %ldKbytes en el Heap",
 | 
				
			||||||
 | 
												( JD_imagesize(118, 160, 521, 335) +
 | 
				
			||||||
 | 
												  JD_imagesize(118, 160, 521, 335) +
 | 
				
			||||||
 | 
												  JD_imagesize(118, 160, 521, 335)
 | 
				
			||||||
 | 
												)
 | 
				
			||||||
 | 
						);
 | 
				
			||||||
 | 
					 exit(SIN_MEMORIA);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					gettextsettings(&textinfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					settextstyle(SMALL_FONT, HORIZ_DIR, 5 );
 | 
				
			||||||
 | 
					// settextjustify(CENTER_TEXT, CENTER_TEXT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					getimage(200, 212, 440, 267, C_Texto);
 | 
				
			||||||
 | 
					getimage(200, 270, 280, 295, C_Aceptar);
 | 
				
			||||||
 | 
					getimage(360, 270, 440, 295, C_Cancelar);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Imprime_Estaticos(100, "FREC.DAT");     // Imprime botones estaticos 'Seccion 20'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Imprime_Secuencia(3);	                  // Imprime secuencia 4.
 | 
				
			||||||
 | 
					  Imprime_Estaticos(101, "FREC.DAT");     // Imprime textos estaticos 'Seccion 5'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					setcolor( cfgFREC.Texto );
 | 
				
			||||||
 | 
					outtextxy( 210+( ( 230 - textwidth(texto1) ) / 2 ), 220, texto1 );
 | 
				
			||||||
 | 
					outtextxy( 210+( ( 230 - textwidth(texto2) ) / 2 ), 235, texto2 );
 | 
				
			||||||
 | 
					outtextxy( 210+( ( 230 - textwidth(texto3) ) / 2 ), 250, texto3 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while(!ok){				  // Bucle infinito
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 switch( Comprueba_Secuencia( 3, NULL ) ) {     // Iniciamos comprobacion de 2<> sec
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       case  0:				  // No se pulso ningun BOTON
 | 
				
			||||||
 | 
										  // Pero el raton fue presionado en
 | 
				
			||||||
 | 
										  // algun sitio...
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       case -2:				  // Hay una tecla normal en BUFFER
 | 
				
			||||||
 | 
						       switch( getch() ) {  // La utilizamos
 | 
				
			||||||
 | 
							// ESC   ( CANCELAR )
 | 
				
			||||||
 | 
							case 14:
 | 
				
			||||||
 | 
								inst = 0;
 | 
				
			||||||
 | 
								ok   = 1;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							default:
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
						       }
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       case -1:				  // Hay una tecla especial en BUFFER
 | 
				
			||||||
 | 
						       getch();			  // La eliminamos
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       // Boton Aceptar
 | 
				
			||||||
 | 
					       case  1:
 | 
				
			||||||
 | 
						       inst = 1;
 | 
				
			||||||
 | 
						       ok   = 1;
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       // Boton Cancelar
 | 
				
			||||||
 | 
					       case  2:
 | 
				
			||||||
 | 
						       inst = 0;
 | 
				
			||||||
 | 
						       ok   = 1;
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					       default:
 | 
				
			||||||
 | 
						       while( kbhit() ) getch();  // Limpiamos posibles teclas en BUFFER
 | 
				
			||||||
 | 
						       break;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					putimage(200, 212, C_Texto, COPY_PUT);
 | 
				
			||||||
 | 
					putimage(200, 270, C_Aceptar, COPY_PUT);
 | 
				
			||||||
 | 
					putimage(360, 270, C_Cancelar, COPY_PUT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					free ( C_Texto    );
 | 
				
			||||||
 | 
					free ( C_Aceptar  );
 | 
				
			||||||
 | 
					free ( C_Cancelar );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					settextstyle(textinfo.font, textinfo.direction, textinfo.charsize );
 | 
				
			||||||
 | 
					settextjustify(textinfo.horiz, textinfo.vert);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return inst;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int Muestra_Mensaje(int Mensaje, char *file) {
 | 
				
			||||||
 | 
					 void *Imagen;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 if ( (Imagen = malloc( JD_imagesize(200, 212, 440, 267) ) ) == NULL ) {
 | 
				
			||||||
 | 
						Espera_TeclaRaton();
 | 
				
			||||||
 | 
						Anclar_Raton();
 | 
				
			||||||
 | 
						return -1;
 | 
				
			||||||
 | 
					 } else {
 | 
				
			||||||
 | 
						getimage( 200, 212, 440, 267, Imagen );
 | 
				
			||||||
 | 
						Imprime_Estaticos( Mensaje, file);
 | 
				
			||||||
 | 
					//	 Fichero_bot( Mensaje );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Espera_TeclaRaton();
 | 
				
			||||||
 | 
						Anclar_Raton();
 | 
				
			||||||
 | 
						putimage( 200, 212, Imagen, COPY_PUT);
 | 
				
			||||||
 | 
						free(Imagen);
 | 
				
			||||||
 | 
						return  1;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										715
									
								
								FREC/FREC_F.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										715
									
								
								FREC/FREC_F.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,715 @@
 | 
				
			|||||||
 | 
					#include <graphics.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <math.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "dibujos.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define _FREC_F_H
 | 
				
			||||||
 | 
					 #include "FREC_F.h"
 | 
				
			||||||
 | 
					#undef  _FREC_F_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "FREC.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int SaltosMatrixX = 10,             // Saltos en la Matrix X
 | 
				
			||||||
 | 
					    SaltosMatrixY = 10;             // Saltos en la Matrix Y
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int  IncrementoMarca = 2;           // Incrementos en el despl. de marcas
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					long MRK_begin=20, MRK_end=50,      // Marcas de comienzo y final originales
 | 
				
			||||||
 | 
					     oldMRK_begin = MRK_begin,      // >>>>>>>>>>>>>>>>>>>>>>>>>>>
 | 
				
			||||||
 | 
					     oldMRK_end   = MRK_end;        // >>> marcas de arrastre  >>>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char GenOsc = GENERADOR,            // determina para quien son los controles
 | 
				
			||||||
 | 
					     GenOscf[2] = { OFF, OFF };     // quien est<73> funcionando ahora
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int  Desplazamiento = 0,            // Desplazamiento virtual de la onda
 | 
				
			||||||
 | 
					     mAnchoMarco = 125;             // Ancho a mostrar ( reducido )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					long oDesde =   0,                  // Inicio de la onda a mostrar
 | 
				
			||||||
 | 
					     oHasta = (mAnchoMarco*5);        // Fin de la onda a mostrar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int  oAncho = oAnchoVentana,        // Ancho de la ventana de visualizaci<63>n
 | 
				
			||||||
 | 
					     oAlto  = oAltoVentana;         // Alto de la ventana de vizualizaci<63>n
 | 
				
			||||||
 | 
					                                    // Cero de la onda Generada
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int  ceroOGenerada = ( oAltoVentana / 2 ) + 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					char Tonda = -1;                    // Tipo de onda a tratar
 | 
				
			||||||
 | 
					int  Dispersion = 1;                // Dispercion entre puntos
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***************************************************************************\
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* SeleccionaControles                                                     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Descripci<63>n:                                                            *|
 | 
				
			||||||
 | 
					|*              Selecciona para quien trabajaran casi todos los controles  *|
 | 
				
			||||||
 | 
					|*              para el generador o el osciloscopio.                       *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Entradas: (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|* Salidas:  (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					\***************************************************************************/
 | 
				
			||||||
 | 
					void SeleccionaControles(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					               // Borramos la zona de funcion
 | 
				
			||||||
 | 
					               setfillstyle( SOLID_FILL, EGA_LIGHTGRAY );
 | 
				
			||||||
 | 
					               bar( 318,   3, 337, 21 );
 | 
				
			||||||
 | 
					               if ( GenOsc == GENERADOR )
 | 
				
			||||||
 | 
					               {
 | 
				
			||||||
 | 
					                GenOsc = OSCILOSCOPIO;
 | 
				
			||||||
 | 
					                ponicono( 319,   3, flecha, 1 ); // Flecha dentro
 | 
				
			||||||
 | 
					                // Led Off / On
 | 
				
			||||||
 | 
					                if ( GenOscf[OSCILOSCOPIO] == OFF )
 | 
				
			||||||
 | 
					                                     ponicono( 245,   7, led_off, 1 );
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                                     ponicono( 245,   7, led_on, 1 );
 | 
				
			||||||
 | 
					               } else {
 | 
				
			||||||
 | 
					                GenOsc = GENERADOR;
 | 
				
			||||||
 | 
					                ponicono( 319,   3, flecha, 3 ); // Flecha fuera
 | 
				
			||||||
 | 
					                // Led Off / On
 | 
				
			||||||
 | 
					                if ( GenOscf[GENERADOR] == OFF )
 | 
				
			||||||
 | 
					                                     ponicono( 245,   7, led_off, 1 );
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                                     ponicono( 245,   7, led_on, 1 );
 | 
				
			||||||
 | 
					               }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***************************************************************************\
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* EnviaRecibe                                                             *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Descripci<63>n:                                                            *|
 | 
				
			||||||
 | 
					|*              Activa/Desactiva la funci<63>n de enviar/recibir onda.        *|
 | 
				
			||||||
 | 
					|*              ( seg<65>n este seleccionado osciloscopio/generador )         *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Entradas: (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|* Salidas:  (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					\***************************************************************************/
 | 
				
			||||||
 | 
					void EnviaRecibe(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					               // Enviar/Recibir onda SI / NO
 | 
				
			||||||
 | 
					               GenOscf[ GenOsc ] = !GenOscf[ GenOsc ];
 | 
				
			||||||
 | 
					               if ( GenOscf[ GenOsc ] == OFF )
 | 
				
			||||||
 | 
					                                     ponicono( 245,   7, led_off, 1 );
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                                     ponicono( 245,   7, led_on, 1 );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***************************************************************************\
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* DesplazaMarca                                                           *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Descripci<63>n:                                                            *|
 | 
				
			||||||
 | 
					|*              Realiza la funci<63>n de dezplazamiento de la marca, con      *|
 | 
				
			||||||
 | 
					|*              los cursores, y selecci<63>n de toda la onda.                 *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Entradas:                                                               *|
 | 
				
			||||||
 | 
					|*           Incremento en el desplazamiento (puede se negativo)           *|
 | 
				
			||||||
 | 
					|*           Marca a desplazar: INICIO, FIN, TODO (marca toda la onda)     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Salidas:  (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					\***************************************************************************/
 | 
				
			||||||
 | 
					void DesplazaMarca( char IncrementoMarca, char InicioFin )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 if ( InicioFin == INICIO )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  if ( IncrementoMarca > 0 )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   MRK_begin += IncrementoMarca;
 | 
				
			||||||
 | 
					   while ( MRK_begin > MRK_end ) MRK_begin--;
 | 
				
			||||||
 | 
					   if ( MRK_begin > (oAnchoVentana * oVentanas) )
 | 
				
			||||||
 | 
					                            MRK_begin = (oAnchoVentana * oVentanas);
 | 
				
			||||||
 | 
					   Dibuja_OndaSeleccionada( !PINTA );
 | 
				
			||||||
 | 
					  } else
 | 
				
			||||||
 | 
					  if ( IncrementoMarca < 0 )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   MRK_begin += IncrementoMarca;
 | 
				
			||||||
 | 
					   if ( MRK_begin < 0 )
 | 
				
			||||||
 | 
					                            MRK_begin = 0;
 | 
				
			||||||
 | 
					   Dibuja_OndaSeleccionada( !PINTA );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					 } else if ( InicioFin == FIN )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  if ( IncrementoMarca > 0 )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   MRK_end +=IncrementoMarca;
 | 
				
			||||||
 | 
					   if ( MRK_end > (oAnchoVentana * oVentanas) )
 | 
				
			||||||
 | 
					                            MRK_end = (oAnchoVentana * oVentanas);
 | 
				
			||||||
 | 
					   Dibuja_OndaSeleccionada( !PINTA );
 | 
				
			||||||
 | 
					  } else
 | 
				
			||||||
 | 
					  if ( IncrementoMarca < 0 )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   MRK_end +=IncrementoMarca;
 | 
				
			||||||
 | 
					   while ( MRK_end < MRK_begin ) MRK_end ++;
 | 
				
			||||||
 | 
					   if ( MRK_end < 0 )
 | 
				
			||||||
 | 
					                            MRK_end = 0;
 | 
				
			||||||
 | 
					   Dibuja_OndaSeleccionada( !PINTA );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					 } else {
 | 
				
			||||||
 | 
					   Dibuja_OndaSeleccionada(PINTA);
 | 
				
			||||||
 | 
					   MRK_begin = 0;
 | 
				
			||||||
 | 
					   MRK_end   = oAnchoVentana * oVentanas;
 | 
				
			||||||
 | 
					   Dibuja_OndaSeleccionada(PINTA);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***************************************************************************\
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Dibuja_OndaSeleccionada                                                 *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Descripci<63>n:                                                            *|
 | 
				
			||||||
 | 
					|*              Dibuja la onda seleccionada.                               *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Entradas:                                                               *|
 | 
				
			||||||
 | 
					|*           PINTA   Redibuja la selecci<63>n completa.                       *|
 | 
				
			||||||
 | 
					|*          !PINTA   Solo dibuja lo que ha cambiado.                       *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Salidas:  (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					\***************************************************************************/
 | 
				
			||||||
 | 
					void Dibuja_OndaSeleccionada( char QueHago )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 float xActual;
 | 
				
			||||||
 | 
					 int   xReal, yReal;
 | 
				
			||||||
 | 
					 float ReduccionX;//, ReduccionYmini;
 | 
				
			||||||
 | 
					 static float oldHasta, oldDesde;
 | 
				
			||||||
 | 
					 //static long OldDesplazamiento;
 | 
				
			||||||
 | 
					 static char PintaBorra = PINTA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 char tmp, buffer[80];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 if ( QueHago != PINTA )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   tmp = PintaBorra;
 | 
				
			||||||
 | 
					   PintaBorra = PINTA;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					 // Calculamos el factor de reducci<63>n para el ancho de la ventana
 | 
				
			||||||
 | 
					 if  ( PintaBorra == PINTA )
 | 
				
			||||||
 | 
					      ReduccionX = (float)(oHasta - oDesde) / (float)oAnchoVentana;
 | 
				
			||||||
 | 
					 else
 | 
				
			||||||
 | 
					      ReduccionX = (float)( oldHasta - oldDesde ) / (float)oAnchoVentana;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//      ReduccionYmini = (float) oAlto / (float)oAltoVentana;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 setwritemode( XOR_PUT );
 | 
				
			||||||
 | 
					 setcolor( cfgFREC.oSelect );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 for ( xActual = (PintaBorra == PINTA ? (oDesde + 5 * Desplazamiento ) : oldDesde ), xReal = 0; xReal < oAnchoVentana; xActual += ReduccionX, xReal ++ )
 | 
				
			||||||
 | 
					   if ( QueHago == PINTA )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					        if ( xActual >= (PintaBorra == PINTA ? MRK_begin : oldMRK_begin ) && xActual <= (PintaBorra == PINTA ? MRK_end : oldMRK_end) )
 | 
				
			||||||
 | 
					         line ( xReal + inicioMGx, inicioMGy + SaltosMatrixY, xReal + inicioMGx, inicioMGy+oAltoVentana - SaltosMatrixY );
 | 
				
			||||||
 | 
					   } else {
 | 
				
			||||||
 | 
					   // Dibuja solo lo necesario de la onda marcada...
 | 
				
			||||||
 | 
					        if (
 | 
				
			||||||
 | 
					               ( xActual >= oldMRK_begin && xActual < MRK_begin ) ||
 | 
				
			||||||
 | 
					               ( xActual <  oldMRK_begin && xActual >= MRK_begin ) ||
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					               ( xActual > oldMRK_end && xActual <= MRK_end ) ||
 | 
				
			||||||
 | 
					               ( xActual <= oldMRK_end && xActual > MRK_end )
 | 
				
			||||||
 | 
					           )
 | 
				
			||||||
 | 
					         line ( xReal + inicioMGx, inicioMGy + SaltosMatrixY, xReal + inicioMGx, inicioMGy+oAltoVentana - SaltosMatrixY );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 setwritemode( COPY_PUT );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 if ( PintaBorra == PINTA )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					                          oldHasta = oHasta + 5*Desplazamiento;
 | 
				
			||||||
 | 
					                          oldDesde = oDesde + 5*Desplazamiento;
 | 
				
			||||||
 | 
					                          oldMRK_begin = MRK_begin;
 | 
				
			||||||
 | 
					                          oldMRK_end   = MRK_end;
 | 
				
			||||||
 | 
					                          PintaBorra   = BORRA;
 | 
				
			||||||
 | 
					 } else                   PintaBorra   = PINTA;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 if ( QueHago != PINTA )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   PintaBorra = tmp;
 | 
				
			||||||
 | 
					   sprintf( buffer, "Selct: %05ld", ( MRK_end-MRK_begin ) );
 | 
				
			||||||
 | 
					   Fuente_Amplia( buffer, &Letras );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***************************************************************************\
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* DesplazaOnda                                                            *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Descripci<63>n:                                                            *|
 | 
				
			||||||
 | 
					|*              Mueve la onda en cualquier direcci<63>n o la centra vertic.   *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Entradas:                                                               *|
 | 
				
			||||||
 | 
					|*           Lugar a donde ser<65> movida.   ARRIBA, ABAJO, IZQUIERDA         *|
 | 
				
			||||||
 | 
					|*                                        DERECHA, CENTRAR.                *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Salidas:  (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					\***************************************************************************/
 | 
				
			||||||
 | 
					void DesplazaOnda( char Lugar )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					                int oldCero = ceroOGenerada, xM;
 | 
				
			||||||
 | 
					                  float xActual;
 | 
				
			||||||
 | 
					                  int   xReal;
 | 
				
			||||||
 | 
					                  float ReduccionX, ReduccionYmini;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 switch( Lugar )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					  case DERECHA:
 | 
				
			||||||
 | 
					                 // Limpiamos la zona antigua
 | 
				
			||||||
 | 
					                 setwritemode( XOR_PUT );
 | 
				
			||||||
 | 
					                 setcolor( cfgFREC.mMarco );
 | 
				
			||||||
 | 
					                 rectangle( 8 + Desplazamiento, inicioMmGy, 8 + mAnchoMarco + Desplazamiento, inicioMmGy + mAltoCuadro );
 | 
				
			||||||
 | 
					                 Desplazamiento += 5; if ( ( mAnchoMarco + Desplazamiento ) > oAnchoVentana ) Desplazamiento = oAnchoVentana - mAnchoMarco;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 rectangle( 8 + Desplazamiento, inicioMmGy, 8 + mAnchoMarco + Desplazamiento, inicioMmGy + mAltoCuadro );
 | 
				
			||||||
 | 
					                 setwritemode( COPY_PUT );
 | 
				
			||||||
 | 
					                 // Tras desplazar redibujamos la onda
 | 
				
			||||||
 | 
					                 DibujaOnda(oDesde + 5 * Desplazamiento, oHasta + 5 * Desplazamiento,  oAnchoVentana, oAltoVentana, GRANDEo );
 | 
				
			||||||
 | 
					       break;
 | 
				
			||||||
 | 
					  case IZQUIERDA:
 | 
				
			||||||
 | 
					                 // Limpiamos la zona antigua
 | 
				
			||||||
 | 
					                 setwritemode( XOR_PUT );
 | 
				
			||||||
 | 
					                 setcolor( cfgFREC.mMarco );
 | 
				
			||||||
 | 
					                 rectangle( 8 + Desplazamiento, inicioMmGy, 8 + mAnchoMarco + Desplazamiento, inicioMmGy + mAltoCuadro );
 | 
				
			||||||
 | 
					                 Desplazamiento -= 5; if ( Desplazamiento < 0 ) Desplazamiento = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 rectangle( 8 + Desplazamiento, inicioMmGy, 8 + mAnchoMarco + Desplazamiento, inicioMmGy + mAltoCuadro );
 | 
				
			||||||
 | 
					                 setwritemode( COPY_PUT );
 | 
				
			||||||
 | 
					                 // Tras desplazar redibujamos la onda
 | 
				
			||||||
 | 
					                 DibujaOnda(oDesde + 5 * Desplazamiento, oHasta + 5 * Desplazamiento,  oAnchoVentana, oAltoVentana, GRANDEo );
 | 
				
			||||||
 | 
					       break;
 | 
				
			||||||
 | 
					  case ARRIBA:
 | 
				
			||||||
 | 
					  case ABAJO:
 | 
				
			||||||
 | 
					  case CENTRAR:
 | 
				
			||||||
 | 
					                  // Tras desplazar redibujamos la onda
 | 
				
			||||||
 | 
					                  //       Con una nueva funcion que tenga en cuenta la nueva funci<63>n.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                 switch( Lugar )
 | 
				
			||||||
 | 
					                  {
 | 
				
			||||||
 | 
					                    case ARRIBA:  ceroOGenerada -= 5;                        break;
 | 
				
			||||||
 | 
					                    case CENTRAR: ceroOGenerada  = ( oAltoVentana / 2 ) + 2; break;
 | 
				
			||||||
 | 
					                    case ABAJO:   ceroOGenerada += 5;                        break;
 | 
				
			||||||
 | 
					                  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  // Calculamos el factor de reducci<63>n para el ancho de la ventana
 | 
				
			||||||
 | 
					                  ReduccionX =  (float)( oHasta  - oDesde ) / (float)oAnchoVentana;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  for ( xActual = oDesde + 5 * Desplazamiento, xReal = 0; xReal < oAnchoVentana; xActual += ReduccionX, xReal ++ )
 | 
				
			||||||
 | 
					                  {
 | 
				
			||||||
 | 
					                   if (    oOndaGenerada[xReal] >= inicioMGy && oOndaGenerada[xReal] <= inicioMGy + oAltoVentana )
 | 
				
			||||||
 | 
					                       // Si vez es cero no restauramos el viejo contenido, ya que no existe
 | 
				
			||||||
 | 
					   		       putpixel( xReal + inicioMGx, oOndaGenerada[xReal], cOndaGenerada[xReal] );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                   // Borramos la linea del cero antigua
 | 
				
			||||||
 | 
					                   if ( ( inicioMGy+oldCero ) >= inicioMGy && ( inicioMGy + oldCero ) <= ( inicioMGy + oAltoVentana) )
 | 
				
			||||||
 | 
					                              if ( oldCero % SaltosMatrixY )
 | 
				
			||||||
 | 
					                                             putpixel( xReal + inicioMGx, oldCero + inicioMGy, EGA_BLACK );
 | 
				
			||||||
 | 
					                              else
 | 
				
			||||||
 | 
					                                             putpixel( inicioMGx +  xReal, inicioMGy + oldCero, ( ( xReal % SaltosMatrixX ) ? EGA_BLACK : cfgFREC.gMatrix ));
 | 
				
			||||||
 | 
					                   // Colocamos la nueva
 | 
				
			||||||
 | 
					                   if ( ( inicioMGy+ceroOGenerada ) >= inicioMGy && ( inicioMGy + ceroOGenerada ) <= ( inicioMGy + oAltoVentana) )
 | 
				
			||||||
 | 
					                              if ( ceroOGenerada % SaltosMatrixY )
 | 
				
			||||||
 | 
					                                             putpixel( xReal + inicioMGx, ceroOGenerada + inicioMGy, cfgFREC.gMatrix );
 | 
				
			||||||
 | 
					                              else
 | 
				
			||||||
 | 
					                                             putpixel( xReal + inicioMGx, ceroOGenerada + inicioMGy, ( ( xReal % SaltosMatrixX ) ? cfgFREC.gMatrix : EGA_BLACK ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                   oOndaGenerada[xReal] = OndaGenerada[(int)xActual] + ceroOGenerada + inicioMGy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                   if (    oOndaGenerada[xReal] >= inicioMGy && oOndaGenerada[xReal] <= ( inicioMGy + oAltoVentana ) )
 | 
				
			||||||
 | 
					                   {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        cOndaGenerada[xReal] = (char)getpixel( xReal + inicioMGx, oOndaGenerada[xReal] );
 | 
				
			||||||
 | 
					                        putpixel( xReal + inicioMGx, oOndaGenerada[xReal], cfgFREC.gOnda );
 | 
				
			||||||
 | 
					                   }
 | 
				
			||||||
 | 
					                  } // BUCLE FOR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//                  DibujaOnda(oDesde + 5 * Desplazamiento, oHasta + 5 * Desplazamiento,  oAnchoVentana, oAltoVentana, GRANDEo );
 | 
				
			||||||
 | 
					                  Redibuja_MiniOnda();
 | 
				
			||||||
 | 
					       break;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***************************************************************************\
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* ReajusteTierra                                                          *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Descripci<63>n:                                                            *|
 | 
				
			||||||
 | 
					|*              Ajusta el nivel de continua                                *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Entradas:                                                               *|
 | 
				
			||||||
 | 
					|*           Ajuste hacia ARRIBA - ABAJO                                   *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Salidas:  (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					\***************************************************************************/
 | 
				
			||||||
 | 
					void ReajusteTierra( char aDonde )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 int x;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 for (  x = 0; x < (oAnchoVentana * oVentanas); x++ )
 | 
				
			||||||
 | 
					     if ( aDonde == ARRIBA)
 | 
				
			||||||
 | 
					                OndaGenerada[ x ] --;
 | 
				
			||||||
 | 
					     else
 | 
				
			||||||
 | 
					     if ( aDonde == ABAJO )
 | 
				
			||||||
 | 
					                OndaGenerada[ x ] ++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 DibujaOnda(oDesde + 5 * Desplazamiento, oHasta + 5 * Desplazamiento,  oAnchoVentana, oAltoVentana, GRANDEo );
 | 
				
			||||||
 | 
					 Redibuja_MiniOnda();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***************************************************************************\
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* DibujaOnda                                                              *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Descripci<63>n:                                                            *|
 | 
				
			||||||
 | 
					|*              Dibuja la onda, teniendo encuenta lo que hay detras        *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Entradas:                                                               *|
 | 
				
			||||||
 | 
					|*           Origen de la onda                                             *|
 | 
				
			||||||
 | 
					|*           Final de la onda                                              *|
 | 
				
			||||||
 | 
					|*           Ancho de la ventana                                           *|
 | 
				
			||||||
 | 
					|*           Alto de la ventana                                            *|
 | 
				
			||||||
 | 
					|*           Tipo de Onda ( GRANDE / REDUCIDA )                            *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Salidas:  (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					\***************************************************************************/
 | 
				
			||||||
 | 
					void DibujaOnda( int Desde, int Hasta, int Ancho, int Alto, char GrandeMini )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 static char vez1 = 0;
 | 
				
			||||||
 | 
					 static char vez2 = 0;
 | 
				
			||||||
 | 
					 float xActual;
 | 
				
			||||||
 | 
					 int xReal, yReal;
 | 
				
			||||||
 | 
					 float ReduccionX, ReduccionYmini;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // Si esta activada la funci<63>n de selecci<63>n...
 | 
				
			||||||
 | 
					 // Borramos la marca
 | 
				
			||||||
 | 
					 if ( statusBoton == 17 && GrandeMini == GRANDEo )
 | 
				
			||||||
 | 
					                             Dibuja_OndaSeleccionada(PINTA);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // Calculamos el factor de reducci<63>n para el ancho de la ventana
 | 
				
			||||||
 | 
					 ReduccionX = (float)( Hasta - Desde ) / (float)oAnchoVentana;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 ReduccionYmini = (float) Alto / (float)oAltoVentana;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 for ( xActual = Desde, xReal = 0; xReal < Ancho; xActual += ReduccionX, xReal ++ )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ( GrandeMini == GRANDEo )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (    oOndaGenerada[xReal] >= inicioMGy
 | 
				
			||||||
 | 
					             && oOndaGenerada[xReal] <= inicioMGy + oAltoVentana
 | 
				
			||||||
 | 
					             // Si vez es cero no restauramos el viejo contenido, ya que no existe
 | 
				
			||||||
 | 
					             && ( vez1 != 0 ) )
 | 
				
			||||||
 | 
					   		  putpixel( xReal + inicioMGx, oOndaGenerada[xReal], cOndaGenerada[xReal] );
 | 
				
			||||||
 | 
					        else      vez1 = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        oOndaGenerada[xReal] = OndaGenerada[(int)xActual] + ceroOGenerada + inicioMGy;
 | 
				
			||||||
 | 
					        if (    oOndaGenerada[xReal] >= inicioMGy
 | 
				
			||||||
 | 
					             && oOndaGenerada[xReal] <= ( inicioMGy + oAltoVentana ) )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                  cOndaGenerada[xReal] = (char)getpixel( xReal + inicioMGx, oOndaGenerada[xReal] );
 | 
				
			||||||
 | 
					                  putpixel( xReal + inicioMGx, oOndaGenerada[xReal], cfgFREC.gOnda );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					        if (    mOndaGenerada[xReal] >= inicioMmGy
 | 
				
			||||||
 | 
					             && mOndaGenerada[xReal] <= ( inicioMmGy + mAltoCuadro )
 | 
				
			||||||
 | 
					             // Si vez es cero no restauramos el viejo contenido, ya que no existe
 | 
				
			||||||
 | 
					             && ( vez2 != 0 ) )
 | 
				
			||||||
 | 
					   		  putpixel( xReal + inicioMGx, mOndaGenerada[xReal], cfgFREC.mFondo );
 | 
				
			||||||
 | 
					        else      vez2 = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        mOndaGenerada[xReal] = (int)( ( OndaGenerada[(int)xActual] + ceroOGenerada ) * ReduccionYmini + inicioMmGy );
 | 
				
			||||||
 | 
					        if (    mOndaGenerada[xReal] >= inicioMmGy
 | 
				
			||||||
 | 
					             && mOndaGenerada[xReal] <= ( inicioMmGy + mAltoCuadro ) )
 | 
				
			||||||
 | 
					                  putpixel( xReal + inicioMGx, mOndaGenerada[xReal], cfgFREC.mOnda );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  } // SI GrandeMini
 | 
				
			||||||
 | 
					 } // BUCLE FOR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // Redibujamos la marca
 | 
				
			||||||
 | 
					 if ( statusBoton == 17 && GrandeMini == GRANDEo )
 | 
				
			||||||
 | 
					                             Dibuja_OndaSeleccionada(PINTA);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***************************************************************************\
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Redibuja_MiniOnda                                                       *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Descripci<63>n:                                                            *|
 | 
				
			||||||
 | 
					|*              Dibuja la minionda, teniendo en cuenta no machacar el      *|
 | 
				
			||||||
 | 
					|*              cuadro de desplazamiento                                   *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Entradas: (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Salidas:  (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					\***************************************************************************/
 | 
				
			||||||
 | 
					void Redibuja_MiniOnda(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   // Cuadro onda visible
 | 
				
			||||||
 | 
					   setcolor( cfgFREC.mMarco );   setwritemode( XOR_PUT );
 | 
				
			||||||
 | 
					   rectangle( 8 + Desplazamiento, inicioMmGy, 8 + mAnchoMarco + Desplazamiento, inicioMmGy + mAltoCuadro );
 | 
				
			||||||
 | 
					   setwritemode( COPY_PUT );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   DibujaOnda(     0, oFinalOnda, oAnchoVentana,   mAltoCuadro, MINIo   );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // Cuadro onda visible
 | 
				
			||||||
 | 
					   setcolor( cfgFREC.mMarco );   setwritemode( XOR_PUT );
 | 
				
			||||||
 | 
					   rectangle( 8 + Desplazamiento, inicioMmGy, 8 + mAnchoMarco + Desplazamiento, inicioMmGy + mAltoCuadro );
 | 
				
			||||||
 | 
					   setwritemode( COPY_PUT );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/***************************************************************************\
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* ReajustaTipoOnda                                                        *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Descripci<63>n:                                                            *|
 | 
				
			||||||
 | 
					|*              Inicia la creaci<63>n/tratamiento de un tipo de onda          *|
 | 
				
			||||||
 | 
					|*              ya predefinido...                                          *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Entradas:                                                               *|
 | 
				
			||||||
 | 
					|*           PorDonde_ Punto de la onda a retocar, (amplitud-periodo)      *|
 | 
				
			||||||
 | 
					|*           (indirectamente recibe tambien el tipo de onda predefinida)   *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Salidas:  (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					\***************************************************************************/
 | 
				
			||||||
 | 
					void ReajustaTipoOnda( int PorDonde )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  float xReal, xVirtual, xAux;
 | 
				
			||||||
 | 
					  float xVirtual2;
 | 
				
			||||||
 | 
					  static int count = 0, Tampl = 50;
 | 
				
			||||||
 | 
					  static float Tperd = 0.05;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					switch( Tonda )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 case -1:
 | 
				
			||||||
 | 
					    switch( PorDonde )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					     case ARRIBA:
 | 
				
			||||||
 | 
					     case ABAJO:
 | 
				
			||||||
 | 
					                 for ( xReal = MRK_begin; xReal <= MRK_end; xReal++ )
 | 
				
			||||||
 | 
					                 {
 | 
				
			||||||
 | 
					                  if ( PorDonde == ARRIBA )
 | 
				
			||||||
 | 
					                  {
 | 
				
			||||||
 | 
					                   OndaGenerada[ xReal ] *= 2;
 | 
				
			||||||
 | 
					                   OndaGenerada[ xReal ] ++;
 | 
				
			||||||
 | 
					                  } else {
 | 
				
			||||||
 | 
					                   OndaGenerada[ xReal ] --;
 | 
				
			||||||
 | 
					                   OndaGenerada[ xReal ] /= 2;
 | 
				
			||||||
 | 
					                  }
 | 
				
			||||||
 | 
					                 }
 | 
				
			||||||
 | 
					                 count = 0;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					     case IZQUIERDA:
 | 
				
			||||||
 | 
					                 for ( xReal = xVirtual = MRK_begin; xReal <= MRK_end && xVirtual <= MRK_end; xReal++, xVirtual += IncrementoMarca )
 | 
				
			||||||
 | 
					                         OndaGenerada[ xReal ] = OndaGenerada[ xVirtual ];
 | 
				
			||||||
 | 
					                 if ( xReal != MRK_end )
 | 
				
			||||||
 | 
					                  for ( xReal, xVirtual = MRK_begin; xReal <= MRK_end; xReal++, xVirtual++ )
 | 
				
			||||||
 | 
					                         OndaGenerada[ xReal ] = OndaGenerada[ xVirtual ];
 | 
				
			||||||
 | 
					                 count = 0;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					     case DERECHA:
 | 
				
			||||||
 | 
					                 for ( xReal = MRK_end; xReal >= MRK_begin; xReal-=(IncrementoMarca+count) )
 | 
				
			||||||
 | 
					                  for ( xVirtual = (IncrementoMarca+count); xVirtual > 0 && (xReal-xVirtual+1)>=MRK_begin; xVirtual-- )
 | 
				
			||||||
 | 
					                         OndaGenerada[ xReal - xVirtual + 1 ] = OndaGenerada[ xReal ];
 | 
				
			||||||
 | 
					                 count = (count++) % 32;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					 case 2:
 | 
				
			||||||
 | 
					    switch( PorDonde )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					     case ARRIBA:
 | 
				
			||||||
 | 
					     case ABAJO:
 | 
				
			||||||
 | 
					                 Tampl += (PorDonde == ARRIBA) ? 1 : -1;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					     case IZQUIERDA:
 | 
				
			||||||
 | 
					     case DERECHA:
 | 
				
			||||||
 | 
					                 Tperd += (PorDonde == IZQUIERDA) ? 0.01 : -0.01;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					     case CENTRAR:
 | 
				
			||||||
 | 
					                 Tampl = 50;
 | 
				
			||||||
 | 
					                 Tperd = 0.05;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    for ( xReal = MRK_begin; xReal <= MRK_end; xReal++ )
 | 
				
			||||||
 | 
					                                   OndaGenerada[ xReal ] = (int)(sin( xReal * Tperd ) * Tampl);
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					 case 3:
 | 
				
			||||||
 | 
					    switch( PorDonde )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					     case ARRIBA:
 | 
				
			||||||
 | 
					     case ABAJO:
 | 
				
			||||||
 | 
					                 Tampl += (PorDonde == ARRIBA) ? 1 : -1;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					     case IZQUIERDA:
 | 
				
			||||||
 | 
					     case DERECHA:
 | 
				
			||||||
 | 
					                 if ( Tperd <= 1 )
 | 
				
			||||||
 | 
					                    Tperd += (PorDonde == IZQUIERDA) ? -0.1 : 0.1;
 | 
				
			||||||
 | 
					                 else
 | 
				
			||||||
 | 
					                     Tperd += (PorDonde == IZQUIERDA) ? -1 : 1;
 | 
				
			||||||
 | 
					                 if ( Tperd <= 0.1 ) Tperd = 0.1;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					     case CENTRAR:
 | 
				
			||||||
 | 
					                 Tampl = 50;
 | 
				
			||||||
 | 
					                 Tperd = 0.5;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    count = 0;
 | 
				
			||||||
 | 
					    for ( xReal = MRK_begin; xReal <= MRK_end; )
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					        count = !count;
 | 
				
			||||||
 | 
					       if ( Tperd >= 1 )
 | 
				
			||||||
 | 
					        for ( xVirtual= ( !count ? (-1) : 1 ) * ( Tampl / 2 ); xReal <= MRK_end && (xVirtual*( !count ? (1) : (-1) )) < (Tampl/2) ; xVirtual += ( !count ? 1 : (-1) ) * Dispersion )
 | 
				
			||||||
 | 
					        for ( xAux = Tperd; xReal <= MRK_end && xAux>=0; xReal++, xAux-- )
 | 
				
			||||||
 | 
					                                            OndaGenerada[ xReal ] = (int)xVirtual;
 | 
				
			||||||
 | 
					       else
 | 
				
			||||||
 | 
					        for ( xVirtual= ( !count ? (-1) : 1 ) * ( Tampl / 2 ); xReal <= MRK_end && (xVirtual*( !count ? (1) : (-1) )) < (Tampl/2) ; xReal+=Tperd, xVirtual += ( !count ? 1 : (-1) ) * Dispersion )
 | 
				
			||||||
 | 
					                                            OndaGenerada[ xReal ] = (int)xVirtual;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					 case 1:
 | 
				
			||||||
 | 
					 case 4:
 | 
				
			||||||
 | 
					    switch( PorDonde )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					     case ARRIBA:
 | 
				
			||||||
 | 
					     case ABAJO:
 | 
				
			||||||
 | 
					                 Tampl += (PorDonde == ARRIBA) ? 1 : -1;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					     case IZQUIERDA:
 | 
				
			||||||
 | 
					     case DERECHA:
 | 
				
			||||||
 | 
					                 Tperd += (PorDonde == IZQUIERDA) ? -1 : 1;
 | 
				
			||||||
 | 
					                 if ( Tperd <= 0 ) Tperd = 1;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					     case CENTRAR:
 | 
				
			||||||
 | 
					                 Tampl = 50;
 | 
				
			||||||
 | 
					                 Tperd = 50;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    count = 0;
 | 
				
			||||||
 | 
					    for ( xReal = MRK_begin; xReal <= MRK_end; )
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					        count = !count;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Pinto la linea Continua 'Positiva'
 | 
				
			||||||
 | 
					        for ( xVirtual = 0; xReal <= MRK_end && xVirtual <= Tperd; xReal++, xVirtual++ )
 | 
				
			||||||
 | 
					          OndaGenerada[ xReal ] = ( !count ? (-1) : 1 ) * ( Tampl / 2 );
 | 
				
			||||||
 | 
					       if( Tonda == 4 )
 | 
				
			||||||
 | 
					        for ( xVirtual= ( !count ? (-1) : 1 ) * ( Tampl / 2 ); xReal <= MRK_end && (xVirtual*( !count ? (1) : (-1) )) < (Tampl/2) ; xReal++, xVirtual += ( !count ? 1 : (-1) ) * Dispersion)
 | 
				
			||||||
 | 
					          OndaGenerada[ xReal ] = xVirtual;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					 case  6:
 | 
				
			||||||
 | 
					 case  7:
 | 
				
			||||||
 | 
					 case  8:
 | 
				
			||||||
 | 
					 case  9:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    switch( PorDonde )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					     case ARRIBA:
 | 
				
			||||||
 | 
					     case ABAJO:
 | 
				
			||||||
 | 
					                 Tampl += (PorDonde == ARRIBA) ? 1 : -1;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					     case IZQUIERDA:
 | 
				
			||||||
 | 
					     case DERECHA:
 | 
				
			||||||
 | 
					                 Tperd += (PorDonde == IZQUIERDA) ? 0.0005 : -0.0005;
 | 
				
			||||||
 | 
					                 if ( Tperd < 0.0005 ) Tperd = 0.0005;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					     case CENTRAR:
 | 
				
			||||||
 | 
					                 Tampl = 50;
 | 
				
			||||||
 | 
					                 Tperd = 0.05;
 | 
				
			||||||
 | 
					                 break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    count = Tonda==6 ? 0 : -1;
 | 
				
			||||||
 | 
					    for ( xReal = MRK_begin; xReal <= MRK_end; )
 | 
				
			||||||
 | 
					     {
 | 
				
			||||||
 | 
					        xVirtual = 0;
 | 
				
			||||||
 | 
					        while ( xVirtual*Tperd < ( ( (Tonda==6) || (Tonda==8) )?(M_PI):(M_PI+.5*M_PI)) ) xVirtual++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (           ; (xVirtual*Tperd) < (( (Tonda==6) || (Tonda==8) )?(M_PI+0.5*M_PI):(M_PI*2)) && xReal <= MRK_end;  xVirtual++, xReal++ )
 | 
				
			||||||
 | 
					                                   OndaGenerada[ xReal ] = (int)( sin(xVirtual*Tperd)*Tampl ) + (Tampl/2);
 | 
				
			||||||
 | 
					        if ( Tonda != 8 && Tonda != 9 )
 | 
				
			||||||
 | 
					           for ( xVirtual= ( !count ? (-1) : 1 ) * ( Tampl/2 ); xReal <= MRK_end && (xVirtual*( !count ? (1) : (-1) )) < (Tampl/2) ; xReal++, xVirtual += ( !count ? 1 : (-1) ) * Dispersion)
 | 
				
			||||||
 | 
					                  OndaGenerada[ xReal ] = xVirtual;
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 DibujaOnda(oDesde + 5 * Desplazamiento, oHasta + 5 * Desplazamiento,  oAnchoVentana, oAltoVentana, GRANDEo );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/***************************************************************************\
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Retoca_Punto                                                            *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Descripci<63>n:                                                            *|
 | 
				
			||||||
 | 
					|*              Retoca el punto dado como par<61>metro con el consiguiente    *|
 | 
				
			||||||
 | 
					|*              arrastre de puntos adyacentes, hasta que los adyacentes    *|
 | 
				
			||||||
 | 
					|*              disten del punto anterior, como m<>ximo, disperici<63>n / 2    *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Entradas: Punto del periodo a retocar     Px                            *|
 | 
				
			||||||
 | 
					|*           Punto de la amplitud a ''       Ay                            *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					|* Salidas:  (ninguna)                                                     *|
 | 
				
			||||||
 | 
					|*                                                                         *|
 | 
				
			||||||
 | 
					\***************************************************************************/
 | 
				
			||||||
 | 
					void Retoca_Punto( int Px, int Ay )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  int  old_Px;         // Variables guia de la onda
 | 
				
			||||||
 | 
					  char inc;            // Infome sobre el incremento de la onda ( ASCENDENTE  / DESCENDENTE )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  old_Px = Px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  OndaGenerada[Px] = Ay; // Ajustamos el nuevo valor de un punto ( usr des )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 1<> Acerco por la derecha del punto a retocar
 | 
				
			||||||
 | 
					  while ( abs( OndaGenerada[old_Px+1] - OndaGenerada[old_Px] ) > Dispersion && old_Px < oAnchoVentana*oVentanas )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   if ( OndaGenerada[old_Px+1] > OndaGenerada[old_Px] ) inc = -1; else inc = 1;
 | 
				
			||||||
 | 
					   while ( abs( OndaGenerada[old_Px+1] - OndaGenerada[old_Px] ) > Dispersion )
 | 
				
			||||||
 | 
					                                                              OndaGenerada[old_Px+1] += inc;
 | 
				
			||||||
 | 
					   old_Px ++;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  old_Px = Px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 2<> Acerco por la izquierda del punto a retocar
 | 
				
			||||||
 | 
					  while ( abs( OndaGenerada[old_Px] - OndaGenerada[old_Px-1] ) > Dispersion && old_Px > 0  )
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   if ( OndaGenerada[old_Px] > OndaGenerada[old_Px-1] ) inc = 1; else inc = -1;
 | 
				
			||||||
 | 
					   while ( abs( OndaGenerada[old_Px] - OndaGenerada[old_Px-1] ) > Dispersion )
 | 
				
			||||||
 | 
					                                                              OndaGenerada[old_Px-1] += inc;
 | 
				
			||||||
 | 
					   old_Px --;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  DibujaOnda(oDesde +  5 * Desplazamiento, oHasta +  5 * Desplazamiento,  oAnchoVentana, oAltoVentana, GRANDEo );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										75
									
								
								FREC/FREC_F.H
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								FREC/FREC_F.H
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					#define MODULO extern
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined (_FREC_F_H)
 | 
				
			||||||
 | 
					 #undef  MODULO
 | 
				
			||||||
 | 
					 #define MODULO
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GENERADOR                         1 // selecciona el GENERADOR
 | 
				
			||||||
 | 
					#define OSCILOSCOPIO                      0 // selecciona el OSCILOSCOPIO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ON                                1 // activado
 | 
				
			||||||
 | 
					#define OFF                               0 // desactivado
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define INICIO                           -1 // Seleccion de marca Inicio
 | 
				
			||||||
 | 
					#define TODO                              0 //                    TODA
 | 
				
			||||||
 | 
					#define FIN                               1 //                    Fin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define IZQUIERDA                         3 // Desplazamientos Arriba
 | 
				
			||||||
 | 
					#define DERECHA                           4 // Desplazamientos Arriba
 | 
				
			||||||
 | 
					#define ARRIBA                            0 // Desplazamientos Arriba
 | 
				
			||||||
 | 
					#define CENTRAR                           1 //                 Centrar
 | 
				
			||||||
 | 
					#define ABAJO                             2 //                 Abajo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PINTA                          -125 // Pinta
 | 
				
			||||||
 | 
					#define BORRA                          -126 // Borra
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int SaltosMatrixX,         // Saltos en la Matrix X
 | 
				
			||||||
 | 
					           SaltosMatrixY;         // Saltos en la Matrix Y
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern long MRK_begin, MRK_end,   // Marcas de comienzo y final originales
 | 
				
			||||||
 | 
					            oldMRK_begin,         // >>>>>>>>>>>>>>>>>>>>>>>>>>>
 | 
				
			||||||
 | 
					            oldMRK_end;           // >>> marcas de arrastre  >>>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern char GenOsc,               // para quien son los controles
 | 
				
			||||||
 | 
					            GenOscf[2];           // quien est<73> funcionando ahora
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int  IncrementoMarca;      // incremento al desplazar la marca
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Variables para la onda GENERADA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MODULO int  *OndaGenerada;  // OndaGrande  ( Puntero a la onda completa )
 | 
				
			||||||
 | 
					MODULO int  *oOndaGenerada; // Fondo de la Onda GRANDEo y MINIo
 | 
				
			||||||
 | 
					MODULO char *cOndaGenerada; // Fondo Mini Onda
 | 
				
			||||||
 | 
					MODULO int  *mOndaGenerada; // Fondo de la Onda GRANDEo y MINIo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern long oDesde,         // Inicio de la onda a mostrar
 | 
				
			||||||
 | 
					            oHasta;         // Fin de la onda a mostrar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int oAncho,          // Ancho de la ventana de visualizaci<63>n
 | 
				
			||||||
 | 
					           oAlto;           // Alto de la ventana de vizualizaci<63>n
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int ceroOGenerada;   // Cero de la onda Generada
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern int Desplazamiento,  // Desplazamiento virtual de la onda
 | 
				
			||||||
 | 
					           mAnchoMarco;     // Ancho a mostrar ( reducido )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern char Tonda;          // Tipo de onda a tratar
 | 
				
			||||||
 | 
					extern int  Dispersion;     // Dispercion entre puntos
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void EnviaRecibe( void );
 | 
				
			||||||
 | 
					void Redibuja_MiniOnda( void );
 | 
				
			||||||
 | 
					void DesplazaOnda( char Lugar );
 | 
				
			||||||
 | 
					void SeleccionaControles( void );
 | 
				
			||||||
 | 
					void ReajusteTierra( char aDonde );
 | 
				
			||||||
 | 
					void Retoca_Punto( int Px, int Ax );
 | 
				
			||||||
 | 
					void ReajustaTipoOnda( int PorDonde );
 | 
				
			||||||
 | 
					void Dibuja_OndaSeleccionada( char QueHago );
 | 
				
			||||||
 | 
					void DesplazaMarca( char IncrementoMarca, char InicioFin );
 | 
				
			||||||
 | 
					void DibujaOnda( int Desde, int Hasta, int Ancho, int Alto, char GrandeMini );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										223
									
								
								FREC/FREC_J.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										223
									
								
								FREC/FREC_J.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,223 @@
 | 
				
			|||||||
 | 
					#include <dos.h>
 | 
				
			||||||
 | 
					#include <dir.h>
 | 
				
			||||||
 | 
					#include <math.h>
 | 
				
			||||||
 | 
					#include <conio.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <alloc.h>
 | 
				
			||||||
 | 
					#include <graphics.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "..\..\libs\make_bot\make_bot.h"
 | 
				
			||||||
 | 
					#include "frec.h"
 | 
				
			||||||
 | 
					#include "dibujos.h"
 | 
				
			||||||
 | 
					#include "frec_f.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern CFG_FREC cfgFREC;
 | 
				
			||||||
 | 
					extern int Dispersion;     // En el juego la dispersi<73>n es la velocidad
 | 
				
			||||||
 | 
					extern int Sensibilidad;   // Para sensibilidad > 1, dos jugadores.....
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 int *x;
 | 
				
			||||||
 | 
					 int *y;
 | 
				
			||||||
 | 
					 char direccion;
 | 
				
			||||||
 | 
					 char vidas;
 | 
				
			||||||
 | 
					} JUGADORES;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					JUGADORES J1;// = {  40, ( oAltoVentana / 2 ) + 2 + 135, 6, 3 };
 | 
				
			||||||
 | 
					JUGADORES J2;// = { 600, ( oAltoVentana / 2 ) + 2 + 135, 4, 3 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void LimpiaTablero(void);
 | 
				
			||||||
 | 
					int MoverJugador( JUGADORES *Jug, int color );
 | 
				
			||||||
 | 
					void AnalizaTeclas( JUGADORES *J1, JUGADORES *J2 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int numero;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void JuegoTRON(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 int  muertes = 0;
 | 
				
			||||||
 | 
					 char Buffer[80];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // Asignamos memoria para las lineas
 | 
				
			||||||
 | 
					 if ( ( J1.x = (int *)malloc( 1502*sizeof( int ) ) ) == NULL ) return;
 | 
				
			||||||
 | 
					 if ( ( J1.y = (int *)malloc( 1502*sizeof( int ) ) ) == NULL ) return;
 | 
				
			||||||
 | 
					 if ( ( J2.x = (int *)malloc( 1502*sizeof( int ) ) ) == NULL ) return;
 | 
				
			||||||
 | 
					 if ( ( J2.y = (int *)malloc( 1502*sizeof( int ) ) ) == NULL ) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 LimpiaTablero();
 | 
				
			||||||
 | 
					 /**************************************************************************/
 | 
				
			||||||
 | 
					 setcolor( 13 );
 | 
				
			||||||
 | 
					 rectangle( 9, 134, 626, 275 );
 | 
				
			||||||
 | 
					 /**************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 numero = 1500;
 | 
				
			||||||
 | 
					 J1.x[numero] =  40;          J2.x[numero] = 600;
 | 
				
			||||||
 | 
					 J1.y[numero] = J2.y[numero]  =   ( oAltoVentana / 2 ) + 2 + 135;
 | 
				
			||||||
 | 
					 J1.direccion = 6;    J2.direccion = 4;
 | 
				
			||||||
 | 
					 J1.vidas = J2.vidas = 3;
 | 
				
			||||||
 | 
					 sprintf( Buffer, "Puntos: %d - %d", J1.vidas, J2.vidas );
 | 
				
			||||||
 | 
					 Fuente_Amplia( Buffer, &Letras );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // Comienza el juego mientras a alguno le quede alguna vida
 | 
				
			||||||
 | 
					 while( J1.vidas > 0 && J2.vidas > 0 )
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					   numero--;
 | 
				
			||||||
 | 
					   if ( numero < 0 )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					     J1.x[1501] = J1.x[numero+1];
 | 
				
			||||||
 | 
					     J1.y[1501] = J1.y[numero+1];
 | 
				
			||||||
 | 
					     J2.x[1501] = J2.x[numero+1];
 | 
				
			||||||
 | 
					     J2.y[1501] = J2.y[numero+1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for ( numero = 0; numero < 1500; numero++ )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					     putpixel( J1.x[numero], J1.y[numero], EGA_BLACK );
 | 
				
			||||||
 | 
					     putpixel( J2.x[numero], J2.y[numero], EGA_BLACK );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    numero = 1500;
 | 
				
			||||||
 | 
					    fflush(stdin);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					   Numero_Digital( numero,  &Numeros );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   AnalizaTeclas( &J1, &J2 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // Movemos al 1er Jugador
 | 
				
			||||||
 | 
					   if ( MoverJugador( &J1, cfgFREC.gOnda  ) ) { J1.vidas--; muertes = 1; }
 | 
				
			||||||
 | 
					   // Movemos al 2<>  Jugador
 | 
				
			||||||
 | 
					   if ( MoverJugador( &J2, cfgFREC.mFondo ) ) { J2.vidas--; muertes = 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   if ( muertes != 0 )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					    muertes = 0;
 | 
				
			||||||
 | 
					    for ( ; numero <= 1500; numero++ )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					     putpixel( J1.x[numero], J1.y[numero], EGA_BLACK );
 | 
				
			||||||
 | 
					     putpixel( J2.x[numero], J2.y[numero], EGA_BLACK );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    numero = 1500;
 | 
				
			||||||
 | 
					    J1.x[numero] =  40;          J2.x[numero] = 600;
 | 
				
			||||||
 | 
					    J1.y[numero] = J2.y[numero]  =   ( oAltoVentana / 2 ) + 2 + 135;
 | 
				
			||||||
 | 
					    J1.direccion = 6;    J2.direccion = 4;
 | 
				
			||||||
 | 
					    // Inicializamos el tablero
 | 
				
			||||||
 | 
					    LimpiaTablero();
 | 
				
			||||||
 | 
					    sprintf( Buffer, "Puntos: %d - %d", J1.vidas, J2.vidas );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Fuente_Amplia( Buffer, &Letras );
 | 
				
			||||||
 | 
					    fflush(stdin);
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   delay( Dispersion * 2 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 free( J1.x );
 | 
				
			||||||
 | 
					 free( J1.y );
 | 
				
			||||||
 | 
					 free( J2.x );
 | 
				
			||||||
 | 
					 free( J2.y );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 bar( 9, 134, 626, 275 );
 | 
				
			||||||
 | 
					 LimpiaTablero();
 | 
				
			||||||
 | 
					 DesplazaOnda( CENTRAR );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int MoverJugador( JUGADORES *Jug, int color )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   int Estado = 0; // 0 VIVO      1 MUERTO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // Imprimimos 1pixel de cola para el jugador
 | 
				
			||||||
 | 
					   putpixel( Jug -> x[numero+1], Jug -> y[numero+1], color );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // Movemos al jugador
 | 
				
			||||||
 | 
					   switch( Jug -> direccion )
 | 
				
			||||||
 | 
					   {
 | 
				
			||||||
 | 
					    case 8:
 | 
				
			||||||
 | 
					           Jug -> y[numero] = Jug -> y[numero+1] - 1;
 | 
				
			||||||
 | 
					           Jug -> x[numero] = Jug -> x[numero+1]    ;
 | 
				
			||||||
 | 
					           break;
 | 
				
			||||||
 | 
					    case 2:
 | 
				
			||||||
 | 
					           Jug -> y[numero] = Jug -> y[numero+1] + 1;
 | 
				
			||||||
 | 
					           Jug -> x[numero] = Jug -> x[numero+1]    ;
 | 
				
			||||||
 | 
					           break;
 | 
				
			||||||
 | 
					    case 4:
 | 
				
			||||||
 | 
					           Jug -> x[numero] = Jug -> x[numero+1] - 1;
 | 
				
			||||||
 | 
					           Jug -> y[numero] = Jug -> y[numero+1]    ;
 | 
				
			||||||
 | 
					           break;
 | 
				
			||||||
 | 
					    case 6:
 | 
				
			||||||
 | 
					           Jug -> x[numero] = Jug -> x[numero+1] + 1;
 | 
				
			||||||
 | 
					           Jug -> y[numero] = Jug -> y[numero+1]    ;
 | 
				
			||||||
 | 
					           break;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   // Miramos si esta fuera de los limites para matarlo
 | 
				
			||||||
 | 
					   if ( Jug -> x[numero] < 10 || Jug -> x[numero] > 625 || Jug -> y[numero] < 135 || Jug -> y[numero] > 274 )
 | 
				
			||||||
 | 
					     return 1;
 | 
				
			||||||
 | 
					   // Miramos si ha chocado con sigo mismo o con el compa<70>ero
 | 
				
			||||||
 | 
					   color = getpixel( Jug -> x[numero], Jug -> y[numero] );
 | 
				
			||||||
 | 
					   if ( color == cfgFREC.gOnda || color == cfgFREC.mFondo )
 | 
				
			||||||
 | 
					     return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void LimpiaTablero(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 int yM, xM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 setfillstyle( SOLID_FILL, EGA_BLACK );
 | 
				
			||||||
 | 
					 setcolor( EGA_BLACK );
 | 
				
			||||||
 | 
					 bar( 10, 135, 625, 274 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 // Dibujamos matrix, linea del cero
 | 
				
			||||||
 | 
					 for ( xM = 0;  ( xM + inicioMGx ) < ( oAnchoVentana + inicioMGx ); xM += SaltosMatrixX )
 | 
				
			||||||
 | 
					  for ( yM = 0; ( yM + inicioMGy ) < ( oAltoVentana + inicioMGy  ); yM += SaltosMatrixY )
 | 
				
			||||||
 | 
					   putpixel( xM + inicioMGx, yM + inicioMGy, cfgFREC.gMatrix );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void AnalizaTeclas( JUGADORES *J1, JUGADORES *J2 )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					   // vemos si la tecla del BUFFER es para nosotros
 | 
				
			||||||
 | 
					   if ( kbhit() )
 | 
				
			||||||
 | 
					      switch( getch() )
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					       // Teclas del 1er Jugador
 | 
				
			||||||
 | 
					       case 'D':
 | 
				
			||||||
 | 
					       case 'd':
 | 
				
			||||||
 | 
					            J1 -> direccion = 4;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					       case 'G':
 | 
				
			||||||
 | 
					       case 'g':
 | 
				
			||||||
 | 
					            J1 -> direccion = 6;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					       case 'R':
 | 
				
			||||||
 | 
					       case 'r':
 | 
				
			||||||
 | 
					            J1 -> direccion = 8;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					       case 'F':
 | 
				
			||||||
 | 
					       case 'f':
 | 
				
			||||||
 | 
					            J1 -> direccion = 2;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					       // Teclas del 2<> Jugador
 | 
				
			||||||
 | 
					       case  0 :
 | 
				
			||||||
 | 
					            switch( getch() )
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					             case 75:
 | 
				
			||||||
 | 
					                  J2 -> direccion = 4;
 | 
				
			||||||
 | 
					                  break;
 | 
				
			||||||
 | 
					             case 77:
 | 
				
			||||||
 | 
					                  J2 -> direccion = 6;
 | 
				
			||||||
 | 
					                  break;
 | 
				
			||||||
 | 
					             case 72:
 | 
				
			||||||
 | 
					                  J2 -> direccion = 8;
 | 
				
			||||||
 | 
					                  break;
 | 
				
			||||||
 | 
					             case 80:
 | 
				
			||||||
 | 
					                  J2 -> direccion = 2;
 | 
				
			||||||
 | 
					                  break;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1161
									
								
								FREC/FREC_M.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1161
									
								
								FREC/FREC_M.CPP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								FREC/LITT.CHR
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								FREC/LITT.CHR
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										2141
									
								
								FREC/NUMERO.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2141
									
								
								FREC/NUMERO.CPP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1
									
								
								FREC/R.BAT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								FREC/R.BAT
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					edit frec.img
 | 
				
			||||||
							
								
								
									
										2130
									
								
								NUMERO.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2130
									
								
								NUMERO.CPP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user