Curso programación de videojuegos con SDL – ¡Hola mundo!

Comenzaremos con un ejemplo mínimo de SDL dónde abriremos una ventana con el título “Hola Mundo”. Para ello además del código en C prepararemos el Makefile para compilarlo. Podríamos haber usado un entorno de desarrollo integrado como Anjuta por ejemplo, pero ya que se trata de una iniciación a SDL lo mejor creo que es trabajar directamente sobre el compilador y los Makefile.

Makefile

Comenzaremos con el Makefile. Incluiremos además de “sdl-config” las librerías que hemos instalado en el paso anterior:

SDL_CONFIG = sdl-config
DEFAULT_CFLAGS = $(shell $(SDL_CONFIG) --cflags)
MORE_CFLAGS = -O2 

CFLAGS = $(DEFAULT_CFLAGS) $(MORE_CFLAGS)
CXXFLAGS = $(DEFAULT_CFLAGS) $(MORE_CFLAGS) -fno-exceptions -fno-rtti 

LDLIBS = -lSDL_image -lSDL_mixer -lSDL_ttf -lSDL_net
 $(shell $(SDL_CONFIG) --libs) 

all: holamundo_sdl
holamundo_sdl: holamundo_sdl.c 

clean:
	rm -f *~
	rm -f main.o main

holamundo_sdl.c

Pasemos ahora a implementar nuestro primer programa con SDL. Será lo más sencillo posible y básicamente realizará las dos siguientes acciones:

  • Abrirá una ventana con el título “Hola Mundo SDL”.
  • Se cerrará cuando pulsemos “Tecla hacia arriba”.

#include <stdio.h> #include <stdlib.h> #include <SDL.h> int main(int argc, char *argv[]) { SDL_Surface *image, *screen; SDL_Rect dest; SDL_Event event; int terminar=0; atexit(SDL_Quit); if (SDL_Init(SDL_INIT_VIDEO) < 0) { printf("No se pudo iniciar SDL: %s\n",SDL_GetError()); exit(1); } screen = SDL_SetVideoMode(640,480,24,SDL_HWSURFACE); if (screen == NULL) { printf("No se puede inicializar el modo gráfico: %s\n", SDL_GetError()); exit(1); } SDL_WM_SetCaption("Hola Mundo SDL","Hola Mundo SDL"); SDL_Flip(screen); while(terminar == 0) { while ( SDL_PollEvent(&event) ) { if ( event.type == SDL_KEYUP ) terminar = 1; } } return 0; } read more

Leer más » 11 Comentarios

Curso programación de videojuegos con SDL – Instalación y configuración

Una vez introducidos en qué es SDL pasemos a la parte práctica. Comencemos instalando los componentes necesarios. Si usas Ubuntu, Debian o cualquier otra distribución que use Synaptic o APT instalaremos los siguientes paquetes: read more

Leer más » 3 Comentarios

Curso programación de videojuegos con SDL – Allegro, otra librería para el desarrollo de videojuegos

Como en (casi) todos los demás aspectos del software libre, existen más alternativas para este mismo propósito. La más famosa de todas es Allegro y tras SDL es la más potente. Algunos consideran OpenGL como una alternativa, sin embargo creo que no debería considerarse así  puesto que se puede integrar perfectamente dentro de un proyecto en SDL o en Allegro para dotar de gráficos tridimensionales al juego.

Hablando de Allegro podemos decir que a grandes rasgos se trata de un conjunto de librerías con el mismo propósito que SDL. Ofrece una funcionalidad realmente parecida. Sin embargo hay aspectos en que se diferencian: read more

Leer más » 3 Comentarios

Curso programación de videojuegos con SDL – ¿Qué es SDL?

En la Wikipedia encontramos que: ”LibSDL es un conjunto de librerías desarrolladas con el lenguaje C que proporcionan funciones básicas para realizar operaciones de dibujado 2D, gestión de efectos de sonido y música, y carga y gestión de imágenes. SDL es una abreviatura en inglés de Simple DirectMedia Layer.

Resaltar como podéis ver que se trata de un conjunto de librerías para C encargada de todos los aspectos que a la hora de crear un juego faltan en las librerías básicas de C. Con ella podemos controlar las pulsaciones sobre el teclado, cargar imágenes, mover sprites o reproducir un sonido. Usando SDL tendremos toda la libertad del mundo para desarrollar un juego tal como nos parezca. SDL se convierte sólo en la herramienta básica para hacer todo aquello que necesitamos, pero a un nivel que no interviene más que en eso. read more

Leer más » 5 Comentarios

Curso programación de videojuegos con SDL – Introducción

Con esta entrada presento el próximo curso que Linux Hispano os va a presentar: “Programación de videojuegos con SDL“. Constará de una serie de entregas que irán  apareciendo periódicamente en forma de entradas, al igual que en el caso de los cursos que ya están publicados:

Aún recuerdo la primera vez que cogí entre mis manos el mando de la Master System II que mis tíos habían regalado a mi primo por Reyes. Estuve jugando al juego más popular de la primera ”mascota” de Sega, Alex Kidd in the miracle world. Fue mi primer acercamiento al ocio digital y en ese mismo momento me pregunté, ¿cómo estará hecho ese videojuego? read more

