25 marzo 2011

Programación de videojuegos en linux

A continuación expongo un pequeño manual, a modo de cookbook, para configurar un entorno linux como plataforma de desarrollo y programación de videojuegos con C++ y las librerías gráficas Allegro. Los entornos de pruebas han sido ubuntu 10.10 y fedora 14.


17 marzo 2011

Algoritmo de ordenación por selección directa

Es un algoritmo sencillo y uno de los más sencillos de recordar e implementar. No es el mejor algoritmo de ordenación ya que realiza una gran cantidad de comparaciones, pero, por el contrario, realiza muy pocos intercambios.

El algoritmo consiste en realizar varias pasadas sobre el vector, de tal manera que el elemento de menor peso se coloque al principio del vector en un solo intercambio. En cada pasada se recorre la parte no ordenada del vector buscando el elemento de menor peso y cuando se localiza se intercambia con el primer elemento de la parte no ordenada del vector.

Veamos la implementación del algoritmo en C:

/* funcion de ordenacion por seleccion directa */
void seleccion_directa(int v[], int N) {
   int min, tmp; // elemento de menor peso y elemento temporal
 
   /* recorremos todo el vector */
   for(int i = 0; i < N - 1; i++) {
      /* suponemos que es el primero */
      min = i;
      /* recorremos la parte no ordenada */
      for(int j = i+1; j < N; j++) {
         /* buscamos el de menor peso */
         if(v[j] < v[min]) min = j;
      }
      /* intercambio posicion i por el de menor peso */
      tmp = v[i];
      v[i] = v[min];
      v[min] = tmp;  
   }
}

Enlaces externos:

02 marzo 2011

Algorito de ordenación por inserción directa

Éste es el algoritmo de ordenación más intuitivo para el ser humano, ya que el método de ordenación es el natural para nosotros. Es el que utilizaríamos, por ejemplo, para ordenar una baraja de cartas. A este algoritmo también se le conoce como "insertion short".

Su funcionamiento es el siguiente. Tomamos el vector (nuestra baraja de cartas), que está desordenado. Cogemos la carta de arriba y la insertamos en su lugar correspondiente en un montón separado. Una vez recorridas todas las cartas, el montón separado ya está ordenado.

Veamos como se implementa este algoritmo en C.

void insercion_directa(int v[], int N) {
   int tmp;
 
   for (int i=1; i < N; i++) {
      tmp = v[i];
      j = i - 1;
      while(int j >= 0 && v[j] > tmp) {
         v[j+1] = v[j];
         j--;
      }
      v[j+1] = tmp;
   }
}


Enlaces externos:

28 febrero 2011

Algoritmo de ordenación de la burbuja

Es el algoritmo de ordenación más sencillo de implementar y a la vez el más ineficiente. Recibe otros nombres como: bubble short o método de intercambio directo.

Funciona de la siguiente manera: dado un vector de números desordenados, se va recorriendo dicho vector en sucesivas iteraciones de tal manera que los elementos de menor peso se intercambian para que ocupen posiciones superiores (como si fueran burbujas, de ahí el nombre del algoritmo) hasta que ya no hay elementos que intercambiar, momento en el que el vector ya está ordenado.

Veamos a continuación la implementación de este algoritmo en C.

// funcion de ordenacion
void intercambio_directo(int v[], int N) {
   int aux;

   for(int i = 1; i < N; i++)
      for(int j = N - 1; j >= i; j--)
         if(v[j-1] > v[j]) { // intercambiamos los valores
            aux = v[j-1];
            v[j-1] = v[j];
            v[j] = aux;
         }
}

26 febrero 2011

Determinar y configurar las opciones de hardware (parte I)

Introducción

El proceso de configuración de los elementos de hardware en un ordenador requiere cierta familiaridad con los mismos y con su configuración, especialmente los más antiguos, que necesitan algún tipo de configuración manual para evitar conflictos de hardware. Actualmente no es necesario este proceso ya que la mayoría de las configuraciones básicas vienen prefijadas en el firmware del dispositivo o en la BIOS del sistema.

Objetivo

El objetivo de esta entrada es poder determinar y configurar las opciones de hardware en un sistema GNU/Linux. De esta manera, además, podremos determinar y solucionar los conflictos y problemas que puedan surgirnos con nuestro hardware.

Loren Ipsum

"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."