Cargar tablero

Tablero que sea cargado desde un archivo de texto, consta de 100 líneas de 100
caracteres cada una, donde un espacio representa una celda blanca, un # representa una pared, una T un teléfono, un 0.. 9 representa un programa identificado con el comportamiento indicado por el numero, y una A representa la anomalía.
Después de las 100 líneas vienen los nombres de los archivos de comportamiento. Puede haber en el mismo tablero varios programas con el mismo comportamiento. El número de programas por tablero es ilimitado. En los contornos del tablero solo puede haber paredes.

1 Respuesta

Respuesta
1
A ver, siguiendo el tema Matrix por lo visto :)
La función que te di en la pregunta anterior, en la leída de cada carácter, decide que hacer, ¿OK?
En este caso, yo optaría personalmente por una solución OO, creando un objeto de clase POR, dependiendo del valor de carácter. Por ejemplo:
class CMatrixActor
{
};
class CMatrixWall : public CMatrixActor
{
};
class CMatrixPhone : public CMatrixActor
{
};
class CMatrixAnomaly : public CMatrixActor
{
};
Y despues la funcion CreateActor( const char cValue ), que le pasas el caracter que has leido del fichero. Esta crea un objeto del tipo CMatrixActor, y este lo pones en la matriz, y yata ...
CMatrixActor * CreateActor( const char cValue )
{
CMatrixActor * pReturnValue = ( CMatrixActor * )0;
if ( cValue == '#' )
{
pReturnValue = new CMatrixWall;
}
else if ( cValue == 'T' )
{
pReturnValue = new CMatrixPhone;
}
else if ( ( cValue >= '0' ) && ( cValue <= '9' ) )
{
pReturnValue = new CMatrixProgram( cValue - '0' );
}
else if ( cValue == 'A' )
{
pReturnValue = new CMatrixAnomaly;
}
return( pReturnValue );
}
Esta usala en el main loop, y cambia la matriz de caracteres a una matriz de objectos del tipo CMatrixActor.
const unsigned int uiColumns = 100U;
const unsigned int uiRows = 100U;
CMatrixActor * gameTable[uiRows][uiColumns];
En el main loop, cambia a ejecutar la nueva funcion CreateActor:
gameTable[uiRow][uiColumn++] = CreateActor( cValue );
¿Algo así? Mira a ver si te va bien, ¿OK? Ah, y claro, no te olvides de delete los objetos en la tabla al finalizar el programa, y mete la chicha en las clases, y yata. Por ejemplo, si en la clase CMatrixActor defines un método (virtual puro) Play(), y defines en las clases derivadas la impllementacion concreta de cada clase, pues puedes iterar por la matriz llamando Play() de cada objeto en el main game loop y así van haciendo sus cosas. Solo una idea ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas