Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: amchacon en 22 Mayo 2013, 13:04 pm



Título: Duda sobre los macros
Publicado por: amchacon en 22 Mayo 2013, 13:04 pm
No me queda del todo claro, dado ese macro:

Código
  1. #define DeclararPiezas(jugador,dirrecion) Tablero[0][dirrecion] = jugador(TORRE); \
  2. Tablero[1][dirrecion] = jugador(CABALLO); \
  3. Tablero[3][dirrecion] = jugador(REY); \
  4. Tablero[4][dirrecion] = jugador(REINA); \
  5. Tablero[5][dirrecion] = jugador(ALFIL); \
  6. Tablero[6][dirrecion] = jugador(CABALLO); \
  7. Tablero[7][dirrecion] = jugador(TORRE); \
  8. #if dirrecion ABAJO
  9. #define aux 1
  10. #else
  11. #define aux -1
  12. #endif \
  13. for (int i = 0; i < 8;i++) \
  14.      Tablero[i][dirrecion+aux] = jugador(PEON);

Dado un jugador y una orientacion (ARRIBA o ABAJO). Se declara un tablero de ajedrez. Ahora bien, para poner los peones no es tan sencillo puesto que dependiendo si esta arriba o abajo tengo que sumar 1 o restar 1.

He hecho ahí una prueba (#if dirrecion abajo) pero evidentemente el compilador no se lo traga. ¿Alguna idea?


Título: Re: Duda sobre los macros
Publicado por: 0xDani en 22 Mayo 2013, 16:03 pm
No me queda claro qué quieres hacer, pero me da la impresión de que no te hacen falta macros.

Además si el compilador no se lo traga, pon los errores que te dé.

Saludos.


Título: Re: Duda sobre los macros
Publicado por: amchacon en 22 Mayo 2013, 20:27 pm
Basicamente, soy un vago y no quiero escribir lo mismo dos veces xD. Además quedaría el código más elegante:
Código
  1. DeclararPiezas(Jugador1)
  2. DeclararPiezas(Jugador2)

El error que me daba era que faltaba un # para el argumento? La cuestión esque quiero saber como comprobar el valor de los argumentos proporcionados.


Título: Re: Duda sobre los macros
Publicado por: 0xDani en 22 Mayo 2013, 21:58 pm
Creo que en esta línea:

Código
  1. #if dirrecion ABAJO

puedes usar el operador '==', tal que así:

Código
  1. #if direccion==ABAJO

Sin embargo, supongo que ABAJO debe ser un valor constante.


Título: Re: Duda sobre los macros
Publicado por: amchacon en 24 Mayo 2013, 02:02 am
Nanay, tampoco.

A la **** pondre una variable aux y a liarla:

Código
  1. char aux = dirrecion == ABAJO ? 1 : -1;