First commit 11/11/1991
This commit is contained in:
commit
cb15a500e4
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 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¢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 @@
|
||||
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¤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¢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 )
|
||||
*
|
||||
* Ú---> 15.000 <---Â---> 15.000 <---Ä---> 15.000 <---Â---> 15.000 <---¿
|
||||
* Ã---> 15.000 <---´ TODO EL KIT POR SOLO Ã---> 15.000 <---´
|
||||
* À---> 15.000 <---Á---> 15.000 <---Ä---> 15.000 <---Á---> 15.000 <---Ù
|
||||
|
||||
|
||||
|
||||
* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
* Û Û
|
||||
* Û Pantalla Principal Û
|
||||
* Û Û
|
||||
* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
|
||||
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-,
|
||||
|
||||
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
|
||||
|
||||
* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
* Û Û
|
||||
* Û Casilla de pregunta ( OPTAR por.... ACEPTAR CANCELAR Û
|
||||
* Û Û
|
||||
* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
|
||||
* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
* Û Û
|
||||
* Û File Browser Û
|
||||
* Û Û
|
||||
* ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||||
|
||||
!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¤o orientacion color texto
|
||||
|
||||
* Men£ para Cargar o Salvar
|
||||
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à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¢n
|
||||
$ 110, 0, 135, 24, 7, 63, 56, 2, 2, 00, 00
|
||||
* Bajar selecci¢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", "¨ 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)
|
||||
{
|
||||
|
||||
// ¨¨ 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)
|
||||
{
|
||||
|
||||
// ¨¨ 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 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¢n
|
||||
oAlto = oAltoVentana; // Alto de la ventana de vizualizaci¢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¢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¢n: *|
|
||||
|* Activa/Desactiva la funci¢n de enviar/recibir onda. *|
|
||||
|* ( seg£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¢n: *|
|
||||
|* Realiza la funci¢n de dezplazamiento de la marca, con *|
|
||||
|* los cursores, y selecci¢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¢n: *|
|
||||
|* Dibuja la onda seleccionada. *|
|
||||
|* *|
|
||||
|* Entradas: *|
|
||||
|* PINTA Redibuja la selecci¢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¢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¢n: *|
|
||||
|* Mueve la onda en cualquier direcci¢n o la centra vertic. *|
|
||||
|* *|
|
||||
|* Entradas: *|
|
||||
|* Lugar a donde ser 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¢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¢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¢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¢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¢n de selecci¢n...
|
||||
// Borramos la marca
|
||||
if ( statusBoton == 17 && GrandeMini == GRANDEo )
|
||||
Dibuja_OndaSeleccionada(PINTA);
|
||||
|
||||
// Calculamos el factor de reducci¢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¢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¢n: *|
|
||||
|* Inicia la creaci¢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¢n: *|
|
||||
|* Retoca el punto dado como par metro con el consiguiente *|
|
||||
|* arrastre de puntos adyacentes, hasta que los adyacentes *|
|
||||
|* disten del punto anterior, como m ximo, disperici¢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 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¢n
|
||||
oAlto; // Alto de la ventana de vizualizaci¢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¢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¤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
Loading…
x
Reference in New Issue
Block a user