Leer más » 6 Comentarios

Diferencia entre require e include en PHP

Cuando aprendes a programar en PHP, dos de las primeras funciones que usas son include y require. Prácticamente sirven para lo mismo, insertar código de un tercer fichero en el fichero actual (en otros lenguajes de programación hay funciones o construcciones similares). Pero, ¿cuál es la diferencia entre ellas?

Antes de la versión 4.0.2 de PHP (que prácticamente ninguno usaréis, o al menos deberéis usar), la diferencia radicaba en que require siempre leía el archivo al que hacía referencia, incluso si la línea de código en que se encontraba no se ejecutaba nunca (por ejemplo dentro de un condicional). include en cambio sí que se veía afectado por los condicionales y sí que podíamos hacer que no se ejecutara (por lo que tampoco se ejecutaba el código del archivo diferenciado). read more

Leer más » 3 Comentarios

Curso PHP orientado a objetos – Introducción

Aunque PHP nació como un lenguaje orientado a la programación procedimental, con el tiempo se fue adaptando a las necesidades de los desarrolladores y comenzó a añadir características propias de los lenguajes orientados a objetos.

Esta es la primera entrada de un mini curso de varias entregas en el que trataremos de explicaros cómo usar los mecanismos propios de la orientación a objetos en este lenguaje tan popular del lado del servidor.

Clases, atributos y operaciones

Simplificando mucho, una clase es la representación software de un elemento de la vida real. Si para un determinado problema, que es el que vamos a utilizar, nos importan los usuarios, tendremos la clase “usuario”. La representación software serán los datos y el comportamiento del mismo que nos importe de cara a nuestro sistema. Imaginemos un sencillo sistema de gestión de usuarios que almacene los siguientes datos: read more

Leer más » 2 Comentarios

Los lenguajes de programación más populares en junio de 2011

Como sabéis, sobre todo los más seguidores, cada cierto tiempo siempre me gusta realizar un análisis de los lenguajes de programación más populares para conocer cómo se mueve el mercado con respecto al mes del año pasado. Recordad que todos los meses Tiobe realiza un análisis de los lenguajes más populares según los resultados en los motores de búsquedas.

En el primer puesto está el lenguaje Java. A pesar de las últimas críticas que está cosechando y de su lento progreso con respecto a otros lenguajes sigue siendo líder en el entorno empresarial. Especializarte en este lenguaje es fundamental si quieres aumentar en gran medida tus posibilidades de encontrar trabajo en empresas IT. Además, es el lenguaje que se utiliza principalmente para usar la API de Android. read more

Leer más » 19 Comentarios

Ordenar arrays asociativos en PHP: diferencia entre ksort y asort

Los arrays asociativos son estructuras de datos que PHP nos ofrece para poder almacenar datos asociados a una serie de claves, en lugar de a un índice numérico. En otros lenguajes, se les denomina tablas hash.

La ordenación de dichos arrays, es una de las operaciones básicas de cara a un correcto manejo de los mismos. Para poder llevar a cabo esa operación, PHP nos ofrece dos funciones: asort y ksort que vamos a explicar en esta entrada. Este tipo de array se utiliza muy a menudo al hacer consultas contra bases de datos, con funciones como mysql_fetch_array. read more

Leer más » 2 Comentarios

8 métodos de jQuery que deberías conocer

Si trabajas o piensas trabajar a diario con este fantástico framework de JavaScript que es jQuery, más que probablemente te interese leerte esta entrada donde explicamos 8 métodos básicos de jQuery que quizás no conozcas, pero que sin lugar a dudas, deberías conocer. Esta entrada es una traducción y adaptación del original en inglés aparecido en Queness.

1. data()

El método data nos permite manejar datos de cualquier elemento del DOM de una forma segura, evitando referencias circulares y los efectos sobre la memoria de las mismas. Veamos un ejemplo:

<div data-type="page" data-hidden="true" data-options='{"name":"John"}'></div>
$("div").data("role") === "page";
$("div").data("hidden") === true;
$("div").data("options").name === "John";

O lo que es lo mismo:

$("div").data("role", "page");
$("div").data("hidden", "true");
$("div").data("role", {name: "John"});

Referencia completa en la documentación jQuery de data()

2. stop( [limpiarCola ], [saltarAlFinal] )

El método permite parar, la animación que está actualmente en ejecución. Es verdaderamente útil cuando manejamos imágenes.

Veamos un ejemplo de llamada:

$(this).find('img').stop(true, true).fadeOut();

Referencia completa en la documentación jQuery de stop()

3. toggleClass()

Permite conmutar clases, de forma, que si el elemento tiene ya la clase, la elimina y viceversa. El siguiente código:

$('#home').toggleClass('active');

Hace exactamente lo mismo que este:

if ($('#home').hasClass('active')) {     $('#home').removeClass('active'); } else {     $('#home').addClass('active'); } read more

Leer más » 2 Comentarios