PDA

Ver la versión completa : Codigo divertido



hystd
04-07-2007, 05:11
Hola buenas! Que tal? espero que en este momento esten aprovechando el tiempo mejor que yo xD (ahora sabrán por qué digo ésto... jiji).

Aqui os pongo un codigo que hice en mis ratos libres y quiero compartir mis cositas friquis con ustedes. Cuando vean el resultado, ustedes le dan el nombre que quieran... a mi se me ocurrieron algunos:

Big Bang (porque es similiar a cuando no pillas la señal de TV)
Un hormiguero en mi PC
Monitor LSD (Que no es lo mismo que LCD, juasjuasjuas)
Haciendo cuadros tridimensionales (parecido a los del ojo magico... de esos que te acercas y luego va apareciendo la imagen a medida que te alejas)

Bueno ahi va (está pensado para una resolución de 1024 x 768 (que es la que yo uso...) si tienes alguna distinta cambia los valores correspondientes a estas cifras.

var
x: entero;
monitor: THandle; //manejador a nuestro monitor;

begin
x:=0;
monitor:=GetWindowDC(GetDeskTopWindow); //obtenemos el handle;
while (x<9000000) do begin
SetPixel(monitor, Random(1024), Random(768), Random(999999999));
x:=x+1;
end;
end;

La funciones:

function SetPixel(DC: THandle; X, Y: Integer; Color: integer): LongWord;
contenida en "gdi32.dll", de nombre "SetPixel"
function GetWindowDC(hWnd: THandle): THandle;
contenida en "user32.dll", de nombre "GetWindowDC"
function GetDesktopWindow(): THandle;
cotenida en "user32.dll", de nombre "GetDesktopWindow"

Debes incluirlas en el código fuente.

Si teneis no teneis ganas o tiempo aquí os dejo el ejecutable para que disfruteis de la experiencia... xD

http://www.terra.es/personal7/crazypaddr/monitor.rar

P.D: Este post tal vez debería ir en OFF-TOPIC? Lo puse aquí porque tal vez alguien sepa darle alguna utilidad a las 3 funciones de la API de Windows que he comentado :p

Un saludo

Giskard
04-07-2007, 06:07
El mensaje está bien en la sección de programación, aunque sean programas que consideres sin tópico. El caso es que hay código fuente :). Como no entiendo de visual basic no puedo entenderlo, pero esperemos que alguien nos lo explique :p

Saludos

Malenko
04-07-2007, 09:34
No es Visual Basic, yo díria que es Delphi por la sintaxis.

hystd
04-07-2007, 15:36
Efectivamente, es delphi.

smaug_
04-07-2007, 15:57
Esto y un poco de acido y me podria tirar horas y horas :P Yo opto por el Monitor LSD!!! Me encanta esa droga XDDDDD
Ademas tu invento estaria genial como salvapantallas :P

clarinetista
04-07-2007, 16:36
Mooola :D:D

dark_master8
05-07-2007, 21:39
El de monitor LSD ya lo había visto antes

Giskard
06-07-2007, 06:37
Lo he corrido con wine y no se si sea así como se ve en windows. Comienzan a salir muchos puntitos de colores por toda la pantalla hasta llenarla, quedando al final así como cuando una televisión no tienen antena y está encendida.

Saludos

gondar_f
07-07-2007, 10:07
Está estupendo, me a encantado el monitor LSD... te felicito hystd

ABODUJANA
08-07-2007, 13:32
Siiii,una "droga" alucinante.. :0=

Nost
14-07-2007, 12:11
pero abodujana... NO ERA UNA DROGA!!!!

Aviso: actualmente estoy trabajando para adecuar ese código a Visual Basic, pero no es tan dificil :)

Nost
14-07-2007, 12:13
http://www.terra.es/personal7/crazypaddr/
Todo el mundo está votando que le pareces feo :D

hystd
14-07-2007, 16:08
Puedes implementar mi código friki en cualquier lenguaje :). Tan sólo has de declarar las funciones de la API de Windows que se utilizan (SetPixel, GetWindowDC y GetDesktopWindow).


function SetPixel(DC: THandle; X, Y: Integer; Color: integer): LongWord;
contenida en "gdi32.dll", de nombre "SetPixel"
function GetWindowDC(hWnd: THandle): THandle;
contenida en "user32.dll", de nombre "GetWindowDC"
function GetDesktopWindow(): THandle;
cotenida en "user32.dll", de nombre "GetDesktopWindow"


En Visual Basic sería algo como:

Private Declare Function SetPixel Lib "gdi32"
Alias “SetPixel” (ByVal DC As long, ByVal X As Integer, ByVal Y As Integer, ByVal Color As Integer ) As Long

Private Declare Function GetWindowDC Lib "user32"
Alias "GetWindowDC" (ByVal hWnd As Long) As Long

Private Declare Function GetDeskTopWindow Lib "user32"
Alias "GetDeskTopWindow" () As Long

Tan sólo tienes que ver el tamaño de cada parámetro para poder declararlo correctamente. Para el tipo THandle (LongWord = 32 bits), corresponde a un Long en Visual Basic (4 bytes).

P.D.: Espero que lo de feo fuera de broma (me ha llegado muy dentro) jajaja es coña ;)

Un saludo

thor_186
14-08-2007, 19:04
y esto en C como seria? es que soy un poco novato...

hystd
15-08-2007, 01:05
Hola buenas! pues sería algo así como:

#include <windows.h>

void main (void)
{
int x;
HDC monitor;

x=0;
monitor=GetWindowDC(GetDesktopWindow());
while (x<9000000)
{
SetPixel(monitor, rand()%1024+1, rand()%768+1, rand()%999999999+1);
x++;
}
}


Sólo tienes que incluir el fichero de cabecera <windows.h>

Un saludo