lunes 9 de noviembre de 2009

Dios nos ampare...

... se me esta actualizando el msn!!!, NOOOO!!!...

jueves 5 de noviembre de 2009

Videos del Diabolo Bronco

Hoy charlando salio el tema del famoso, el insuperable y divertido(y doloroso) Diabolo Bronco.

De niño seguro todos tubimos uno. Pero con el tiempo, se fueron extinguiendo o pasando de moda. Pero para algunos no:




Hay mas videos para escarbar sobre esto:

Que les parecio?.

Saludos!.

miércoles 4 de noviembre de 2009

XNA 2D - Tiled Map


Los TiledMap son bonitos, nos recuerda a los juegos de zelda, o pokemon de gameboy. Y podemos implementarlo en el xna de una manera facil.

Primero que nada, un tiled map es un mapa que lo creamos a partir de texturas pequeñas, y luego levanta de un algun archivo el mapa. Un ejemplo de como seria ese archivo:

00001111100000
0000000000000
1111111111111111
1111111111111111
0000000000000
0000000000000

Los 0 le hacemos que lo tome como el pasto, y el 1 como los arboles. Luego lo que programamos hace el dibujado en base a eso. Nota: Nosotros en este tutorial debemos cargar al Content un txt, si agregamos, y lo dejamos como esta, nos va a tirar error. Para uqe no lo haga y simplemente lo compile, debemos ir a la propiedades del txt, y debemos cambiar "Accion de Compilacion" a "Ninguna" y "Copiar en el Directorio de Resultado" a "Copiar Siempre".

Lo que tenemos que tener en cuenta(por lo menos con mi codigo para cargar tiledmap) lo siguiente:
- Las textura de cada "cuadradito" deben ser exactamente igual de tamaño respecto a los demas. De no se asi, qeudaria mal el dibujado.
- Debes saber cuantas texturas usaras en ancho, y cuantas texturas de alto. Por ejemplo, en el ejemplo anterior teniamos 14 de x, y 6 de y.

Las texturitas que usaremos:
Ahora bien. El codigo del a clases TiledMap, es esta:

public class TiledMap
{
StreamReader _streamReader;

Texture2D[] _textureSheet; // Array de las texturitas

string _string;

string[] _numDibujo;

int _limitX = 0; // Cantidad de texturas en x
int _limitY = 0; // Cantidad de texturas en y

int _cantDibujado = 0;
int _y = 0;
int _x = 0;

public TiledMap(string Path, Texture2D[] TextureSheet,
int CantX, int CantY)
{
_streamReader = new StreamReader(Path);

_textureSheet = new Texture2D[TextureSheet.Length];
_textureSheet = TextureSheet;

_numDibujo = new string[TextureSheet.Length];

for (int x = 0; x "<" TextureSheet.Length; x++)
{
_numDibujo[x] = x.ToString();
}// Aca nos pone en un array las cantidad de textura que hay

_limitX = CantX;
_limitY = CantY;

_string = _streamReader.ReadToEnd();
_string.ToCharArray();// Combierte toda el txt en un array de caracteres
}

public void Draw(SpriteBatch spriteBatch)
{
for (int x = 0; x "<" _string.Length; x++)
{
if (_cantDibujado >= _limitX)
{
_y++;
_cantDibujado = 0;
_x = 0;
}//Cuando termina de dibujar todo lo que esta en X, baja 1 en Y y sigue.

for (int y = 0; y "<" _textureSheet.Length; y++)
{
if (_string[x].ToString() == _numDibujo[y])
{
spriteBatch.Draw(_textureSheet[y], new Vector2(_x * _textureSheet[y].Width,
_y * _textureSheet[y].Height), Color.White);
_cantDibujado++;
_x++;
break;
}
else
{
continue;
}
}//Dibujado
}
this._ResetCounters(); //Para que nuestro mapa no se mueva y no guarde datos viejos.
}

private void _ResetCounters()
{
_cantDibujado = 0;
_x = 0;
_y = 0;
}
}

Bien, ese es el codigo. Si bien, puede parecer algo confunso(lo mas seguro que si). No es tan dificil de entender.

En el iniciador de la clase:
-Le pasa la ruta del txt que leera para hacerl mapa.
-Le pasa a un array las texturitas.
-Carga la cantidad de textura que se estan por dibujar, y lo guarda en un array. Con numeros de 0 hasta la cantidad de texturas qeu usamos. Nota: Debemos saber como estamos haciendo el mapa, respecto a los numeros. Si nuestra primera textura que cargamos es un pasto, esa es el numero 0, si es la segunda que cargamos, se le pondra en numero 1, etc.
-Agarra todos los caracteres del txt, y los cambia a un array de caracteres.

