Files
Borland-C/CPP/PROG9.CPP

613 lines
11 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Prog9
//
// Programadores:
//
// Juan L¢pez Fern ndez
// Moiss Virumbrales Cuenca
// DAI 1§A
//
// Juego de las tres en raya.
#include<stdio.h>
#include<conio.h>
int pos_x,pos_y,jfila,jcolumna;
int sw1,sw2,sw3,sw4,sw5,sw6,sw7,sw8,sw9;
int con,conaux;
int turno,turnoaux;
int lugar,tablalugar [3][3];
int ganar;
int vaciaf,vaciac;
char jugador1[8],jugador2[8];
char continua;
int limpia;
char fichaX [5][5],ficha0 [5][5];
int win1,win2;
void main()
{
// Inicializaci¢n de funciones.
char pintar(int pos_x,int pos_y, int turno, int color);
char tablero();
char borrar(int pos_y);
int comprobar(int turno);
char leerdatos();
char pantalla(char jugador1[8],char jugador2[8]);
// Inicializaci¢n de la ficha X.
fichaX [0][0]='Û';fichaX [0][4]='Û';fichaX [1][1]='Û';fichaX [1][3]='Û';
fichaX [3][1]='Û';fichaX [3][3]='Û';fichaX [4][0]='Û';fichaX [4][4]='Û';
fichaX [2][2]='Û';
// Inicializaci¢n de la ficha 0.
ficha0 [0][2]='Û';ficha0 [1][1]='Û';ficha0 [1][3]='Û';ficha0 [2][0]='Û';
ficha0 [2][4]='Û';ficha0 [3][1]='Û';ficha0 [3][3]='Û';ficha0 [4][2]='Û';
// Introducci¢n de datos
leerdatos();
do
{
// Pantalla general
if (continua!='s')
{
pantalla(jugador1,jugador2);
}
tablero();
if (turno==1 && continua=='s')
{
if (ganar==1)
{
win1++;
gotoxy (17,2);
printf ("Partidas ganadas: %d",win1);
}
turno=2;
borrar(24);
textcolor (7);
gotoxy (17,24);
cprintf ("Es el turno de ");
textcolor(2+BLINK);
cprintf ("%s",jugador2);
}
else
{
if (turno==2 && continua=='s')
{
if (ganar==2)
{
win2++;
gotoxy (45,2);
printf ("Partidas ganadas: %d",win2);
}
turno=1;
borrar(24);
textcolor (7);
gotoxy (17,24);
cprintf ("Es el turno de ");
textcolor(14+BLINK);
cprintf ("%s",jugador1);
}
}
// El programa.
for (vaciaf=0;vaciaf<3;vaciaf++)
{
for (vaciac=0;vaciac<3;vaciac++)
{
tablalugar[vaciaf][vaciac]=0;
}
}
sw1=0;sw2=0;sw3=0;sw4=0;sw5=0;sw6=0;sw7=0;sw8=0;sw9=0;
conaux=1;
lugar=0;
for (con=1,ganar=0;con<=9;con++)
{
con=conaux;
gotoxy (79,25);
fflush(stdin);
textcolor(0);
cscanf("%1d",&lugar);
if (lugar==1 && sw1==0)
{
pos_x=22;pos_y=17;
sw1=1;
if (turno==1)
{
tablalugar [0][2]=1;
}
else
{
tablalugar [0][2]=2;
}
}
else
{
if (lugar==2 && sw2==0)
{
pos_x=38;pos_y=17;
sw2=1;
if (turno==1)
{
tablalugar [1][2]=1;
}
else
{
tablalugar [1][2]=2;
}
}
else
{
if (lugar==3 && sw3==0)
{
pos_x=54;pos_y=17;
sw3=1;
if (turno==1)
{
tablalugar [2][2]=1;
}
else
{
tablalugar [2][2]=2;
}
}
else
{
if (lugar==4 && sw4==0)
{
pos_x=22;pos_y=11;
sw4=1;
if (turno==1)
{
tablalugar [0][1]=1;
}
else
{
tablalugar [0][1]=2;
}
}
else
{
if (lugar==5 && sw5==0)
{
pos_x=38;pos_y=11;
sw5=1;
if (turno==1)
{
tablalugar [1][1]=1;
}
else
{
tablalugar [1][1]=2;
}
}
else
{
if (lugar==6 && sw6==0)
{
pos_x=54;pos_y=11;
sw6=1;
if (turno==1)
{
tablalugar [2][1]=1;
}
else
{
tablalugar [2][1]=2;
}
}
else
{
if (lugar==7 && sw7==0)
{
pos_x=22;pos_y=5;
sw7=1;
if (turno==1)
{
tablalugar [0][0]=1;
}
else
{
tablalugar [0][0]=2;
}
}
else
{
if (lugar==8 && sw8==0)
{
pos_x=38;pos_y=5;
sw8=1;
if (turno==1)
{
tablalugar [1][0]=1;
}
else
{
tablalugar [1][0]=2;
}
}
else
{
if (lugar==9 && sw9==0)
{
pos_x=54;pos_y=5;
sw9=1;
if (turno==1)
{
tablalugar [2][0]=1;
}
else
{
tablalugar [2][0]=2;
}
}
else
{
borrar (24);
textcolor (7);
gotoxy (17,24);
cprintf ("Esa casilla est  ocupada, pierde turno.");
fflush (stdin);
getch();
conaux=con;
turnoaux=turno;
turno=0;
}
}
}
}
}
}
}
}
}
comprobar(turno);
// Pintar la ficha correspondiente.
if (turno==1 && ganar==0)
{
pintar(pos_x,pos_y,turno,14);
}
else
{
if (turno==2 && ganar==0)
{
pintar(pos_x,pos_y,turno,2);
}
}
// Siguiente turno.
if (turno==2 && con!=9 && ganar==0)
{
borrar(24);
textcolor (7);
gotoxy (17,24);
cprintf ("Es el turno de ");
textcolor(14+BLINK);
cprintf ("%s",jugador1);
turno=1;
conaux++;
}
else
{
if (turno==1 && con!=9 && ganar==0)
{
borrar(24);
textcolor (7);
gotoxy (17,24);
cprintf ("Es el turno de ");
textcolor(2+BLINK);
cprintf ("%s",jugador2);
turno=2;
conaux++;
}
else
{
if (turnoaux==2 && con!=9 && ganar==0)
{
borrar(24);
textcolor (7);
gotoxy (17,24);
cprintf ("Es el turno de ");
textcolor(14+BLINK);
cprintf ("%s",jugador1);
turno=1;
}
else
{
if (turnoaux==1 && con!=9 && ganar==0)
{
borrar(24);
textcolor (7);
gotoxy (17,24);
cprintf ("Es el turno de ");
textcolor(2+BLINK);
cprintf ("%s",jugador2);
turno=2;
}
}
}
}
if (con==9 && ganar==0)
{
borrar(24);
gotoxy (17,24);
textcolor(7);
cprintf ("Partida finalizada.");
fflush(stdin);
getch();
}
if (ganar==1)
{
borrar(24);
gotoxy (17,24);
textcolor (14+BLINK);
cprintf ("­­ Ha ganado %s !!",jugador1);
con=10;
fflush (stdin);
getch();
}
else
{
if (ganar==2)
{
borrar(24);
gotoxy (17,24);
textcolor (10+BLINK);
cprintf ("­­ Ha ganado %s !!",jugador2);
con=10;
fflush (stdin);
getch();
}
}
}
borrar(24);
gotoxy (17,24);
textcolor(7);
cprintf ("¨Desea jugar otra vez? ");
fflush(stdin);
cscanf ("%s",&continua);
}
while (continua!='n');
fflush (stdin);
getch();
clrscr();
textcolor (7);
}
// Funci¢n pintar
char pintar(int pos_x,int pos_y,int turno,int color)
{
for (jfila=0;jfila<=4;jfila++)
{
for (jcolumna=0;jcolumna<=4;jcolumna++)
{
gotoxy (jcolumna+pos_x,jfila+pos_y);
if (turno==1)
{
if (fichaX[jfila][jcolumna]=='Û')
{
textcolor (color);
cprintf ("%c",fichaX[jfila][jcolumna]);
}
}
else
{
if (turno==2)
{
if (ficha0[jfila][jcolumna]=='Û')
{
textcolor (color);
cprintf ("%c",ficha0[jfila][jcolumna]);
}
}
}
}
}
return(0);
}
// Funci¢n tablero
char tablero()
{
// Fondo tablero.
for (pos_x=15,pos_y=4;pos_y<=22;)
{
textcolor(7);
gotoxy(pos_x,pos_y);
cprintf("Û");
if (pos_x!=65)
{
pos_x++;
}
else
{
pos_x=15;
pos_y++;
}
}
// Recuadro tablero y lineas interior.
for (pos_x=15;pos_x<=65;pos_x++)
{
textcolor (1);
gotoxy (pos_x,4);cprintf ("Û");
gotoxy (pos_x,22);cprintf ("Û");
gotoxy (pos_x,10);cprintf ("Û");
gotoxy (pos_x,16);cprintf ("Û");
}
for (pos_y=4;pos_y<=22;pos_y++)
{
textcolor (1);
gotoxy (15,pos_y);cprintf ("Û");
gotoxy (16,pos_y);cprintf ("Û");
gotoxy (65,pos_y);cprintf ("Û");
gotoxy (64,pos_y);cprintf ("Û");
gotoxy (32,pos_y);cprintf ("Û");
gotoxy (48,pos_y);cprintf ("Û");
}
return(0);
}
// Borrador de l¡nea
char borrar(int pos_y)
{
for (limpia=1;limpia<=80;limpia++)
{
gotoxy (limpia,pos_y);
textcolor (0);
cprintf ("Û");
}
return (0);
}
// Comprobaci¢n de tres en raya
int comprobar(int turno)
{
if (turno!=0)
{
if (tablalugar[0][0]==turno)
{
if (tablalugar[1][0]==turno)
{
if (tablalugar[2][0]==turno)
{
ganar=turno;
pintar(22,5,turno,4+BLINK);pintar(38,5,turno,4+BLINK);
pintar(54,5,turno,4+BLINK);
}
}
else
{
if (tablalugar[1][1]==turno)
{
if (tablalugar[2][2]==turno)
{
ganar=turno;
pintar(22,5,turno,4+BLINK);pintar(38,11,turno,4+BLINK);
pintar(54,17,turno,4+BLINK);
}
}
else
{
if (tablalugar[0][1]==turno)
{
if (tablalugar[0][2]==turno)
{
ganar=turno;
pintar(22,5,turno,4+BLINK);pintar(22,11,turno,4+BLINK);
pintar(22,17,turno,4+BLINK);
}
}
}
}
}
if (tablalugar[2][0]==turno)
{
if (tablalugar[2][1]==turno)
{
if (tablalugar[2][2]==turno)
{
ganar=turno;
pintar(54,5,turno,4+BLINK);pintar(54,11,turno,4+BLINK);
pintar(54,17,turno,4+BLINK);
}
}
else
{
if (tablalugar[1][1]==turno)
{
if (tablalugar[0][2]==turno)
{
ganar=turno;
pintar(54,5,turno,4+BLINK);pintar(38,11,turno,4+BLINK);
pintar(22,17,turno,4+BLINK);
}
}
}
}
if (tablalugar[2][2]==turno)
{
if (tablalugar[1][2]==turno)
{
if (tablalugar[0][2]==turno)
{
ganar=turno;
pintar(22,17,turno,4+BLINK);pintar(38,17,turno,4+BLINK);
pintar(54,17,turno,4+BLINK);
}
}
}
if (tablalugar[1][0]==turno)
{
if (tablalugar[1][1]==turno)
{
if (tablalugar[1][2]==turno)
{
ganar=turno;
pintar(38,5,turno,4+BLINK);pintar(38,11,turno,4+BLINK);
pintar(38,17,turno,4+BLINK);
}
}
}
if (tablalugar[0][1]==turno)
{
if (tablalugar[1][1]==turno)
{
if (tablalugar[2][1]==turno)
{
ganar=turno;
pintar(22,11,turno,4+BLINK);pintar(38,11,turno,4+BLINK);
pintar(54,11,turno,4+BLINK);
}
}
}
}
return(ganar);
}
// Datos
char leerdatos()
{
clrscr();
textcolor(7);
gotoxy (20,11);
cprintf ("Nombre jugador 1: ");
fflush(stdin);
cscanf("%8s",&jugador1);
gotoxy (20,13);
cprintf ("Nombre jugador 2: ");
fflush(stdin);
cscanf("%8s",&jugador2);
return (jugador1[8],jugador2[8]);
}
// Pantalla general
char pantalla(char jugador1[8],char jugador2[8])
{
clrscr();
gotoxy (17,1);
textcolor(14);
cprintf ("X ");textcolor (7);cprintf ("-> %s",jugador1);
gotoxy (53,1);
textcolor (2);
cprintf ("O ");textcolor (7);cprintf ("-> %s",jugador2);
gotoxy (17,24);
printf ("Es el turno de ");
textcolor(14+BLINK);
cprintf ("%s",jugador1);
turno=1;
return(turno);
}