Juego de Vida en C ofuscado

El famoso algoritmo, recientemente catalogado como símbolo de los hackers, el juego de vida, escrito en C ofuscado. Un algoritmo que nunca me cansaré de deformar.
				Enrique Espejo, 
Concurso Internacional de C ofuscado.


<------------- Poyecto #1: Juego de Vida --------------->
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>

const X =150;const Y=100;int gp (int x,int y){ char
c ; int offset=320 *y+x;c=peekb ( 0xA000 ,offset );
return c; }void pp( int x,int y,unsigned
char c) ;void ref( int g[X][Y]
) {int i ; int a; for (i=1;i<
X-1 ;i ++){for(a= 1;a<Y-1;a++) {if(g[i][a]==1){pp(i
,a,30) ;}else{if( gp(i,a )>16) pp(i,a,gp(i,a)-1);}}
}}void IM ( char Mode);int vc (int x,int y, int g
[X][Y]) {int r;r=0 ;if( g[x][y-
1]==1) r++;if(g[x +1][ y-1]==1
) r++; if(g[x+1][ y]== 1) r++;
if(g[x+1][y+1] ==1)r++;if (g[x] [y+1]==1) r++; if(g
[x-1][y+1]==1) r++;if(g[x -1][y ]==1)r++;if( g[x-1]
[y-1]==1)r++; return(r); }void main() { IM (0x13);

int batec=1, i,a,g1 [X][Y] ,g2[X] [Y];char te ;
randomize(); for(i=0; i<X-1;i ++){for (a=0;a<Y-1;a
++) {g1[i][a]= rand()%2 ;}}ref (g1);
for (; ;) {if( kbhit () ){te = getch
(); if (te==27 ) break; if (te!= 27)for(i=0; i
<X- 1;i++) for(a =0;a<Y -1 ;a++) g1[i][a]=rand
()% 2 ;} fflush (stdin) ; for( i= 0;i<X -1;i++
) { for (a=0;a <Y-1 ;a ++ ) { switch (vc( i
,a,g1)){case 2:break ;case 3 :g2[i] [a]=1; break;default
:g2[i][a]=0; }}}for( i=0;i<X -1;i++ ){for( a=0;a<Y-1;a++
){g1[i][a]= g2[i][a ];}}ref (g1) ; delay (batec) ; }

}
void pp(int x,int y,unsigned char c)
{ asm{
mov ax,0xA000
mov es,ax
mov dx,[y]
mov bx, dx
mov dh, dl
xor dl, dl
shl bx, 1
shl bx, 1
shl bx, 1
shl bx, 1
shl bx, 1
shl bx, 1
add dx, bx
mov bx,[x]
add bx, dx
mov di, bx
mov ah, [c]
mov es:[di],ah
}
}
void IM(char Mode)
{ asm xor ah, ah
asm mov al, Mode
asm int 10h
}
<------------- fín de proyecto #1 --------------->
Descargar adjuntos
COMPARTE ESTE TUTORIAL

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.