lunes, 13 de junio de 2011
Bromas japoneses
No hay duda que para bromas, los japoneses, jajaja
miércoles, 1 de junio de 2011
Clon de Tetris: Tetriz
Juego tetriz hecho con SDL, SDL_image y SDL_ttf
Aun no hago el tutorial, pero pronto lo hare, cuando tenga algo de tiempo xd, igual el codigo fuente esta incluido para que le vayan hechando una mirada.
Codigo Fuente: http://www.megaupload.com/?d=0LMPGBOJ
Etiquetas:
c++,
codigo fuente,
cpp,
fuente,
juegos,
megaupload,
opensource,
programacion,
sdl,
sdl_image,
sdl_ttf,
tetris,
tetriz
lunes, 30 de mayo de 2011
Psicologia Infantil
Video del dia de hoy, psicologia inversa a su maximo esplendor.
Twitter de Chespirito
Este fue el primer tuit que dio Roberto Gomez Bolaño al unirse a twitter, su twitter es @ChespiritoRGB para aquellos fans de uno de los mejores comediantes. Cuando se escribio este texto ya contaba con 206,023 seguidos.
Bienvenido al twitter Chespirito!!
Etiquetas:
chapulin colorado,
chespirito,
el chavo,
roberto gomez bolaño,
twitter
domingo, 29 de mayo de 2011
Tutorial Vibora 4
Cuarta y ultima parte de este tutorial sobre creacion de videojuegos: Vibora
Parte 1: Tutorial Vibora Parte 1
Parte 2: Tutorial Vibora Parte 2
Parte 3: Tutorial Vibora Parte 3
El codigo fuente se encuentra al final del tutorial.
¿Que es lo que vamos a lograr en este tutorial?
Breve explicacion:
En este tutorial hemos mejorado un poco la apariencia de la vibora (solo le pusimos cabeza y ahora son visibles los cuadros xD), le agregamos la opcion para ponerle pausa al juego y finalmente agregamos colisiones para cuando la vibora choca contra si misma, se reduzca su tamaño.
Archivo con imagenes: http://www.megaupload.com/?d=JTWW0HXB
Se modificaron 2 archivos, snake.cc y snake.hh
Se agregaron 4 nuevas imagenes cabezadown.png, cabezaleft.png, cabezaright.png y cabezaup.png
---- snake.hh ----
Los cambios a la cabecera son pocos, primero se le asigno valores a las posiciones (LEFT=1,RIGHT=2,UP=3,DOWN=4).
Se agrego una nueva funcion llamada isSnake, que sirve para saber si hay una parte de la vibora en un cuadro en especifico (x,y)
Se cambio la variable _square por un vector, aqui tendremos todas las imagenes de la vibora.
Y por ultimo se agrego la variable _pause que nos servira para indicar si el juego esta pausado.
---- snake.cc ----
cSnake::cSnake aqui lo unico que cambio es que asignamos el valor por defecto a la variable _pause (false).
cSnake::~cSnake esta funcion la modificamos para que en lugar de liberar directamente la variable _square, hagamos un ciclo para liberar todas las superficies.
cSnake::start cargamos y agregamos las imagenes de la vibora a _square, se cargan 4 imagenes nuevas con la cabeza de la vibora. Tambien se agregaron una serie de comparaciones para saber si el juego esta en pause, por ejemplo al presionar una tecla, si el juego esta en pause, ignora el evento. Tambien a la hora de limpiar y actualizar la posicion de la vibora.
cSnake::draw aqui lo unico que cambio fue que si es el primer cuadro( la cabeza) obtenemos la imagen por medio de la posicion( por eso le asignamos un valor por defecto a la posicion). Los cuadros que no son cabeza lo guardamos en la posicion _square[0] y los de la cabeza los guardamos del 1 al 4 de tal forma que coincidan con los valores del enum POSITION.
cSnake::actualizar en esta funcion se agrega la comparacion isSnake antes de agregar un nuevo punto a la vibora, sirve para definir si la vibora va a disminuir su tamaño, es decir, si choco contra si misma.
cSnake::isSnake esta es la nueva funcion que nos indifca si la vibora se encuentro sobre un punto (x,y). Recorremos toda la lista de la vibora y la comparamos con el punto proporcionado, si son iguales, regresa TRUE, de lo contrario regresa FALSE.
¿Que sigue?
Este sera el ultimo tutorial de la serie "Vibora", creo que ya cubrimos los puntos basicos de SDL, aun nos falto como agregar texto, pero eso lo veremos en la siguiente serie de tutoriales. Es la primera vez que escribo un tutorial asi que puede ser algo confusas mis explicaciones, pero espero ir mejorando con el tiempo, cualquier duda pueden escribir un comentario y me tomare el tiempo de responderles.
Codigo Fuente: http://www.megaupload.com/?d=CSONREMX
Parte 1: Tutorial Vibora Parte 1
Parte 2: Tutorial Vibora Parte 2
Parte 3: Tutorial Vibora Parte 3
El codigo fuente se encuentra al final del tutorial.
¿Que es lo que vamos a lograr en este tutorial?
Breve explicacion:
En este tutorial hemos mejorado un poco la apariencia de la vibora (solo le pusimos cabeza y ahora son visibles los cuadros xD), le agregamos la opcion para ponerle pausa al juego y finalmente agregamos colisiones para cuando la vibora choca contra si misma, se reduzca su tamaño.
Archivo con imagenes: http://www.megaupload.com/?d=JTWW0HXB
Se modificaron 2 archivos, snake.cc y snake.hh
Se agregaron 4 nuevas imagenes cabezadown.png, cabezaleft.png, cabezaright.png y cabezaup.png
---- snake.hh ----
Los cambios a la cabecera son pocos, primero se le asigno valores a las posiciones (LEFT=1,RIGHT=2,UP=3,DOWN=4).
Se agrego una nueva funcion llamada isSnake, que sirve para saber si hay una parte de la vibora en un cuadro en especifico (x,y)
Se cambio la variable _square por un vector, aqui tendremos todas las imagenes de la vibora.
Y por ultimo se agrego la variable _pause que nos servira para indicar si el juego esta pausado.
---- snake.cc ----
cSnake::cSnake aqui lo unico que cambio es que asignamos el valor por defecto a la variable _pause (false).
cSnake::~cSnake esta funcion la modificamos para que en lugar de liberar directamente la variable _square, hagamos un ciclo para liberar todas las superficies.
cSnake::start cargamos y agregamos las imagenes de la vibora a _square, se cargan 4 imagenes nuevas con la cabeza de la vibora. Tambien se agregaron una serie de comparaciones para saber si el juego esta en pause, por ejemplo al presionar una tecla, si el juego esta en pause, ignora el evento. Tambien a la hora de limpiar y actualizar la posicion de la vibora.
cSnake::draw aqui lo unico que cambio fue que si es el primer cuadro( la cabeza) obtenemos la imagen por medio de la posicion( por eso le asignamos un valor por defecto a la posicion). Los cuadros que no son cabeza lo guardamos en la posicion _square[0] y los de la cabeza los guardamos del 1 al 4 de tal forma que coincidan con los valores del enum POSITION.
cSnake::actualizar en esta funcion se agrega la comparacion isSnake antes de agregar un nuevo punto a la vibora, sirve para definir si la vibora va a disminuir su tamaño, es decir, si choco contra si misma.
cSnake::isSnake esta es la nueva funcion que nos indifca si la vibora se encuentro sobre un punto (x,y). Recorremos toda la lista de la vibora y la comparamos con el punto proporcionado, si son iguales, regresa TRUE, de lo contrario regresa FALSE.
¿Que sigue?
Este sera el ultimo tutorial de la serie "Vibora", creo que ya cubrimos los puntos basicos de SDL, aun nos falto como agregar texto, pero eso lo veremos en la siguiente serie de tutoriales. Es la primera vez que escribo un tutorial asi que puede ser algo confusas mis explicaciones, pero espero ir mejorando con el tiempo, cualquier duda pueden escribir un comentario y me tomare el tiempo de responderles.
Codigo Fuente: http://www.megaupload.com/?d=CSONREMX
Etiquetas:
c++,
codigo fuente,
cpp,
devcpp,
games,
megaupload,
opensource,
programacion,
sdl,
snake,
vibora,
videojuegos
Barcelona VS Manchester United
El dia de ayer se jugo la final de la Champions League 2011, donde disputaron el Manchester United contra el Barcelona.La verdad es que el Manchester apenas y pudo hacer algo, el barcelona domino la mayoria del partido.
Resultado Final: 3-1 favor Barcelona
Goles:
Etiquetas:
barca,
barcelona,
final,
goles,
league champions,
manchester,
united,
videos
viernes, 27 de mayo de 2011
Tutorial Vibora Parte 3
Tercera parte de este tutorial sobre creacion de videojuegos: Vibora
Parte 1: Tutorial Vibora Parte 1
Parte 2: Tutorial Vibora Parte 2
El codigo fuente se encuentra al final del tutorial.
¿Que es lo que vamos a lograr en este tutorial?
Diagrama de flujo: (no es tecnico, solo representa a gran escala como va el juego)

