OSCAR/TRESRAYA.CPP
2021-09-12 19:50:38 +02:00

250 lines
5.3 KiB
C++

/////////////////////////////////TRES EN RALLA////////////////////////////////
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<dos.h>
extern unsigned _stklen = 4096;
///////////////////////////DECLARACION DE FUNCIONES///////////////////////////
void jugador1(int array[3][3]);
void jugador2(int array[3][3]);
void ordenador(int array[3][3],char opcion);
void dibujamalla();
int comprobacion(int array[3][3]);
char menu();
//////////////////////////////FUNCION PRINCIPAL///////////////////////////////
void main()
{
char opcion;
int array[3][3];
int x,y,a=0,c=0;
int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"c:\\program\\borlandc\\bgi");
clearviewport();
//INICIALIZACION DE ARRAY
for(x=0;x<3;x++)
for(y=0;y<3;y++)
array[x][y]=0;
////////////////////////////////JUEGO PRINCIPAL///////////////////////////////
opcion=menu();
dibujamalla();
while(a==0&&c<5)
{
if(opcion=='1')
{
jugador1(array);
if(c!=4) jugador2(array);
a=comprobacion(array);
c++;
}
else
{
jugador1(array);
if(c!=4) ordenador(array,opcion);
a=comprobacion(array);
c++;
}
}
///////////////////////////////RESULTADO FINAL////////////////////////////////
setcolor(2);
if(a==0) outtextxy(310,400,"EMPATAMOS");
if(a==1) outtextxy(270,400,"GANAS TU:MATI WOMAN");
if(a==2) outtextxy(270,400,"GANO YO:OSCAR COMPUTER");
getch();
closegraph();
}
////////////////////////////////////MENU//////////////////////////////////////
char menu()
{
char o='0';
outtextxy(230,230,"1.-DOS JUGADORES");
outtextxy(230,250,"2.-CONTRA EL ORDENADOR");
while(o!='1'&&o!='2')
{
o=getch();
}
clearviewport();
if(o=='2')
{
o='0';
outtextxy(230,230,"1.-NIVEL APLATANADO");
outtextxy(230,250,"2.-NIVEL ENCABRONAO");
while(o!='1'&&o!='2')
{
o=getch();
}
if(o=='1') o='3'; else o='4';
}
clearviewport();
return o;
}
//////////////////////COMPROBACION DEL TRES EN RALLA//////////////////////////
int comprobacion(int array[3][3])
{
int x,y,w=0,suma=0,suma1=0,suma2=0,suma3=0;
//////////////////LECTURA DEL ARRAY HORIZONTAL Y VERTICAL/////////////////////
for(x=0;x<3;x++)
{
for(y=0;y<3;y++)
{
if(array[x][y]==1) suma++;
if(array[x][y]==2) suma1++;
if(array[y][x]==1) suma2++;
if(array[y][x]==2) suma3++;
}
if(suma==3||suma2==3) w=1;
if(suma1==3||suma3==3) w=2;
suma=0;suma1=0;suma2=0;suma3=0;
}
//////////////////////LECTURA DEL ARRAY DIAGONAL//////////////////////////////
suma=0;suma1=0;suma2=0;suma3=0;
for(x=0;x<3;x++)
{
if(array[x][x]==1) suma++;
if(array[x][x]==2) suma1++;
if(array[2-x][x]==1) suma2++;
if(array[2-x][x]==2) suma3++;
}
if(suma==3||suma2==3) w=1;
if(suma1==3||suma3==3) w=2;
////////////////VALOR DEVUELTO DEL ANALISIS DEL ARRAY/////////////////////////
return w;
}
////////////////////////////////DIBUJA MALLA//////////////////////////////////
void dibujamalla()
{
int x,y;
setcolor(15);
for(x=300;x<400;x+=30)
{
y=150;
line(x,y,x,y+200);
line(y+100,x-100,y+290,x-100);
}
}
/////////////////////////////////JUGADOR1/////////////////////////////////////
void jugador1(int array[3][3])
{
int a,b;
//JUEGAS TU
outtextxy(1,1,"Introduce coordenada[x,y]:");
gotoxy(27,1);
scanf("%i,%i",&a,&b);
gotoxy(27,1);
printf(" ");
while(a<1||a>3||b<1||b>3||array[a-1][b-1]!=0)
{
outtextxy(200,400,"Introduzca coordenada correcta(pulsa tecla)");
getch();
setcolor(0);
outtextxy(200,400,"Introduzca coordenada correcta(pulsa tecla)");
gotoxy(27,1);
scanf("%i,%i",&a,&b);
gotoxy(27,1);
printf(" ");
}
array[a-1][b-1]=1;
setcolor(5);
circle(315+((a-1)*30),215+((b-1)*30),10);
}
/////////////////////////////////JUGADOR2/////////////////////////////////////
void jugador2(int array[3][3])
{
int a,b;
//JUEGAS TU
outtextxy(1,1,"Introduce coordenada[x,y]:");
gotoxy(27,1);
scanf("%i,%i",&a,&b);
gotoxy(27,1);
printf(" ");
while(a<1||a>3||b<1||b>3||array[a-1][b-1]!=0)
{
outtextxy(200,400,"Introduzca coordenada correcta(pulsa tecla)");
getch();
setcolor(0);
outtextxy(200,400,"Introduzca coordenada correcta(pulsa tecla)");
gotoxy(27,1);
scanf("%i,%i",&a,&b);
gotoxy(27,1);
printf(" ");
}
array[a-1][b-1]=2;
setcolor(3);
circle(315+((a-1)*30),215+((b-1)*30),10);
}
/////////////////////////////////ORDENADOR/////////////////////////////////////
void ordenador(int array[3][3],char opcion)
{
int a,b,x=-1,y=-1,r=-1,caso[4]={0,0,0,0},fin=0;
int suma=0,suma1=0,suma2=0,suma3=0;
//JUEGA EL ORDENADOR
if(opcion=='3')
//LECTURA DEL ARRAY
{
for(a=0;a<3;a++)
{
for(b=0;b<3;b++)
{
if(array[a][b]==1) suma++;//VERTICAL
if(suma==2) {caso[0]=1;r=a;}
if(array[b][a]==1) suma1++;//HORIZONTAL
if(suma1==2) {caso[1]=1;r=a;}
}
if(array[a][a]==1) suma2++;//DIAGONAL
if(suma2==2) caso[2]=1;
if(array[2-a][a]==1) suma3++;//DIAGONAL INVERSA
if(suma3==2) caso[3]=1;
if(suma!=3&&suma1!=3&&suma2!=3&&suma3!=3)
{suma=0;suma1=0;}
else fin=1;
}
if(caso[0]==1)
{
for(a=0;a<3;a++)
if(array[r][a]==0) {y=a;x=r;}
}
if(caso[1]==1&&(x==-1||y==-1))
{
for(a=0;a<3;a++)
if(array[a][r]==0) {x=a;y=r;}
}
if(caso[2]==1&&(x==-1||y==-1))
{
for(a=0;a<3;a++)
if(array[a][a]==0) {x=a;y=x;}
}
if(caso[3]==1&&(x==-1||y==-1))
{
for(a=0;a<3;a++)
if(array[2-a][a]==0) {y=a;x=2-y;}
}
}
if(x==-1||y==-1)
{
for(a=0;a<3;a++)
for(b=0;b<3;b++)
if(array[a][b]==0) {x=a;y=b;}
}
//da valores
if(fin!=1||(x==-1)&&(y==-1))
{
array[x][y]=2;
setcolor(3);
circle(315+(x*30),215+(y*30),10);
}
}