Cada elemento y compuesto podría representarse con un número entero. Para no tener que definirlo manualmente y no tener que recordarlo se podría usar un enum de esta forma:
[gml]
enum materia
{
aire,
tierra,
fuego,
agua,
polvo,
lodo,
lava,
vapor
}
[/gml]
Cada combinación se podría indicar en una matriz, así:
[gml]
combinacion[ materia.fuego, materia.agua ] = materia.vapor;
combinacion[ materia.agua, materia.fuego ] = materia.vapor;
[/gml]
Como no todas las combinaciones generan otro compuesto, habría espacios vacíos en la tabla, causando un desperdicio de memoria. Debe existir un método de almacenamiento más eficiente, pero por ahora no se me ocurre.
Para evitar errores, sería conveniente inicializar la tabla con un valor que indique que la combinación no está definida, por ejemplo -1
[gml]
for( i=materia.aire; i<=materia.vapor; i++ )
for( j=materia.aire; j<=materia.vapor; j++ )
{
combinacion[i,j] = -1;
}
[/gml]
Usando el sistema anterior, cada elemento o compuesto sería una instancia de un mismo objeto pero con diferente image_index.
[gml]
enum materia
{
aire,
tierra,
fuego,
agua,
polvo,
lodo,
lava,
vapor
}
[/gml]
Cada combinación se podría indicar en una matriz, así:
[gml]
combinacion[ materia.fuego, materia.agua ] = materia.vapor;
combinacion[ materia.agua, materia.fuego ] = materia.vapor;
[/gml]
Como no todas las combinaciones generan otro compuesto, habría espacios vacíos en la tabla, causando un desperdicio de memoria. Debe existir un método de almacenamiento más eficiente, pero por ahora no se me ocurre.
Para evitar errores, sería conveniente inicializar la tabla con un valor que indique que la combinación no está definida, por ejemplo -1
[gml]
for( i=materia.aire; i<=materia.vapor; i++ )
for( j=materia.aire; j<=materia.vapor; j++ )
{
combinacion[i,j] = -1;
}
[/gml]
Usando el sistema anterior, cada elemento o compuesto sería una instancia de un mismo objeto pero con diferente image_index.