lunes, 1 de febrero de 2010

Juego Concéntrese

#include
#include
#include
#include
#include
#include
#define graficos int gdriver=DETECT, gmode;/* initialize graphics and local variables */initgraph(&gdriver, &gmode,"c:/tc/bgi");setcolor(getmaxcolor());

int jugador1=1,jugador2=0,acum1=0,acum2=0,aux;
char nombre1[20],nombre2[20];
int numero;
char numero1[2];
char num[2];
int matriz[7][7];
char opc;
int posx=100,posy=50;
int m1=0,m2=0;
int turno=0,turnos;
int mat_aviso[7][7],descubrir1=0,descubrir2=0;
int memoria,memo1,memo2,memo3,memo4;
int xmemo,ymemo,xmemo2,ymemo2,ciclo,aviso_reestablecer=0;
int ya=0;
char n[2];

dibujo(int lug1, int lug2)
{
if (matriz[lug1][lug2]==0 && mat_aviso[lug1][lug2]==1)
{
ya=1;
descubrir1=0;
setcolor(14);
setfillstyle(1,14);
fillellipse(posx+25,posy+25,20,20);
setcolor(0);
setfillstyle(1,0);
fillellipse(posx+25+9,posy+25-5,5,5);
fillellipse(posx+25-9,posy+25-5,5,5);
line(posx+25-20,posy+23,posx+25-6,posy+25-10);
line(posx+25+20,posy+23,posx+25+6,posy+25-10);
line(posx+20,posy+18,posx+30,posy+18);
setcolor(4);
arc(posx+25,posy+30,180,360,12);
setcolor(0);
rectangle(posx,posy,posx+50,posy+50 );
}
if (matriz[lug1][lug2]==1 && mat_aviso[lug1][lug2]==1)
{
ya=1;
descubrir1=0;
setcolor(3);
setfillstyle(1,3);
fillellipse(posx+25,posy+25,20,20);
setcolor(0);
setfillstyle(1,0);
fillellipse(posx+25+9,posy+25-5,5,5);
fillellipse(posx+25-9,posy+25-5,5,5);
line(posx+25-20,posy+23,posx+25-6,posy+25-10);
line(posx+25+20,posy+23,posx+25+6,posy+25-10);
line(posx+20,posy+18,posx+30,posy+18);
setcolor(YELLOW);
arc(posx+25,posy+30,180,360,12);
setcolor(0);
rectangle(posx,posy,posx+50,posy+50 );
}
if (matriz[lug1][lug2]==2 && mat_aviso[lug1][lug2]==1)
{
ya=1;
descubrir1=0;
setcolor(0);
setfillstyle(1,15);
fillellipse(posx+25,posy+25,20,20);
setcolor(0);
setfillstyle(1,0);
fillellipse(posx+25+9,posy+25-5,5,5);
fillellipse(posx+25-9,posy+25-5,5,5);
line(posx+25-20,posy+23,posx+25-6,posy+25-10);
line(posx+25+20,posy+23,posx+25+6,posy+25-10);
line(posx+20,posy+18,posx+30,posy+18);
setcolor(RED);
arc(posx+25,posy+30,180,360,12);
setcolor(0);
rectangle(posx,posy,posx+50,posy+50 );
}
if (matriz[lug1][lug2]==3 && mat_aviso[lug1][lug2]==1)
{
ya=1;
descubrir1=0;
setcolor(RED);
setfillstyle(1,4);
fillellipse(posx+25,posy+25,20,20);
setcolor(0);
setfillstyle(1,0);
fillellipse(posx+25+9,posy+25-5,5,5);
fillellipse(posx+25-9,posy+25-5,5,5);
line(posx+25-20,posy+23,posx+25-6,posy+25-10);
line(posx+25+20,posy+23,posx+25+6,posy+25-10);
line(posx+20,posy+18,posx+30,posy+18);
setcolor(15);
arc(posx+25,posy+30,180,360,12);
setcolor(0);
rectangle(posx,posy,posx+50,posy+50 );
}
if (matriz[lug1][lug2]==4 && mat_aviso[lug1][lug2]==1)
{
ya=1;
descubrir1=0;
setcolor(5);
setfillstyle(1,5);
fillellipse(posx+25,posy+25,20,20);
setcolor(0);
setfillstyle(1,0);
fillellipse(posx+25+9,posy+25-5,5,5);
fillellipse(posx+25-9,posy+25-5,5,5);
line(posx+25-20,posy+23,posx+25-6,posy+25-10);
line(posx+25+20,posy+23,posx+25+6,posy+25-10);
line(posx+20,posy+18,posx+30,posy+18);
setcolor(YELLOW);
arc(posx+25,posy+30,180,360,12);
setcolor(0);
rectangle(posx,posy,posx+50,posy+50 );
}
if (matriz[lug1][lug2]==5 && mat_aviso[lug1][lug2]==1)
{
ya=1;
descubrir1=0;
setcolor(9);
setfillstyle(1,9);
fillellipse(posx+25,posy+25,20,20);
setcolor(0);
setfillstyle(1,0);
fillellipse(posx+25+9,posy+25-5,5,5);
fillellipse(posx+25-9,posy+25-5,5,5);
line(posx+25-20,posy+23,posx+25-6,posy+25-10);
line(posx+25+20,posy+23,posx+25+6,posy+25-10);
line(posx+20,posy+18,posx+30,posy+18);
setcolor(0);
arc(posx+25,posy+30,180,360,12);
setcolor(0);
rectangle(posx,posy,posx+50,posy+50 );
}

}

reestablecer(int b1, int b2)
{
for(ciclo=0;ciclo<=3;ciclo++)
{
setcolor(0);
setfillstyle(1,0);
rectangle(b1,b2,b1+50,b2+50);
floodfill(b1+3,b2+5,0);
setcolor(7);
setfillstyle(1,7);
rectangle(b1,b2,b1+50,b2+50);
floodfill(b1+3,b2+5,7);
}
setcolor(0);
rectangle(b1,b2,b1+50,b2+50);
}

cuadro_borrar(int b1, int b2)
{
setcolor(0);
setfillstyle(1,7);
rectangle(b1,b2,b1+50,b2+50);
floodfill(b1+3,b2+5,0);

if(descubrir1==1 && descubrir2==1)
{
setcolor(0);
settextstyle(3,0,5);
outtextxy(xmemo2+7,ymemo2+3,num);
descubrir1=0;
descubrir2=0;
}

if(turno==1 && descubrir1==0)
{
outtextxy(posx+7,posy+3,num);
turno=0;
}

}

cuadro(int p1, int p2)
{

if(mat_aviso[m1][m2]==0 && descubrir1==0)
{
setcolor(3);
setfillstyle(1,8);
rectangle(p1,p2,p1+50,p2+50 );
floodfill(p1+3,p2+5,3);
}
else
{
setcolor(3);
rectangle(p1,p2,p1+50,p2+50 );
}

}

void poner()
{
aviso_reestablecer=0;
descubrir1=0;
descubrir2=0;


if(mat_aviso[m1][m2]==0)
{

if(turnos<2)
{
turnos=turnos+1;
mat_aviso[m1][m2]=1;
/*itoa(matriz[m1][m2],num,10);
settextstyle(3,0,5);
outtextxy(posx+7,posy+3,num);*/
if (matriz[m1][m2]==0 && mat_aviso[m1][m2]==1)
{
ya=1;
setcolor(14);
setfillstyle(1,14);
fillellipse(posx+25,posy+25,20,20);
setcolor(0);
setfillstyle(1,0);
fillellipse(posx+25+9,posy+25-5,5,5);
fillellipse(posx+25-9,posy+25-5,5,5);
line(posx+25-20,posy+23,posx+25-6,posy+25-10);
line(posx+25+20,posy+23,posx+25+6,posy+25-10);
line(posx+20,posy+18,posx+30,posy+18);
setcolor(4);
arc(posx+25,posy+30,180,360,12);
setcolor(0);
rectangle(posx,posy,posx+50,posy+50 );
}
if (matriz[m1][m2]==1 && mat_aviso[m1][m2]==1)
{
ya=1;
descubrir1=0;
setcolor(3);
setfillstyle(1,3);
fillellipse(posx+25,posy+25,20,20);
setcolor(0);
setfillstyle(1,0);
fillellipse(posx+25+9,posy+25-5,5,5);
fillellipse(posx+25-9,posy+25-5,5,5);
line(posx+25-20,posy+23,posx+25-6,posy+25-10);
line(posx+25+20,posy+23,posx+25+6,posy+25-10);
line(posx+20,posy+18,posx+30,posy+18);
setcolor(YELLOW);
arc(posx+25,posy+30,180,360,12);
setcolor(0);
rectangle(posx,posy,posx+50,posy+50 );
}
if (matriz[m1][m2]==2 && mat_aviso[m1][m2]==1)
{
ya=1;
descubrir1=0;
setcolor(0);
setfillstyle(1,15);
fillellipse(posx+25,posy+25,20,20);
setcolor(0);
setfillstyle(1,0);
fillellipse(posx+25+9,posy+25-5,5,5);
fillellipse(posx+25-9,posy+25-5,5,5);
line(posx+25-20,posy+23,posx+25-6,posy+25-10);
line(posx+25+20,posy+23,posx+25+6,posy+25-10);
line(posx+20,posy+18,posx+30,posy+18);
setcolor(RED);
arc(posx+25,posy+30,180,360,12);
setcolor(0);
rectangle(posx,posy,posx+50,posy+50 );
}
if (matriz[m1][m2]==3 && mat_aviso[m1][m2]==1)
{
ya=1;
descubrir1=0;
setcolor(RED);
setfillstyle(1,4);
fillellipse(posx+25,posy+25,20,20);
setcolor(0);
setfillstyle(1,0);
fillellipse(posx+25+9,posy+25-5,5,5);
fillellipse(posx+25-9,posy+25-5,5,5);
line(posx+25-20,posy+23,posx+25-6,posy+25-10);
line(posx+25+20,posy+23,posx+25+6,posy+25-10);
line(posx+20,posy+18,posx+30,posy+18);
setcolor(15);
arc(posx+25,posy+30,180,360,12);
setcolor(0);
rectangle(posx,posy,posx+50,posy+50 );
}
if (matriz[m1][m2]==4 && mat_aviso[m1][m2]==1)
{
ya=1;
descubrir1=0;
setcolor(5);
setfillstyle(1,5);
fillellipse(posx+25,posy+25,20,20);
setcolor(0);
setfillstyle(1,0);
fillellipse(posx+25+9,posy+25-5,5,5);
fillellipse(posx+25-9,posy+25-5,5,5);
line(posx+25-20,posy+23,posx+25-6,posy+25-10);
line(posx+25+20,posy+23,posx+25+6,posy+25-10);
line(posx+20,posy+18,posx+30,posy+18);
setcolor(YELLOW);
arc(posx+25,posy+30,180,360,12);
setcolor(0);
rectangle(posx,posy,posx+50,posy+50 );
}
if (matriz[m1][m2]==5 && mat_aviso[m1][m2]==1)
{
ya=1;
descubrir1=0;
setcolor(9);
setfillstyle(1,9);
fillellipse(posx+25,posy+25,20,20);
setcolor(0);
setfillstyle(1,0);
fillellipse(posx+25+9,posy+25-5,5,5);
fillellipse(posx+25-9,posy+25-5,5,5);
line(posx+25-20,posy+23,posx+25-6,posy+25-10);
line(posx+25+20,posy+23,posx+25+6,posy+25-10);
line(posx+20,posy+18,posx+30,posy+18);
setcolor(0);
arc(posx+25,posy+30,180,360,12);
setcolor(0);
rectangle(posx,posy,posx+50,posy+50 );
}

if(turnos==1)
{
memo1=m1;
memo2=m2;
memoria=matriz[m1][m2];
xmemo=posx;
ymemo=posy;
turno=1;
}

if(turnos==2)
{
xmemo2=posx;
ymemo2=posy;
memo3=m1;
memo4=m2;
turnos=0;
if(memoria==matriz[m1][m2])
{
descubrir1=1;
descubrir2=1;
if(jugador1==1)
{
setcolor(0);
setfillstyle(1,0);
rectangle(600,100,628,125 );
floodfill(605,105,0);
setcolor(7);
setfillstyle(1,7);
rectangle(600,100,628,125 );
floodfill(605,105,7);

acum1=acum1+1;
itoa(acum1,n,10);
setcolor(0);
rectangle(600,100,628,125 );
settextstyle(3,0,1);
outtextxy(605,100,n);
}
if(jugador2==1)
{
setcolor(0);
setfillstyle(1,0);
rectangle(600,130,628,155 );
floodfill(605,135,0);
setcolor(7);
setfillstyle(1,7);
rectangle(600,130,628,155 );
floodfill(605,135,7);

acum2=acum2+1;
itoa(acum2,n,10);
setcolor(0);
rectangle(600,130,628,155 );
settextstyle(3,0,1);
outtextxy(605,130,n);
}
}
if(memoria!=matriz[m1][m2])
{
aux=jugador1;
jugador1=jugador2;
jugador2=aux;

aviso_reestablecer=1;
mat_aviso[memo1][memo2]=0;
mat_aviso[m1][m2]=0;
}
}
}

}
if(jugador1==1)
{
setcolor(RED);
settextstyle(6,0,1);
outtextxy(500,100,nombre1);
setcolor(0);
settextstyle(6,0,1);
outtextxy(500,130,nombre2);
}
if(jugador2==1)
{
setcolor(0);
settextstyle(6,0,1);
outtextxy(500,100,nombre1);
setcolor(RED);
settextstyle(6,0,1);
outtextxy(500,130,nombre2);
}


}

void derecha()
{

if(posx<350)
{
if(aviso_reestablecer==1)
{
reestablecer(xmemo,ymemo);
reestablecer(xmemo2,ymemo2);
aviso_reestablecer=0;
}
ya=0;
dibujo(m1,m2);
m2=m2+1;
if(ya==0)
{
cuadro_borrar(posx,posy);
}
posx=posx+50;
posy=posy;
cuadro(posx,posy);
}
}

void izquierda()
{
if(posx>100)
{
if(aviso_reestablecer==1)
{
reestablecer(xmemo,ymemo);
reestablecer(xmemo2,ymemo2);
aviso_reestablecer=0;
}
ya=0;
dibujo(m1,m2);

m2=m2-1;
if(ya==0)
{
cuadro_borrar(posx,posy);
}

posx=posx-50;
posy=posy;
cuadro(posx,posy);
}
}

void abajo()
{
if(posy<300)
{
if(aviso_reestablecer==1)
{
reestablecer(xmemo,ymemo);
reestablecer(xmemo2,ymemo2);
aviso_reestablecer=0;
}
ya=0;
dibujo(m1,m2);
m1=m1+1;
if(ya==0)
{
cuadro_borrar(posx,posy);
}
posy=posy+50;
posx=posx;
cuadro(posx,posy);
}
}

void arriba()
{
if(posy>50)
{
if(aviso_reestablecer==1)
{
reestablecer(xmemo,ymemo);
reestablecer(xmemo2,ymemo2);
aviso_reestablecer=0;
}
ya=0;
dibujo(m1,m2);
m1=m1-1;
if(ya==0)
{
cuadro_borrar(posx,posy);
}

posy=posy-50;
posx=posx;
cuadro(posx,posy);
}
}


int main(void)
{
graficos

clrscr();

int r,r1,r3,r4;
int vector[7];
int i,j,y,y1,y2,n,x;
int bandera;

setcolor(0);
setfillstyle(1,0);
rectangle(1,1,638,478);
floodfill(2,2,0);

setcolor(7);
settextstyle(6,0,1);
outtextxy(50,39,"Nombre del jugador 1: ");
outtextxy(50,70,"Nombre del jugador 2: ");
gotoxy(30,4);gets(nombre1);
gotoxy(30,6);gets(nombre2);

clrscr();
setcolor(RED);
outtextxy(500,100,nombre1);
setcolor(0);
settextstyle(2,0,0);
outtextxy(1,4," Esc ");
outtextxy(30,4,"Salir del");
outtextxy(30,11,"juego");
settextstyle(6,0,1);

outtextxy(500,130,nombre2);
rectangle(600,100,628,125 );
rectangle(600,130,628,155 );
settextstyle(3,0,1);
outtextxy(605,100,"0");
outtextxy(605,130,"0");

r3=100;
r4=150;
setcolor(0);
for(r=1;r<=6;r=r+1)
{
for(r1=50;r1<=300;r1=r1+50)
{
rectangle(r3,r1,r4,r1+50);
}
r3=r3+50;
r4=r4+50;
}

setcolor(RED);
numero=1;
r1=115;
for(r=1;r<=6;r++)
{
settextstyle(7,0,1);
itoa(numero,numero1,10);
outtextxy(r1,25,numero1);
numero=numero+1;
r1=r1+50;
}

outtextxy(85,75,"A");
outtextxy(85,125,"B");
outtextxy(85,175,"C");
outtextxy(85,225,"D");
outtextxy(85,275,"E");
outtextxy(85,325,"F");

setcolor(BLUE);
settextstyle(10,0,3);
outtextxy(10,20,"C");
outtextxy(10,55,"O");
outtextxy(10,90,"N");
outtextxy(10,125,"C");
outtextxy(10,160,"E");
outtextxy(10,195,"N");
outtextxy(10,230,"T");
outtextxy(10,265,"R");
outtextxy(10,300,"E");
outtextxy(10,335,"S");
outtextxy(10,370,"E");

randomize();
for(y=0;y<=5;y++)
{

n=0;

for(i=0; i<5; i++)
{
bandera=0;
vector[n]=rand()%100;

if(vector[n]<=5)
{

for(x=0;x {
if(vector[x]==vector[n])
{
bandera=1;
i=i-1;
}
}

if(bandera==0)
{
//printf("%d\n", vector[n]);
n=n+1;
}

}
i=i-1;
}

for(j=0;j<=5;j++)
{
matriz[j][y]=vector[j];
}
//finaliza la primera columna
}//for principal


/*for(n=0;n<=5;n++)
{
for(j=0;j<=5;j++)
{
cout< }
printf("\n");
} */
cuadro(posx,posy);
while(opc!=27)
{ opc=getch();

if(opc==77||opc==75||opc==72||opc==80||opc=='\r')
{

if(opc==80)abajo();
if(opc==72)arriba();
if(opc==77)derecha();
if(opc==75)izquierda();
if(opc=='\r')poner();//'\r' es para el uso del Enter
}
}

//getch();
}