24 de Abril de 2018

Archivo para Mayo de 2009 en Ctrl+Alt+Supr, blog de Ollydbg

Una de las cosas que siempre me ha fascinado es la posibilidad de que dos o más ordenadores "hablen" entre sí. La tecnología avanza una barbaridad y hoy en día es relativamente "fácil" programarse una aplicación tipo Cliente/Servidor para poder comunicar dos o más ordenadores.

El tipo de cliente/servidor que os mostraré en esta entrega no es ni por asomo eficiente para un gran volumen de tráfico y de conexiones, pero creo que puede ser perfectamente válido para comunicar un par de decenas de clientes, lo cual nos deja un buen margen de maniobra si tenemos en mente un juego multijugador de "bajo" presupuesto y sin ninguna pretensión mas allá que alimentar nuestro ego :)

Bien, sabiendo esta limitación, repasemos algunos conceptos.

La comunicación la vamos a realizar mediante el protocolo TCP.

Existen multitud de protocolos: TCP, ICMP, IPX, SPX, UDP...Cada uno de ellos con sus caracteristicas particulares. En nuestro caso, el protoclo TCP asegura que lo que se envía, es lo que se va a recibir. Es decir, si yo envío "HOLA, SOY OLLYDBG", el propio protocolo TCP asegura que el "destinatario" va a recibir "HOLA, SOY OLLYDBG".

Mayo
23

.NET Tutorial 7. Manipulando pixels por código: Efecto BlurMotion

Categorías: 

Vamos a ver como es posible manipular un determinado bitmap para crear "efectos" curiosos.

Lo primero que tendremos que saber es que existen varias formas de manejar la información de un bitmap, en función del formato de los pixels que lo forman.

No es lo mismo acceder / manipular un bitmap de 32 bpp (bits por pixels), que uno de 24 bpp, o incluso uno de 8 bpp.

Por ejemplo, en un bitmap de 32 bpp, cada pixel está representado por los siguientes valores:

Un valor entre 0 y 255 para la componente azul
Un valor entre 0 y 255 para la componente verde
Un valor entre 0 y 255 para la componente roja
Un valor entre 0 y 255 para la componente alpha

Sin embargo, en un bitmap de 8bpp, cada pixel está representado por:

Una valor entre 0 y 255 que pertenece a una paleta de colores (paleta con 256 posibles valores)

Teneis que volver a pensar en "Arrays" (Arrays, WTF!!!). Cualquier bitmap, independientemente del formato de pixel que tiene, se almacena en memoria como un array unidimensional.

Para verlo más claro:

Mayo
17

TetrisNET (Parte III)

Categorías: 

Con esta tercera entrega estaremos a punto de finalizar nuestro "tetris", cómo podeis apreciar en el siguiente vídeo:

Para ver este video es necesario tener JavaScript activado y el plugin Flash instalado en el navegador.

Y cómo el movimiento se demuestra andando, empecemos ;)

En las entregas anteriores vimos como crear y mover las piezas. Ahora tenemos que introducir un nuevo elemento: La rejilla de juegos (¿rejilla?....¿juegos?....tengo que de dejar de ver TRON ;)

En nuestro caso, nuestra "rejilla" será algo cómo esto:

Esta rejilla estará representada por la clase clsBloquesColocados. Esta clase contendrá un array bidimensional de 20 x 10 elementos. Cada uno de estos elementos pertenece a la siguiente estructura:

Mayo
13

TetrisNET (Parte II)

Categorías: 

Vamos a empezar a darle "forma" a nuestro tetris. En este entrega haremos esto:

Para ver este video es necesario tener JavaScript activado y el plugin Flash instalado en el navegador.

Aquí ya podremos "mover" las piezas mientras caen. Básicamente tendremos dos objetos que son del tipo clsBloques. uno de ellos, BloqueA representa la pieza Activa (la que estamos moviendo), mientras que el otro objeto, BloqueNext, representa la "próxima" pieza. En posteriores entregas veremos que apenas modificando nada en el código podemos tener más de "una pieza próxima".

Los controles de momento son los siguientes:

Mayo
9

TetrisNET (Parte I)

Categorías: 

En esta serie de tutoriales aprenderemos cómo hacer un "tetris" desde cero.
Mi idea es ir poco a poco pero con buena letra. De poco o nada sirve coger un proyecto con un mogollón de clases, estructuras, módulos si no se entiende la base.

Echaremos mano otra vez de los arrays (WTF!!!). Tal y cómo vimos en el Tutorial 5, los arrays puede que sean la piedra angular de la programación. Cuanto antes os acostumbreis a ellos, antes podreis dar "el siguiente paso".

En nuestro caso construiremos una clase, clsBloques, que se encargará del manejo de las piezas del tetris.
En esta clase tendremos una array bidimensional que representarán a cualquier pieza:

En el caso de la figura anterior, el array mSubCeldas de boolenaos, que está dentro de la clase identifica a los "bloques" de la pieza. Este array bidimensional representa las (filas, columnas) que indican la forma de una pieza. En este caso, el array es de dimensiones (2,3)