Professional Documents
Culture Documents
h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
#include<dos.h>
struct juego
{
int njugador,p1,p2,p3;
};
struct jugadores
{
char nombre[41];
};
int busca_ganador(int x,int y, int z,int k);
int nadie_gano(int ntiros,int x,int y,int z,int n);
int tiro_repetido(int x,int y,int z);
void dibuja(int x, int y, int z);
void tira(int x,int y,int z,int k);
int posiciones[6][6][6];
void main(void)
{
char conf,*nc,*xc,*yc,*zc;
int i,n,x,y,z,ganador,gato,k,ntiros;
struct jugadores jugador[3];
conf='s';
while (conf!='n')
{
for (z=0;z<=5;z++)
{
for (y=0;y<=5;y++)
{
for (x=0;x<=5;x++)
{
posiciones[x][y][z]=3;
}
}
}
ntiros=0;
k=0;
x=2;
y=2;
z=2;
n=1;
while (x<3 || x>6 || y<3 || y>6 || z<3 || z>6 || n<2 || n>3)
{
clrscr();
printf("solo introduzca 2 o 3 para el numero de jugadores\n");
printf("introduce el numero de jugadores (2 o 3)\n");
*nc=getche();
n=atoi(nc);
// scanf("%d",&n) ;
printf("\nlas dimensiones del juego son 3<= x,y,z <=6\n");
printf("las dimensiones del juego se colocan asi: 666\n");
conf=getch();
}
}
/*************************************************************************
ESTA FUNCION PIDE LAS COORDENADAS DEL TIRO
**************************************************************************/
void tira(int x,int y,int z,int k)
{
int x1,y1,z1,dx,dy,ya;
char *pa,*pb,*pc;
dx=340/(x+y);
dy=460/((y+2)*z);
struct juego nuevo;
do
{
sound(240+200*k);
delay(500);
nosound();
outtextxy(1,20,"tiro:");
//
scanf("%d %d %d",&(nuevo.p1),&(nuevo.p2),&(nuevo.p3));
*pa=getch();
nuevo.p1=atoi(pa);
*pb=getch();
nuevo.p2=atoi(pb);
*pc=getch();
nuevo.p3=atoi(pc);
(nuevo.njugador)=k;
ya=tiro_repetido(nuevo.p1,nuevo.p2,nuevo.p3);
}
while((nuevo.p1)<1 || (nuevo.p1)>x || (nuevo.p2)<1 || (nuevo.p2)>y || (n
uevo.p3)<1 || (nuevo.p3)>z || ya!=0);
x1=nuevo.p1;
y1=nuevo.p2;
z1=nuevo.p3;
posiciones[x1-1][y1-1][z1-1]=nuevo.njugador;
setfillstyle(SOLID_FILL,k+2);
floodfill(150+((x1+y1-1)*dx),20+(y1-0.5+(y*(z1-1)))*dy+3*z*(z1-1),WHITE);
}
/***************************************************************************
ESTA FUNCION BUSCA UN GANADOR
***************************************************************************/
int busca_ganador(int x,int y,int z,int k)
{
int i,j,l,cont;
for (l=0;l<z;l++)
for (j=0;j<y;j++)
{
cont =0;
for (i=0;i<x;i++)
{
if (posiciones[i][j][l]==k)
{
cont=cont+1;
if (cont==x)
return(k);
}
}
}
for (l=0;l<z;l++)
for (j=0;j<x;j++)
{
cont =0;
for (i=0;i<y;i++)
{
if (posiciones[j][i][l]==k)
{
cont=cont+1;
if (cont==y)
return(k);
}
}
}
for (l=0;l<x;l++)
for (j=0;j<y;j++)
{
cont =0;
for (i=0;i<z;i++)
{
if (posiciones[l][j][i]==k)
{
cont=cont+1;
if (cont==z)
return(k);
}
}
}
if ((x*y)==(x*x))
{
for (l=0;l<z;l++)
{
cont=0;
for (i=0;i<x;i++)
{
if (posiciones[i][i][l]==k)
{
cont=cont+1;
if (cont==x)
return(k);
}
}
}
for (l=0;l<z;l++)
{
cont=0;
for (i=0;i<x;i++)
{
if (posiciones[i][(y-1)-i][l]==k)
{
cont=cont+1;
if (cont==x)
return(k);
}
}
}
}
if ((x*z)==(x*x))
{
for (j=0;j<y;j++)
{
cont=0;
for (i=0;i<x;i++)
{
if (posiciones[i][j][i]==k)
{
cont=cont+1;
if (cont==x)
return(k);
}
}
}
for (j=0;j<y;j++)
{
cont=0;
for (i=0;i<x;i++)
{
if (posiciones[i][j][(z-1)-i]==k)
{
cont=cont+1;
if (cont==x)
return(k);
}
}
}
}
if ((y*z)==(y*y))
{
for (i=0;i<x;i++)
{
cont=0;
for (j=0;j<y;j++)
{
if (posiciones[i][j][j]==k)
{
cont=cont+1;
if (cont==y)
return(k);
}
}
}
for (i=0;i<x;i++)
{
cont=0;
for (j=0;j<y;j++)
{
if (posiciones[i][j][(z-1)-j]==k)
{
cont=cont+1;
if (cont==y)
return(k);
}
}
}
if ((z*y*z)==(x*x*x))
//verifica diagonales 3d
{
cont=0;
for (i=0;i<x;i++)
{
if (posiciones[i][i][i]==k)
{
cont=cont+1;
}
}
if (cont==x)
return(k);
cont=0;
for (i=0;i<x;i++)
{
if (posiciones[i][(y-1)-i][i]==k)
{
cont=cont+1;
}
}
if (cont==x)
return(k);
cont=0;
for (i=0;i<x;i++)
{
if (posiciones[(x-1)-i][i][i]==k)
{
cont=cont+1;
}
}
if (cont==x)
return(k);
cont=0;
for (i=0;i<x;i++)
{
if (posiciones[i][i][(z-1)-i]==k)
{
cont=cont+1;
}
}
if (cont==x)
return(k);
}
return(4);
}
/**************************************************************************
ESTA FUNCION VERIFICA SI NADIE PUEDE GANAR
***************************************************************************/
int nadie_gano(int ntiros,int x,int y,int z,int n)
{
if (ntiros==(x*y*z-n))
return(1);
else
return(0);
}
/**************************************************************************
ESTA FUNCION VERIFICA QUE LA POSICION DEL TIRO NO SE REPITA
***************************************************************************/
int tiro_repetido(int x,int y,int z)
{
if (posiciones[x-1][y-1][z-1]==3)
return(0);
else
return(1);
}
/*************************************************************************
ESTA FUNCION TRAZA EL TABLERO DEL JUEGO
**************************************************************************/
void dibuja(int x, int y, int z)
{
int dx,dy,i,j,k;
int driver,modo;
int hor,ver;
hor=150;
ver=20;
driver=DETECT;
modo=0;
initgraph(&driver,&modo,"");
setbkcolor(BLUE);
dx=340/(x+y);
dy=460/((y+2)*z);
for (k=0;k<=z-1;k++)
{
for (j=0;j<=y-1;j++)
{
hor=150+(j*dx);
for (i=0;i<=x-1;i++)
{
line(hor,ver,hor+dx,ver);
line(hor,ver,hor+dx,ver+dy);
line(hor+dx,ver,hor+2*dx,ver+dy);
line(hor+dx,ver+dy,hor+2*dx,ver+dy);
hor=hor+dx;
}
ver=ver+dy;
}
ver=ver+(3*z);
}
}