Breve explicacion:
En este tutorial vamos a continuar con el videojuego de la vibora, en los tutoriales pasados creamos la estructura basica del juego, le pusimos movimiento y control de direccion por medio de las flechas. En este tutorial lo que haremos sera agregar frutas para que crezca la vibora.
Se van a agregar 5 frutas diferentes (aunque una de ellas es un ramo de flores xD).
Archivo con imagenes: http://www.megaupload.com/?d=970JIGJE
Solo se modificaron 2 archivos, snake.cc y snake.hh
---- snake.hh ----
¿Que tenemos de nuevo?
Primero creamos una nueva estructura llamada FRUIT que contendra la informacion de las frutas en la pantalla. Contiene el puntero a la superficie con la imagen de la fruta (SDL_Surface*), la posicion de la fruta (POINT) y los puntos que vale, Los puntos tambien indicaran cuantos cuadros crecera la vibora cuando como esta fruta.
int _maxfruit sirve para guardar el maximo numero de frutas que habra en el juego.
int _pointsleft sirve para guardar el numero de cuadros pendientes que tiene la vibora por crecer.
_surface_frutas aqui se guarda la lista de imagenes cargas (SDL_Surface*). Este lo cree como vector debido a que es mas facil acceder a los elementos.
_frutas aqui guarda la lista de frutas que hay en la pantalla.
---- snake.cc ----
Los cambios en realidad no son muchos, vamos revisando funcio por funcion:
cSnake::cSnake aqui solo se inicializan las 2 nuevas variables que agregamos (_maxfruit y _pointsleft)
cSnake::~cSnake aqui liberamos la memoria de la lista y el vector que creamos.
cSnake::start en esta cargamos las 5 frutas (sandia, platano, fresa, flores y manzana)
cSnake::draw recorremos la lista de frutas en pantalla para dibujarlas
cSnake::actualizar aqui se hacen un poco mas de cosas, se revisa si la vibora "comio" una fruta, si la vibora va a crecer y si falta alguna fruta en pantalla.
¿La vibora 'comio' una fruta?
Se recorre la lista de frutas en pantalla y se compara su posicion con la de la posicion del primer 'cuadro' de la vibora, que seria la cabeza, si son iguales, se elimina y se asigan los puntos a la vibora para que crezca.
¿La vibora va a crecer?
Aqui se realiza una comparacion con los puntos restantes para crecer (_pointsleft), si este es 0 se borra el ultimo cuadro de lo contrario, no se borra y se resta 1 a los puntos puntos restantes para crecer (_pointsleft).
¿Hace falta agregar una fruta en la pantalla?
Se compara la cantidad de frutas en la lista de frutas con las frutas maximas permitidas, si la primera es menor, se agrega una fruta, y asi se van agregando (una por ciclo) hasta que sea igual al maximo permitido. Para sacar la localizacion donde vamos a agregar la fruta generamos 2 numeros pseudo-aleatorios (x,y) y sacamos uno mas para sacar que fruta es la que vamos a agregar y simplemente se agrega a la lista.
Que sigue?
En el siguiente tutorial haremos:
- Mejoraremos un poco la apariencia de la vibora
- Agregaremos una funcion para detectar cuando la vibora choque consigo misma
Codigo Fuente: http://www.megaupload.com/?d=XZTAGNTK
Parte 1: Tutorial Vibora Parte 1
Parte 2: Tutorial Vibora Parte 2
El codigo fuente se encuentra al final del tutorial.
¿Que es lo que vamos a lograr en este tutorial?
Diagrama de flujo: (no es tecnico, solo representa a gran escala como va el juego)

