Duda sobre los macros

Iniciado por amchacon, 22 Mayo 2013, 13:04 PM

0 Miembros y 1 Visitante están viendo este tema.

amchacon

No me queda del todo claro, dado ese macro:

#define DeclararPiezas(jugador,dirrecion) Tablero[0][dirrecion] = jugador(TORRE); \
Tablero[1][dirrecion] = jugador(CABALLO); \
Tablero[3][dirrecion] = jugador(REY); \
Tablero[4][dirrecion] = jugador(REINA); \
Tablero[5][dirrecion] = jugador(ALFIL); \
Tablero[6][dirrecion] = jugador(CABALLO); \
Tablero[7][dirrecion] = jugador(TORRE); \
#if dirrecion ABAJO
#define aux 1
#else
#define aux -1
#endif \
for (int i = 0; i < 8;i++) \
     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?
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

0xDani

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.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

amchacon

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 (cpp) [Seleccionar]

DeclararPiezas(Jugador1)
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.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

0xDani

Creo que en esta línea:

#if dirrecion ABAJO

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

#if direccion==ABAJO

Sin embargo, supongo que ABAJO debe ser un valor constante.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

amchacon

Nanay, tampoco.

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

Código (cpp) [Seleccionar]
char aux = dirrecion == ABAJO ? 1 : -1;
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar