Problemas con las BGI

Gracias de antemano, tengo un problema, estoy haciendo un parchís entonces quiero comprobar las posiciones de las fichas en el tablero, pero al hacer un bucle para comprobarlo, solo me deja comprobar 12 o 13 posiciones, cuando llego a esta ultima me dice que inicialice las BGI (cosa que es absurda porque en las 11 anteriores no me ha dado error)... Os pongo el código por si os sirve de ayuda, MUCHÍSIMAS GRACIAS :D:D
Este seria el código:
#include<ficha.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int pos[]={347,353,347,340,347,329,347,318,347,307,347,296,347,285,347,274, 354,268, 365,268, 376,268, 387,268, 398,268, 409,268, 420,268, 433,268, 433,213, 420,213, 409,213, 398,213, 387,213, 376,213, 365,213, 355,213, 348,206, 348,195, 348,184, 348,173, 348,162, 348,151, 348,140, 348,127, 293,127, 293,140, 293,151, 293,162, 293,173, 293,184, 293,195, 293,206, 286,212, 275,212, 264,212, 253,212, 242,212, 231,212, 220,212, 207,212, 207,267, 220,267, 231,267, 242,267, 253,267, 264,267, 275,267, 286,267, 292,274, 292,285, 292,296, 292,307, 292,318, 292,329, 292,340, 292,353};
void main(void)
{
int x,y;
x=0;
y=0;
for( ; ; )
{
y=x+1;
ficha_azul(pos[x],pos[y]);
getch();
x=x+2;
}
}
//funcion ficha azul dentro de FICHA.H
void ficha_azul(int x, int y)
{
int gdriver=DETECT;
int gmode;
initgraph(&gdriver,&gmode,"c:\\tc\\bgi");
setcolor(WHITE);
setfillstyle(INTERLEAVE_FILL,BLUE);
circle(x,y,5);
floodfill(x,y,WHITE);
}

1 respuesta

Respuesta
1
Antes de nada decir que no conozco en profundidad la librería gráfica BGI de Borland, pero sí te puedo decir que llamas a initgraph() dentro de la función ficha_azul(), así que estás inicializando la librería cada vez que pintas una ficha. Esto no es correcto, la librería deberías inicializarla solo una vez... probablemente la librería solicite memoria para albergar estructuras de datos que te acabarán bloqueando sin memoria en algún momento dado... Probablemente también, la librería acabe corrompiéndose si llamas varias veces a initgraph() no estando diseñada para ello.
Suerte y espero haberte sido de ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas