Expected )

Hola, estoy desarrollando un parchís, y este código es la intro (un poco cutre ya lo se), se ejecuta perfectamente por separado, pero al meterlo en el archivo del parchís y compilarlo (turbo c++ 3.1)
Me da error en las lineas de "void obtenercolor( unsigned...)"
El error es "expected )" pero no me falta ningún paréntesis po que lo copio tal cual, estoy perdido Muchas gracias por vuestra ayuda
#include<dos.h>
#include<stdlib.h>
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
void obtenercolor( unsigned char color, unsigned char &r, unsigned char &v, unsigned char &a ); //Esta linea da error
void cambiarcolor( unsigned char color, unsigned char r, unsigned char v, unsigned char a );
void fadeout(void);
void intro(void);
void main(void)
{
intro();
}
void intro(void)
{
int i,x=0;
int gdriver=VGA;
int gmode=VGAHI;
initgraph(&gdriver,&gmode,"c:\\turbo-c\\bgi");
do
{
cleardevice();
randomize();
i=rand()%15+1;
setcolor(i);
settextstyle(DEFAULT_FONT,0,3);
outtextxy(200,80,"BIENVENIDO");
outtextxy(223,140,"AL JUEGO");
outtextxy(193,205,"DEL PARCHIS");
settextstyle(GOTHIC_FONT,0,1);
outtextxy(x,400,"2002 Copyright Miguel Angel Moreno");
x=x+10;
delay(1000);
}while((!kbhit())&& x<320);
fadeout();
closegraph();
}
void obtenercolor( unsigned char color, unsigned char &r, unsigned char &v, unsigned char &a ) //esta tambien da error
{
outportb( 0x03c7, color );
r = inportb( 0x03c9 );
v = inportb( 0x03c9 );
a = inportb( 0x03c9 );
}
void cambiarcolor( unsigned char color, unsigned char r, unsigned char v, unsigned char a )
{
outportb( 0x03c8, color );
outportb( 0x03c9, r );
outportb( 0x03c9, v );
outportb( 0x03c9, a );
}
void fadeout( void )
{
unsigned char r, v, a;
unsigned i = 0, j = 0;
do {
for( i = 0; i<256; i++ ) { // Para cada color de la paleta
obtenercolor( i, r, v, a ); // Obtenemos un color
if( r>0 ) --r; // Si hace falta
if( v>0 ) --v; // reducimos cada
if( a>0 ) --a; // componente.
cambiarcolor( i, r, v, a ); // Y hacemos el cambio.
}
delay(14);
} while( ++j<64 ); // Esto hay que hacerlo hasta 63 veces
}
void fadein( const unsigned char *paleta )
{
unsigned char r, v, a;
unsigned i = 0, j = 0;
do {
for( i = 0; i<256; i++ ) {
obtenercolor( i, r, v, a );
if( r<paleta[i*3] ) ++r;
if( v<paleta[i*3+1] ) ++v;
if( a<paleta[i*3+2] ) ++a;
cambiarcolor( i, r, v, a );
}
} while( ++j<64 );
}
Respuesta
1
Tu código me parece que esta correcto (hasta donde se por que jamas he usado turbo c ni las llibrerias de gráficos ni de dos, no las he usado por que no vienen en en Visual C que es el que utilizo y no me ha tocado tener que usarlas, pero debería de ponerles atención de hoy en adelante).
Tengo tiempo usando C++ y Java así que no estoy bien aceitado en eso de los apuntadores (las cosas después de 3 semestres se olvidan un poco) pero creo que estas enviando y recibiendo mal las variables por referencia.
En tu cabecera tienes:
void obtenercolor( unsigned char color, unsigned char &r, unsigned char &v, unsigned char &a );
Y según recuerdo los apuntadores no se reciben con & si no con *
Osea:
void obtenercolor( unsigned char color, unsigned char *r, unsigned char *v, unsigned char *a );
En la forma de invocar la funcion tienes:
cambiarcolor( i, r, v, a );
y creo que la forma correcta es:
cambiarcolor( i, &r, &v, &a );
Acabo de ver rápidamente un curso de c que tengo guardado y estoy seguro que ese es el problema, el curso lo baje de:
http://www.elrincondelc.com/index.php
Es un curso muy bueno de c, ahí explica lo de los apuntadores y funciones, si algo más falla por lo que te dije checa el curso y si no de todas formas mándamelo, ahorita no tengo mucho tiempo por que tengo un examen pero si me lo mandas de nuevo mañana (en caso de que siga con errores) lo verifico mejor, pero checa el curso es muy recomendable.
Byte
Pd. Si sigue con fallas hay una opción para pedir más explicaciones usala y si queda bien con lo que te dije no olvides calificarme.

1 respuesta más de otro experto

Respuesta
1
... me lo he mirado en un segundo, pues ahora no tengo mucho tiempo... pero antes de pillarlo en otro momento, prueba esto.
¿Qué extensión tiene el archivo de código conde añades esto? Si es .C ten cuidado pues puede que no te reconozca características del C++ (como son los parámetros por referencia con &). Si fuese esto, prueba con una de estas dos cosas:
1.- Renombrar a .cpp el archivo de código.
2.- si no, ve a la opción Options->Compiler->C++ Options... y marca la casilla "C++ Always". De este modo reconocerá C++ independientemente de la extensión del archivo.
Si no es esto, me lo dices, y lo miro con más atención en un rato que tenga.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas