Categorías > Discusión general > Deliverables del Lobby de Manufacturación de Software ...
Nuevo Mensaje | Responder
Sorancio


307 envíos
Desconectado
1741 lecturas
2 respuestas
Deliverables del Lobby de Manufacturación de Software30-01-2010 a las 07:15:16

1) Implementación de las utilidades para el juego (archivos, listas...)

Este deliverable tiene tres partes:

1.1) Listas
1.2) Hash
1.3) Archivos de configuración




1.1) Listas
Este módulo ha sido el más sencillo, es la implementación de una lista, en la que cada nodo sólo se conecta con el siguiente. Para hacer la lista más eficiente para cuándo hay más de un nodo, y no tener que iterar cada vez que se quiera añadir uno, lo que hemos hecho ha sido añadir un puntero al último nodo, de esta manera añadir es mucho más rápido.

1.2) Hash
Este ha sido el más complicado, pero no porque fuese realmente complicado para su uso, pero cómo tenía pensado publicarlo en acabar el juego en una librería que tengo en mente, pues he trabajado duro en ello.

Bueno, el tipo del hash son 64 bits sin signo (8 bytes), teniendo a it cómo el índice del caracter actual, y a val cómo el caracter en cuestión, se hacen las siguientes operaciones (muy largas de describir (ver operaciones binarias de C)):

hash -= (1 << it) + ~it / 7;             
hash /= ((it + 1) << 3);                   
hash *= val;


Luego se parte el hash en dos partes de 4 bytes cada una, y se intercambian los valores de:

Byte 1 y Byte 4
Byte 2 y Byte 3


Esto en las dos partes, cuándo esto ha finalizado se mueven todos los bits una posición a la derecha (o dividir por 2). Pasamos una máscara al hash, que es la siguiente:

hash = ((3 << (hash + 1)) * hash * 7)

Y ya, para finalizar devolvemos lo siguiente:

hash = (hash ^ ~it) / length

Donde length es la longitud de la cadena que nos han enviado.

1.3) Archivos de configuración
La idea de hacer esto era que en el juego se pudiesen crear partidas predefinidas, guardar las partidas y cargarlas (por supuesto). El formato de un archivo de configuración es el siguiente:

Opción 1:
nombre-de-la-constante tipo valor

Opción 2:

nombre-de-la-constante tipo READ
cadena para mostrar


Si tenemos READ, se muestra 'cadena para mostrar' y se pide el valor de la variable, esto se puede usar para valores cómo nombres y demás. Lo que hace el código para cargar un archivo es:

1) Abrir el archivo
2) Leer las dos primeras palabras
3) Leer lo que queda de línea
4.1) Si no es READ, asignamos a la constante el valor
4.2.1) Si es READ, leemos una nueva línea
4.2.2) Pedimos datos al usuario

Repetimos los pasos del 2 al 4 hasta que encontramos el fin del fichero, y luego metemos el fichero en una lista de archivos que tiene el contexto de la librería.


Responder | Citar | Moderar | Mensaje Privado
Training Channel
realloc


55 envíos
Desconectado

#1
RE: Deliverables del Lobby de Manufacturación de Software30-01-2010 a las 23:22:23

Buen trabajo Sorancio

Por cierto, este deliverable (¿por qué no lo llamáis entregable? XD) ¿de qué proyecto es? ¿Hay URL?

Saludos

return 0;
Responder | Citar | Moderar | Mensaje Privado
sawyer


62 envíos
Desconectado

#2
RE: Deliverables del Lobby de Manufacturación de Software31-01-2010 a las 00:05:27

Es el deliverable de nuestro grupo del juego que estamos haciendo en C

"Las mejores cosas ocurren, cuando menos las esperamos"
Responder | Citar | Moderar | Mensaje Privado