Breve explicacion:
En este tutorial vamos a continuar con el videojuego de la vibora, en los tutoriales pasados creamos la estructura basica del juego, le pusimos movimiento y control de direccion por medio de las flechas. En este tutorial lo que haremos sera agregar frutas para que crezca la vibora.
Se van a agregar 5 frutas diferentes (aunque una de ellas es un ramo de flores xD).
Archivo con imagenes: http://www.megaupload.com/?d=970JIGJE
Solo se modificaron 2 archivos, snake.cc y snake.hh
---- snake.hh ----
¿Que tenemos de nuevo?
Primero creamos una nueva estructura llamada FRUIT que contendra la informacion de las frutas en la pantalla. Contiene el puntero a la superficie con la imagen de la fruta (SDL_Surface*), la posicion de la fruta (POINT) y los puntos que vale, Los puntos tambien indicaran cuantos cuadros crecera la vibora cuando como esta fruta.
int _maxfruit sirve para guardar el maximo numero de frutas que habra en el juego.
int _pointsleft sirve para guardar el numero de cuadros pendientes que tiene la vibora por crecer.
_surface_frutas aqui se guarda la lista de imagenes cargas (SDL_Surface*). Este lo cree como vector debido a que es mas facil acceder a los elementos.
_frutas aqui guarda la lista de frutas que hay en la pantalla.
---- snake.cc ----
Los cambios en realidad no son muchos, vamos revisando funcio por funcion:
cSnake::cSnake aqui solo se inicializan las 2 nuevas variables que agregamos (_maxfruit y _pointsleft)
cSnake::~cSnake aqui liberamos la memoria de la lista y el vector que creamos.
cSnake::start en esta cargamos las 5 frutas (sandia, platano, fresa, flores y manzana)
cSnake::draw recorremos la lista de frutas en pantalla para dibujarlas
cSnake::actualizar aqui se hacen un poco mas de cosas, se revisa si la vibora "comio" una fruta, si la vibora va a crecer y si falta alguna fruta en pantalla.
¿La vibora 'comio' una fruta?
Se recorre la lista de frutas en pantalla y se compara su posicion con la de la posicion del primer 'cuadro' de la vibora, que seria la cabeza, si son iguales, se elimina y se asigan los puntos a la vibora para que crezca.
¿La vibora va a crecer?
Aqui se realiza una comparacion con los puntos restantes para crecer (_pointsleft), si este es 0 se borra el ultimo cuadro de lo contrario, no se borra y se resta 1 a los puntos puntos restantes para crecer (_pointsleft).
¿Hace falta agregar una fruta en la pantalla?
Se compara la cantidad de frutas en la lista de frutas con las frutas maximas permitidas, si la primera es menor, se agrega una fruta, y asi se van agregando (una por ciclo) hasta que sea igual al maximo permitido. Para sacar la localizacion donde vamos a agregar la fruta generamos 2 numeros pseudo-aleatorios (x,y) y sacamos uno mas para sacar que fruta es la que vamos a agregar y simplemente se agrega a la lista.
Que sigue?
En el siguiente tutorial haremos:
- Mejoraremos un poco la apariencia de la vibora
- Agregaremos una funcion para detectar cuando la vibora choque consigo misma
Codigo Fuente: http://www.megaupload.com/?d=XZTAGNTK
Etiquetas:
c++,
games,
programacion,
sdl,
tutorial 3,
vibora,
videojuegos
jueves, 26 de mayo de 2011
Tutorial Vibora Parte 2
Segunda parte de este tutorial sobre creacion de videojuegos: Vibora
La primera parte la puedes encontra aqui: Tutorial Vibora Parte 1
La tercera parte la puedes encontrar aqui: Tutorial de Vibora Parte 3
El codigo fuente se encuentra al final del tutorial.
¿Que es lo que vamos a lograr en este tutorial?
Detalles:
Diagrama de flujo: (no es tecnico, solo representa a gran escala como va el juego)
Continuacion: Clase Snake
En esta clase tendremos nuestro ciclo principal, crearemos las graficas (clase cGraphic), obtendremos las entradas del teclado para manejar la direccion de la vibora, entre otras cosas.
Crearemos 2 archivos mas uno llamado snake.cc y otra snake.hh, de nuevo te recuerdo que puedes llamar los archivos como gustes.
---- Archivo snake.hh ----
Explicacion breve:
La vibora se divide en cuadros de 20*20(BLOQSIZE), y cada cuadro de estos es guardado dentro de una lista. La estructura POINT se utiliza para guardar los puntos de cada cuadro (x,y). Tenemos una enumeracion que utilizaremos para especificar la direccion de la vibora. MAXX y MAXY son para definir el maximo de cuadros de 20x20 que hay en la ventana (si modificas el tamaño de la ventana, tmb tienes que modificar esto, talvez mas adelante lo arreglemos para que lo haga automatico). Hay 2 variables que no se utilizan, asi que puedes borrarlas sin problema, son _inicio y _final.
---- Archivo snake.cc ----
En este archivo empieza lo interesante, que es el ciclo principal, la actualizacion de la vibora, entre otras cosas. Vamos a analizar el codigo.
cSnake::cSnake: Este es nuestro constructor, aqui creamos un nuevo cGraphic, asignamos los valores iniciales, tamaño del snake, cuadros del snake inicial, direccion inicial.
cSnake::~cSnake: Es el destructor, aqui simplemente liberamos la memoria.
cSnake::start: En esta funcion esta el ciclo principal. Al empezar cargamos las imagenes, en este caso solo es una.
Variables Nuevas
SDL_Event event esta estructura sirve para guardar toda la informacion relacionada con los eventos, por ejemplo cuando presionas una tecla, cuando mueves el mouse, etc.
Funciones Nuevas
SDL_PollEvent es utilizada para obtener los eventos pendientes. En otras palabras se crea una lista con todos los eventos que han ocurrido y conforme los vamos obteniendo con (SDL_PollEvent) se van borrando de esta lista. Con esta funcion sabremos si el usuario presiono una tecla, movio el mouse, entre otras cosas.
Sintaxis:
SDL_PollEvent( SDL_Event* event );
SDL_Delay es utilizado para crear una pausa. No hay mucho que explicar solo que detiene el programa el tiempo especificado. Toma como variable el valor en milisegundos.
Sintaxis:
SDL_Delay( Uint32 miliseconds );
Explicacion Sobre el ciclo principal:
cSnake::draw: Aqui lo que hacemos es dibujar la vibora a la superficie principal (la obtenida con SDL_SetVideoMode).
Variables Nuevas
SDL_Rect esta estructura es utilizada para definir una area {Sint16 x, Sint16 y, Uint16 width, Uint16 height}
x y y definen el punto inicial y width y height el ancho y largo respectivamente.
Funciones Nuevas
SDL_BlitSurface es utilizado para pasar una superficie a otra. En este caso dibujamos la imagen que cargamos al principio a la superficie principal. Los valores ocupa es superficie de origen(SDL_Surface*), area de origen(SDL_Rect*, si esta es NULL dibujara toda la imagen), superficie destino(SDL_Surface*), area destino (SDL_Rect* aqui vamos a poner la posicion donde vamos a dibujar la superficie)
Sintaxis:
SDL_BlitSurface(SDL_Surface* origen, SDL_Rect *areaorigen, SDL_Surface* destino, SDL_Rect* areadestino);
cSnake::actualizar: Aqui se actualiza la posicion de la vibora, dependiendo de su direccion. Como el movimiento es continuo, se realiza en cada ciclo. Si no fuera continuo solo se llamaria cuando el usuario presiona una tecla. Aqui esta el motivo por el cual utilizamos una lista. Cuando la vibora se mueve, borramos el ultimo elemento de la lista, y agregamos uno nuevo al principio dependiendo de la direccion. El codigo es muy sencillo asi que no lo explicare mas.
En resumen.
En el proximo tutorial haremos lo siguiente:
Codigo fuente:
http://www.megaupload.com/?d=4KVXZDYS
Tutorial de Vibora Parte 3
La primera parte la puedes encontra aqui: Tutorial Vibora Parte 1
La tercera parte la puedes encontrar aqui: Tutorial de Vibora Parte 3
El codigo fuente se encuentra al final del tutorial.
¿Que es lo que vamos a lograr en este tutorial?
Detalles:
- Inicializar graficos para nuestro juego
- Cargar Datos
- Obtener del teclado hacia donde va la vibora
- Actualizar posicion de la vibora
- Dibujar Vibora
Diagrama de flujo: (no es tecnico, solo representa a gran escala como va el juego)
Continuacion: Clase Snake
En esta clase tendremos nuestro ciclo principal, crearemos las graficas (clase cGraphic), obtendremos las entradas del teclado para manejar la direccion de la vibora, entre otras cosas.
Crearemos 2 archivos mas uno llamado snake.cc y otra snake.hh, de nuevo te recuerdo que puedes llamar los archivos como gustes.
---- Archivo snake.hh ----
Explicacion breve:
La vibora se divide en cuadros de 20*20(BLOQSIZE), y cada cuadro de estos es guardado dentro de una lista. La estructura POINT se utiliza para guardar los puntos de cada cuadro (x,y). Tenemos una enumeracion que utilizaremos para especificar la direccion de la vibora. MAXX y MAXY son para definir el maximo de cuadros de 20x20 que hay en la ventana (si modificas el tamaño de la ventana, tmb tienes que modificar esto, talvez mas adelante lo arreglemos para que lo haga automatico). Hay 2 variables que no se utilizan, asi que puedes borrarlas sin problema, son _inicio y _final.
---- Archivo snake.cc ----
En este archivo empieza lo interesante, que es el ciclo principal, la actualizacion de la vibora, entre otras cosas. Vamos a analizar el codigo.
cSnake::cSnake: Este es nuestro constructor, aqui creamos un nuevo cGraphic, asignamos los valores iniciales, tamaño del snake, cuadros del snake inicial, direccion inicial.
cSnake::~cSnake: Es el destructor, aqui simplemente liberamos la memoria.
Variables Nuevas
SDL_Event event esta estructura sirve para guardar toda la informacion relacionada con los eventos, por ejemplo cuando presionas una tecla, cuando mueves el mouse, etc.
Funciones Nuevas
SDL_PollEvent es utilizada para obtener los eventos pendientes. En otras palabras se crea una lista con todos los eventos que han ocurrido y conforme los vamos obteniendo con (SDL_PollEvent) se van borrando de esta lista. Con esta funcion sabremos si el usuario presiono una tecla, movio el mouse, entre otras cosas.
Sintaxis:
SDL_PollEvent( SDL_Event* event );
SDL_Delay es utilizado para crear una pausa. No hay mucho que explicar solo que detiene el programa el tiempo especificado. Toma como variable el valor en milisegundos.
Sintaxis:
SDL_Delay( Uint32 miliseconds );
Explicacion Sobre el ciclo principal:
- SDL_PollEvent se toma en un ciclo hasta que ya no haya mas eventos que procesar.
- Se hace una switch para procesar los tipos de eventos (event.type). Solo manejamos 2 tipos de eventos: SDL_QUIT que sucede cuando el usuario presiona el boton de salir(x) en la ventana y SDL_KEYDOWN que sucede cuando el usuario presiona una tecla.
- Cuando sucede el evento SDL_QUIT simplemente ponemos en la variable _exit, para que salga del ciclo.
- Con el evento SDL_KEYDOWN hacemos 2 cosas, cuando se presiona una de las flechas cambiamos la direccion de la vibora y la otra es cuando presionamos la tecla q, hacemos lo mismo que en el evento SDL_QUIT.
- Una vez procesado los eventos, realizamos una actualizacion, en este caso solo se actualiza la posicion de la vibora, funcion que veremos mas adelante.
- Despues dibuja la vibora, funcion que veremos mas adelante.
- Dibuja todo al pantalla, esta funcion es de la clase cGraphic, y la vimos en el tutorial anterior (SDL_Flip)
- Por ultimo utilizamos SDL_Delay para hacer una pequeña pause, de otro modo el programa andaria muy rapido y no se alcanzaria a apreciar bien el movimiento. Si en tu computadora corre muy rapido o muy lento, trata de modificar el valor en SDL_Delay. Otra opcion es declarando Frames por segundo(FPS) pero por el momento no veremos eso.
cSnake::draw: Aqui lo que hacemos es dibujar la vibora a la superficie principal (la obtenida con SDL_SetVideoMode).
Variables Nuevas
SDL_Rect esta estructura es utilizada para definir una area {Sint16 x, Sint16 y, Uint16 width, Uint16 height}
x y y definen el punto inicial y width y height el ancho y largo respectivamente.
Funciones Nuevas
SDL_BlitSurface es utilizado para pasar una superficie a otra. En este caso dibujamos la imagen que cargamos al principio a la superficie principal. Los valores ocupa es superficie de origen(SDL_Surface*), area de origen(SDL_Rect*, si esta es NULL dibujara toda la imagen), superficie destino(SDL_Surface*), area destino (SDL_Rect* aqui vamos a poner la posicion donde vamos a dibujar la superficie)
Sintaxis:
SDL_BlitSurface(SDL_Surface* origen, SDL_Rect *areaorigen, SDL_Surface* destino, SDL_Rect* areadestino);
cSnake::actualizar: Aqui se actualiza la posicion de la vibora, dependiendo de su direccion. Como el movimiento es continuo, se realiza en cada ciclo. Si no fuera continuo solo se llamaria cuando el usuario presiona una tecla. Aqui esta el motivo por el cual utilizamos una lista. Cuando la vibora se mueve, borramos el ultimo elemento de la lista, y agregamos uno nuevo al principio dependiendo de la direccion. El codigo es muy sencillo asi que no lo explicare mas.
En resumen.
- Inicializamos SDL
- Cargamos las imagenes
- Mientras no querramos salir, ejecutamos el ciclo principal.
- Dentro del ciclo principal:
- Limpiamos la pantalla
- Obtenemos las teclas presionadas. Dependiendo de la tecla(flecha) asignamos el destino de la vibora
- Actualizamos la posicion de la vibora
- Dibujamos la vibora
- Pasamos todo a nuestra pantalla
- Hacemos una ligera pausa para que no vaya todo muy rapido
En el proximo tutorial haremos lo siguiente:
- Agregar frutas para que la vibora aumente de tamaño (talvez agreguemos mas de 1)
Codigo fuente:
http://www.megaupload.com/?d=4KVXZDYS
Tutorial de Vibora Parte 3
Etiquetas:
2,
c++,
codigo fuente,
megaupload,
parte,
sdl,
snake,
vibora
Tutorial Vibora Parte 1
Empezaremos con el primer tutorial de la creacion de videojuegos en C++ con SDL.
Asumo que ya tienes conocimientos minimos de C++, si no es asi te recomiendo que busques un tutorial o libro de C++ antes de leer este tutorial.
El codigo fuente se encuentra al final del tutorial
¿Que es lo que vamos a lograr en este tutorial?
Detalles:
Diagrama de flujo: (no es tecnico, solo representa a gran escala como va el juego)
Empezamos: Inicializando Graficas
Lo primero que vamos a crear es una clase para lo grafico, es decir, inicializar la ventana,dibujar, cargar imagenes, etc.
Crearemos 2 archivos, uno llamado graphic.hh (la cabecera) y el otro graphic.cc (implementación), el nombre lo puedes poner como quieras, pero asi le llamaremos nosotros.
---- Archivo graphic.hh ----
Si ya tienes experiencia en C++, este codigo es muy facil de entender, aun asi dare una pequeña explicacion sobre lo que es de SDL.
Cabeceras nuevas
SDL.h: Aqui contiene todos los prototipos de las funciones relacionadas con SDL
SDL_image.h: Esta es una 'extension' que se utiliza para trabajar con imagenes
Variables nuevas
SDL_Surface: esta variable guarda el puntero hacia una superficie SDL.
Una superficie SDL es aquella en la cual podemos dibujar. La propia pantalla se tratara como una superficie SDL.
---- Archivo graphic.cc ----
Vamos a analizar un poco el codigo.
cGraphic::cGraphic: El constructor no tiene gran cosa, simplemente asigna variables para la posterior inicializacion.
cGraphic::init: Aqui inicializamos SDL
Encontramos 2 nuevas funciones: SDL_Init y SDL_SetVideoMode.
SDL_Init se utiliza para inicializar los diferentes componentes de SDL, como es el video, audio, joystick,cdrom, entre otros. Regresa -1 cuando hay algun error.
En este caso solo utilizamos SDL_INIT_VIDEO para inicializar el video.
Sintaxis:
SDL_Init( Uint32 flag );
SDL_SetVideoMode se utiliza para definir los diferentes parametros que tendra nuestra ventana, por ejemplo el alto, ancho, bits por pixel y otros atributos que se utilizan para dibujar la pantalla, como si se va a realizar la renderizacion por medio de software o hardware, si se va a abrir en pantalla completa. En error regresa NULL, si no regresa el puntero de la superficie de la pantalla(SDL_Surface).
En este caso utilizamos SDL_HWSURFACE, para crear la superficie en la memoria de la tarjeta de video, SDL_DOUBLEBUF, para crear un doble buffer y opcionalmente SDL_FULLSCREEN, que crea la ventana en pantalla completa.
Sintaxis:
SDL_SetVideoMode( int ancho, int alto, int bitsporpixel, Uint32 flags );
SDL_Flip( SDL_Surface* surface );
cGraphic::clear: Esta funcion la utilizamos para "limpiar" la pantalla, en si lo que hacemos es pintarla de color negro.
Aqui tenemos una nueva funcion: SDL_FillRect
SDL_FillRect es utilizada para "pintar" una region de una superficie con cierto color. Toma como parametro la superficie que se va a pintar, el area que se va a pintar (SDL_Rect) y por ultimo el color. Si el 2do parametro es NULL, se pintara toda la superficie.
Se me olvido mencionar algo, para compilar el programa tienen que agregar las librerias de SDL y SDL_image, ve a las opciones de proyecto (project<project options) y en la pestaña Parameters en el cuadro Linker agrega -lmingw32 -lSDLmain -lSDL_image -lSDL
Asumo que ya tienes conocimientos minimos de C++, si no es asi te recomiendo que busques un tutorial o libro de C++ antes de leer este tutorial.
El codigo fuente se encuentra al final del tutorial
¿Que es lo que vamos a lograr en este tutorial?
Detalles:
- Inicializar graficos para nuestro juego
- Cargar Datos
- Obtener del teclado hacia donde va la vibora
- Actualizar posicion de la vibora
- Dibujar Vibora
Diagrama de flujo: (no es tecnico, solo representa a gran escala como va el juego)
Empezamos: Inicializando Graficas
Lo primero que vamos a crear es una clase para lo grafico, es decir, inicializar la ventana,dibujar, cargar imagenes, etc.
Crearemos 2 archivos, uno llamado graphic.hh (la cabecera) y el otro graphic.cc (implementación), el nombre lo puedes poner como quieras, pero asi le llamaremos nosotros.
---- Archivo graphic.hh ----
Si ya tienes experiencia en C++, este codigo es muy facil de entender, aun asi dare una pequeña explicacion sobre lo que es de SDL.
Cabeceras nuevas
SDL.h: Aqui contiene todos los prototipos de las funciones relacionadas con SDL
SDL_image.h: Esta es una 'extension' que se utiliza para trabajar con imagenes
Variables nuevas
SDL_Surface: esta variable guarda el puntero hacia una superficie SDL.
Una superficie SDL es aquella en la cual podemos dibujar. La propia pantalla se tratara como una superficie SDL.
---- Archivo graphic.cc ----
Vamos a analizar un poco el codigo.
cGraphic::cGraphic: El constructor no tiene gran cosa, simplemente asigna variables para la posterior inicializacion.
cGraphic::init: Aqui inicializamos SDL
Encontramos 2 nuevas funciones: SDL_Init y SDL_SetVideoMode.
SDL_Init se utiliza para inicializar los diferentes componentes de SDL, como es el video, audio, joystick,cdrom, entre otros. Regresa -1 cuando hay algun error.
En este caso solo utilizamos SDL_INIT_VIDEO para inicializar el video.
Sintaxis:
SDL_Init( Uint32 flag );
| Flags mas utilizadas |
|---|
| SDL_INIT_TIMER |
| SDL_INIT_AUDIO |
| SDL_INIT_VIDEO |
| SDL_INIT_EVERYTHING |
SDL_SetVideoMode se utiliza para definir los diferentes parametros que tendra nuestra ventana, por ejemplo el alto, ancho, bits por pixel y otros atributos que se utilizan para dibujar la pantalla, como si se va a realizar la renderizacion por medio de software o hardware, si se va a abrir en pantalla completa. En error regresa NULL, si no regresa el puntero de la superficie de la pantalla(SDL_Surface).
En este caso utilizamos SDL_HWSURFACE, para crear la superficie en la memoria de la tarjeta de video, SDL_DOUBLEBUF, para crear un doble buffer y opcionalmente SDL_FULLSCREEN, que crea la ventana en pantalla completa.
Sintaxis:
SDL_SetVideoMode( int ancho, int alto, int bitsporpixel, Uint32 flags );
| Flags mas utilizadas |
|---|
| SDL_SWSURFACE |
| SDL_HWSURFACE |
| SDL_DOUBLEBUF |
| SDL_FULLSCREEN |
| SDL_OPENGL |
| SDL_NOFRAME |
cGraphic::draw: Esta funcion la utilizamos para actualizar la pantalla.
Aqui tenemos una nueva funcion: SDL_Flip
SDL_Flip en pocas palabras se utiliza para actualizar la pantalla. Toma como parametro la superficie (SDL_Surface*) que obtuvimos con SDL_SetVideoMode. Regresa -1 cuando hay algun error.
Sintaxis:SDL_Flip( SDL_Surface* surface );
cGraphic::loadImage: Esta funcion se encarga de cargar una imagen desde un archivo.
Aqui utilizamos IMG_Load
IMG_Load no es una funcion de SDL, sino de SDL_image, sirve para cargar una imagen desde un archivo y convertirla a una superficie SDL (SDL_Surface). Toma como parametro la ruta del archivo. Regresa NULL cuando no la puede cargar.
Sintaxis:
IMG_Load( const char* filename );cGraphic::clear: Esta funcion la utilizamos para "limpiar" la pantalla, en si lo que hacemos es pintarla de color negro.
Aqui tenemos una nueva funcion: SDL_FillRect
SDL_FillRect es utilizada para "pintar" una region de una superficie con cierto color. Toma como parametro la superficie que se va a pintar, el area que se va a pintar (SDL_Rect) y por ultimo el color. Si el 2do parametro es NULL, se pintara toda la superficie.
Sintaxis:
SDL_FillRect( SDL_Surface* surface, SDL_Rect *dst, Uint32 color );Con esto finalizamos los archivos para manejar las graficas.
En pocas palabras lo que realizamos es:
- Inicializar SDL con SDL_Int
- Crear Superficie de la pantalla con SDL_SetVideoMode
- Limpiar Pantalla con SDL_FillRect
- Actualizar Pantalla con SDL_Flip
Se me olvido mencionar algo, para compilar el programa tienen que agregar las librerias de SDL y SDL_image, ve a las opciones de proyecto (project<project options) y en la pestaña Parameters en el cuadro Linker agrega -lmingw32 -lSDLmain -lSDL_image -lSDL
Etiquetas:
codigo fuente,
megaupload,
opensource,
programacion,
sdl,
snake,
vibora
miércoles, 25 de mayo de 2011
Tutorial 1 - Instalando Dev-CPP
En este primer tutorial vamos a ver como instalar todo lo necesario para la creacion de videojuegos (a nivel de programación).
Puedes ver el video o seguir las instrucciones de abajo.
Bajando Dev-CPP
La primera vez que lo corres va a salir una ventana de configuracion, selecciona el idioma y estilo y presionamos Next.
En la siguiente venta seleccionamos "No" ya que, aunque es una utilidad muy util, por ser un programa inconcluso, esta provoca que marque error el programa.
Presionamos Next hasta que abra el Dev-CPP
Procedemos a bajar las librerias necesarias que son SDL y SDL_image
Puedes ver el video o seguir las instrucciones de abajo.
Bajando Dev-CPP
Instalando Dev-CPP (solo es cuestion de darle Siguiente[Next] a todo)
En la siguiente venta seleccionamos "No" ya que, aunque es una utilidad muy util, por ser un programa inconcluso, esta provoca que marque error el programa.
Presionamos Next hasta que abra el Dev-CPP
Procedemos a bajar las librerias necesarias que son SDL y SDL_image
![]() | |
| Ir al menu Tools > Check for Updates/Packages... |
![]() | |
| En la lista de servidores, seleccionamos devpaks.org |
![]() |
| y presionamos Download selected |
![]() | ||
| Aparecera la lista de modulos, seleccionamos SDL 1.2.13 NSR y SDL_Image 1.2.10 y presioanr Download selected, una vez que se halla descargado simplemente dar next a todo. |
![]() |
| Por ultimo vamos al menu Tools>Editor options, deselecciona Smart Tabs, Selecciona Highligh matching braces y en la parte de abajo donde estas las extensiones agrega hh |
Tutoriales de programacion de juegos
El dia de hoy he decidido hacer unos tutoriales sobre creacion de videojuegos, juegos sencillos obviamente.
Los juegas seran creados con Dev-CPP (C++) y la libreria SDL
Tengo pensado crear desde juegos sencillos e ir subiendo de nivel. La lista que se me ocurre ahora es algo como:
Esos son los que se me ocurren por ahora, pero la lista puede variar. Asi que aquellos interesados en empezar en el mundo de la creacion de videojuegos.
Los juegas seran creados con Dev-CPP (C++) y la libreria SDL
Tengo pensado crear desde juegos sencillos e ir subiendo de nivel. La lista que se me ocurre ahora es algo como:
- Juego de la vibora (uno muy sencillo, y solo sera para aprender como se trabaja con SDL)
- Clon de Tetris
- Clon de Pacman
- Clon de 1942
- Clon de Mario
Esos son los que se me ocurren por ahora, pero la lista puede variar. Asi que aquellos interesados en empezar en el mundo de la creacion de videojuegos.
martes, 24 de mayo de 2011
Television en Vivo
La pagina recomendad del dia de hoy es Justin TV donde puedes ver diferentes canales de television en vivo
5 Meses mas de vida
Este 21 de mayo no se acabo el mundo, segun Harold Camping (el tipo de la foto), se equivo en los calculos a la hora de predecir el fin del mundo, dice que no tomo en cuenta los 5 meses de que Dios daria de tregua a la humanidad
¿uds que opinan? un simple error matematico, o ¿un farsante total?
Al menos no tendre que preocuparme por el disfraces de Halloween! xD
Etiquetas:
21 de octubre,
falso profeta,
fin del mundo,
Harold Camping,
religion
Striptease Policias de Tijuana
El dia de hoy me encontre con esta noticia, en el cual 15 policias son acusados de haber obligado a una chica a bailar y desnudarse para dejarla libre, no se si los hechos son como lo dijeron en las noticias, pero no veo como que se resistio mucho la chica que esta bailando, aunque fuentes extraoficiales dicen que fue detenida por portacion de drogas, talvez al momento del video estaba drogada. Miren el video y juzguen por ustedes mismos.
Etiquetas:
baile,
desnuda,
policias,
striptease,
tijuana
lunes, 23 de mayo de 2011
Otra profecia que no se cumplio
Una vez mas fallaron al predecir el fin del mundo.
El mundo no se acabo como lo predijo harold camping
Lo siento por aquellos que dejaron su trabajo, vendieron sus propiedades, donaron su dinero, para harold camping el haber gastado 140 mil dolares en publicidad fue como haberle quitado un pelo a un gato, talvez fue mas como una inversion, porque me imagino que mas de uno de sus creyentes donaron su dinero a dicha iglesia.
El mundo no se acabo como lo predijo harold camping
Lo siento por aquellos que dejaron su trabajo, vendieron sus propiedades, donaron su dinero, para harold camping el haber gastado 140 mil dolares en publicidad fue como haberle quitado un pelo a un gato, talvez fue mas como una inversion, porque me imagino que mas de uno de sus creyentes donaron su dinero a dicha iglesia.
Etiquetas:
fin del mundo,
Harold Camping,
religion
sábado, 21 de mayo de 2011
Tijuana Vs Irapuato
Estamos a unos minutos de que empiece la final entre Tijuana VS Irapuato, para aquellos que lo quieran ver aqui les dejo el link:
Tijuana VS Irapuato 21 de mayo 13 horas pacifico
Vamos Xolos!!!
TVC Deportes
Tijuana VS Irapuato 21 de mayo 13 horas pacifico
Vamos Xolos!!!
TVC Deportes
Bromas entre parejas
¿Aquien no le gustan las bromas?
Les recomiendo esta pagina: Nikki and John
Es la pagina de una pareja que se dedican a hacerse bromas entre ellos, algunas muy pesadas para mi gusto, pero otras muy divertidas. Me puse a pensar que pasaria si yo le hago una broma de ese tipo a mi esposa, jajaja, yo creo que no la cuento
Una de mis favoritas
Les recomiendo esta pagina: Nikki and John
Es la pagina de una pareja que se dedican a hacerse bromas entre ellos, algunas muy pesadas para mi gusto, pero otras muy divertidas. Me puse a pensar que pasaria si yo le hago una broma de ese tipo a mi esposa, jajaja, yo creo que no la cuento
Una de mis favoritas
El Comienzo del final del mundo
Que mejor dia para empezar un blog, si acaba hoy el mundo, al menos podre decir que en mi vida tuve un blog!!
¿No estan enterado?
Es una noticia que ha estado dando vueltas por la red desde hace una semanas, realmente tendrias que haber estado en una cueva para no haberte dado enterado.
Pues resulta que un pastor llamado Harold Camping dice que el dia de hoy comienza el fin del mundo (con el famoso rapto) y este acabara el dia 21 de octubre.
¿En que se basa dicho señor?
En un estudio de la biblia por casi 70 años. Hasta mando a poner unos espectaculares donde dice que el fin del mundo sera el 21 de mayo. Claro que no agrego que predijo que Jesus regresaria a la tierra en el 1994. ¿Acaso vino y nadie se ha enteredo?
| Harold Camping (wikipedia) |
¿No estan enterado?
Es una noticia que ha estado dando vueltas por la red desde hace una semanas, realmente tendrias que haber estado en una cueva para no haberte dado enterado.
Pues resulta que un pastor llamado Harold Camping dice que el dia de hoy comienza el fin del mundo (con el famoso rapto) y este acabara el dia 21 de octubre.
¿En que se basa dicho señor?
En un estudio de la biblia por casi 70 años. Hasta mando a poner unos espectaculares donde dice que el fin del mundo sera el 21 de mayo. Claro que no agrego que predijo que Jesus regresaria a la tierra en el 1994. ¿Acaso vino y nadie se ha enteredo?
Etiquetas:
21 de mayo,
fin del mundo,
Harold Camping,
religion
Nueva aventura
El dia de hoy comienzo una nueva aventura en el mundo de los Blogs
¿Que podras encontrara aqui?
La verdad de todo un poco, ire poniendo lo que se me vaya ocurriendo desde noticias interesantes, videos chuscos, paginas relevantes, hasta historias personales, talvez un poco de programacion, entre otras cosas
Esten pendientes!!!
¿Que podras encontrara aqui?
La verdad de todo un poco, ire poniendo lo que se me vaya ocurriendo desde noticias interesantes, videos chuscos, paginas relevantes, hasta historias personales, talvez un poco de programacion, entre otras cosas
Esten pendientes!!!
Suscribirse a:
Entradas (Atom)