En el dibujado:
-Primero tenemos un for, que recorrera todo el array de caracteres.
-El segundo for, checa si el numero que esta recorriendo en el tamaño del array de textura(0,1,2...), coincide con el caracter que el for x esta viendo. Si es asi, lo dibuja, y corta el for y, y sigue con el x. De lo contrario, sigue.
-El if sirve cuando ya termina de dibujar todo lo que esta en x, resetea el contador de el espacio que esta dibujando en x a 0, y baja un espacio hacia abajo en Y.
-Por ultimo, resetea los contadores de _y, _x y _cantdibujado, para uqe el mapa se mantenga en el mismo lugar y no se mueva por los datos anteiorres guardado.

Espero no dejarlos onfundidos, pero bueno. Ahora, para usar esta clase es facil, colocaremos esto:

//Declaramos la variables
TiledMap _mapa; Texture2D[] _texmap = new Texture2D[2]; Matrix _camera; Vector2 _positionCamera;

Luego en el load content:
_positionCamera = Vector2.Zero;
_camera = Matrix.Identity;

_texmap[0] = this.Content.Load("pasto1");
_texmap[1] = this.Content.Load("pasto2");
_mapa = new TiledMap("Content//Map.txt", _texmap, 43, 7);

Update:
KeyboardState ks = Keyboard.GetState();
if (ks.IsKeyDown(Keys.Down)) _positionCamera.Y += 4;
if (ks.IsKeyDown(Keys.Up)) _positionCamera.Y -= 4;
if (ks.IsKeyDown(Keys.Left)) _positionCamera.X -= 4;
if (ks.IsKeyDown(Keys.Right)) _positionCamera.X += 4;

_camera = Matrix.CreateTranslation(new Vector3(graphics.PreferredBackBufferWidth/2,
graphics.PreferredBackBufferHeight/2, 0)) *
Matrix.CreateTranslation(new Vector3(-_positionCamera, 0));

Draw:
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.Immediate,
SaveStateMode.SaveState, _camera);
_mapa.Draw(spriteBatch);
spriteBatch.End();

Listo!, y de esta forma nos queda el tiledmap andando. Por si no saben, lo que hicimos con _positionCamera y _camera, es hacer una cara 2D, si quieren mas info, click aca.

NOTA MUY IMPORTANTE: Las " " en los comparadores de los for, deben sacarlos, es que cuando los dejo asi, el HTML me lo toma por un cierre los <>. Y buscar en el HTML donde esta eso y arreglarlo, es un parto.

Espero que les sirva.
Saludos!.

domingo 25 de octubre de 2009

Si me tocara la loteria...

Genial!.

jueves 22 de octubre de 2009

Articulos sobre Desarollo de Juegos

Que tal?, pues solo pasaba para dar una señal de vida y para dejarles un blog que me quedo en el tintero por leer hace un par de dias. Y hoy como estaba aburrido me puse a leer, entro otras cosas que tambien tenia que leer. Y tiene articulos muy interesante, blog recomendado.

http://throwcatching.blogspot.com

Pegense una pasada o agrengenlo a favoritos. Recomendable.

Saludos.

viernes 9 de octubre de 2009

Imagine Cup con muchas personas?

Que onda. Recuerdan que en la feria de ciencias hablamos con mi profesor sobre que hacer para el Imagine Cup?. Bueno, el lunes pasado me quede en el turno noche en la clase de computacion. En la clase de computacion.

Primero el profesor les explica que hay que hacer y que hay pensado. Y les enseña a usar C#. Mientras tanto, yo estaba peleando con una maquina para poder instalar el C# 2008 y el XNA. Pero no pude, maquina de mierda. El jueves lo agarro con los DVDs que tengo yo.

Teoricamente, luego de una o dos clases de C#, tendria que ponerme a enseñar XNA yo. Asi que se va todo al carajo el alto nivel de enseñanza de la escuela. Ya veremos que pasa.

Saludos!.
PD: Tutoriales?, si, algun dia.

viernes 2 de octubre de 2009

El secreto de sus ojos

La fui a ver hoy, en una "excursion" con el cole. La verdad, exelente pelicula. Buena trama, buenos actores.
Muy recomendable que la vean por lo medios que sea.



Saludos!