First commit 29/09/1996
This commit is contained in:
		
							
								
								
									
										127
									
								
								FUEGO.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								FUEGO.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,127 @@
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
char *MPantalla;
 | 
			
		||||
char Pantalla[320][200];
 | 
			
		||||
 | 
			
		||||
void DoPaleta(void);
 | 
			
		||||
void CreaBase(void);
 | 
			
		||||
void CalculaFuego(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void main( void )
 | 
			
		||||
{
 | 
			
		||||
 int x, y;
 | 
			
		||||
 | 
			
		||||
  MPantalla = (char *)MK_FP(0xA000, 0);  // create a pointer to video memory
 | 
			
		||||
 | 
			
		||||
  asm    mov al, 0x13
 | 
			
		||||
  asm    mov ah, 0x00
 | 
			
		||||
  asm    int 0x10
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  // Hacer paleta
 | 
			
		||||
  DoPaleta();
 | 
			
		||||
  randomize();
 | 
			
		||||
  CreaBase();
 | 
			
		||||
/*
 | 
			
		||||
 for ( x = 30; x < 290; x++ )
 | 
			
		||||
   for ( y = 190; y < 80; y++ )
 | 
			
		||||
       MPantalla[320*y+x] = Pantalla[x][y];
 | 
			
		||||
*/
 | 
			
		||||
 do
 | 
			
		||||
 {
 | 
			
		||||
   CalculaFuego();
 | 
			
		||||
/*
 | 
			
		||||
   for ( x=30; x<290; x++)
 | 
			
		||||
       for ( y=190; y > 80; y -- )
 | 
			
		||||
          MPantalla[320*y+x] = Pantalla[x][y];
 | 
			
		||||
*/
 | 
			
		||||
 } while ( !kbhit() );
 | 
			
		||||
 | 
			
		||||
 textmode(LASTMODE);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void DoPaleta(void)
 | 
			
		||||
{
 | 
			
		||||
  int i;
 | 
			
		||||
 | 
			
		||||
  for ( i=0; i<15; i++ )
 | 
			
		||||
  {
 | 
			
		||||
   outport( 0x3c9, 0 );
 | 
			
		||||
   outport( 0x3c9, 0 );
 | 
			
		||||
   outport( 0x3c9,   0 );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for ( i=0; i<7; i++ )
 | 
			
		||||
  {
 | 
			
		||||
   outport( 0x3c9, i*4);//i*4 );
 | 
			
		||||
   outport( 0x3c9, i*4);//i*4 );
 | 
			
		||||
   outport( 0x3c9,   0 );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for ( i=0; i<31; i++ )
 | 
			
		||||
  {
 | 
			
		||||
   outport( 0x3c9, 63     );
 | 
			
		||||
   outport( 0x3c9, 63-i*2 );
 | 
			
		||||
   outport( 0x3c9,   0 );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for ( i=0; i<63; i++ )
 | 
			
		||||
  {
 | 
			
		||||
   outport( 0x3c9,  63 );
 | 
			
		||||
   outport( 0x3c9,   0 );
 | 
			
		||||
   outport( 0x3c9,   0 );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
   outport( 0x3c8,   0 );
 | 
			
		||||
   outport( 0x3c9,   0 );
 | 
			
		||||
   outport( 0x3c9,   0 );
 | 
			
		||||
   outport( 0x3c9,   0 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CreaBase(void)
 | 
			
		||||
{
 | 
			
		||||
 int i;
 | 
			
		||||
 | 
			
		||||
 for ( i=100; i < 220; i++ )
 | 
			
		||||
 {
 | 
			
		||||
    if ( random(100) < 30 )
 | 
			
		||||
     //Pantalla[i][190] = random(150);
 | 
			
		||||
     MPantalla[320*190 + i ] = random(150);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 for ( i=100; i < 220; i++ )
 | 
			
		||||
 {
 | 
			
		||||
    if ( random(100) < 30 )
 | 
			
		||||
     //Pantalla[i][189] = random(150);
 | 
			
		||||
     MPantalla[320*189 + i ] = random(150);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CalculaFuego(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 int Cur, x, y;
 | 
			
		||||
 | 
			
		||||
 for ( y = 120; y < 190; y++)
 | 
			
		||||
   for ( x = 75; x < 245; x++)
 | 
			
		||||
      {
 | 
			
		||||
//       Cur = (Pantalla[x][y+1] + Pantalla[x+1][y+1] + Pantalla[x-1][y+1] + Pantalla[x+1][y]) >>2 ;
 | 
			
		||||
         Cur = (MPantalla[x+320*(y+1)] + MPantalla[320*(y+1) + x+1] + MPantalla[320*(y+1)+x-1] + MPantalla[320*y +(x+1)]) >>2 ;
 | 
			
		||||
 | 
			
		||||
       if ( Cur > 1 ) Cur--;
 | 
			
		||||
//       Pantalla[x][y-1] = Cur;
 | 
			
		||||
         MPantalla[320*( y-1) + x] = Cur;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
  CreaBase();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user