Backup proyecto Joyfe - Borland
This commit is contained in:
613
CPP/PROG9.CPP
Normal file
613
CPP/PROG9.CPP
Normal file
@ -0,0 +1,613 @@
|
||||
// Prog9
|
||||
//
|
||||
// Programadores:
|
||||
//
|
||||
// Juan L<>pez Fern<72>ndez
|
||||
// Mois<69>s 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<63>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<63>n de la ficha X.
|
||||
fichaX [0][0]='<EFBFBD>';fichaX [0][4]='<EFBFBD>';fichaX [1][1]='<EFBFBD>';fichaX [1][3]='<EFBFBD>';
|
||||
fichaX [3][1]='<EFBFBD>';fichaX [3][3]='<EFBFBD>';fichaX [4][0]='<EFBFBD>';fichaX [4][4]='<EFBFBD>';
|
||||
fichaX [2][2]='<EFBFBD>';
|
||||
// Inicializaci<63>n de la ficha 0.
|
||||
ficha0 [0][2]='<EFBFBD>';ficha0 [1][1]='<EFBFBD>';ficha0 [1][3]='<EFBFBD>';ficha0 [2][0]='<EFBFBD>';
|
||||
ficha0 [2][4]='<EFBFBD>';ficha0 [3][1]='<EFBFBD>';ficha0 [3][3]='<EFBFBD>';ficha0 [4][2]='<EFBFBD>';
|
||||
// Introducci<63>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<73> 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 ("<EFBFBD><EFBFBD> Ha ganado %s !!",jugador1);
|
||||
con=10;
|
||||
fflush (stdin);
|
||||
getch();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ganar==2)
|
||||
{
|
||||
borrar(24);
|
||||
gotoxy (17,24);
|
||||
textcolor (10+BLINK);
|
||||
cprintf ("<EFBFBD><EFBFBD> Ha ganado %s !!",jugador2);
|
||||
con=10;
|
||||
fflush (stdin);
|
||||
getch();
|
||||
}
|
||||
}
|
||||
}
|
||||
borrar(24);
|
||||
gotoxy (17,24);
|
||||
textcolor(7);
|
||||
cprintf ("<EFBFBD>Desea jugar otra vez? ");
|
||||
fflush(stdin);
|
||||
cscanf ("%s",&continua);
|
||||
}
|
||||
while (continua!='n');
|
||||
fflush (stdin);
|
||||
getch();
|
||||
clrscr();
|
||||
textcolor (7);
|
||||
}
|
||||
|
||||
// Funci<63>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]=='<EFBFBD>')
|
||||
{
|
||||
textcolor (color);
|
||||
cprintf ("%c",fichaX[jfila][jcolumna]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (turno==2)
|
||||
{
|
||||
if (ficha0[jfila][jcolumna]=='<EFBFBD>')
|
||||
{
|
||||
textcolor (color);
|
||||
cprintf ("%c",ficha0[jfila][jcolumna]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
// Funci<63>n tablero
|
||||
|
||||
char tablero()
|
||||
{
|
||||
// Fondo tablero.
|
||||
for (pos_x=15,pos_y=4;pos_y<=22;)
|
||||
{
|
||||
textcolor(7);
|
||||
gotoxy(pos_x,pos_y);
|
||||
cprintf("<EFBFBD>");
|
||||
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 ("<EFBFBD>");
|
||||
gotoxy (pos_x,22);cprintf ("<EFBFBD>");
|
||||
gotoxy (pos_x,10);cprintf ("<EFBFBD>");
|
||||
gotoxy (pos_x,16);cprintf ("<EFBFBD>");
|
||||
}
|
||||
for (pos_y=4;pos_y<=22;pos_y++)
|
||||
{
|
||||
textcolor (1);
|
||||
gotoxy (15,pos_y);cprintf ("<EFBFBD>");
|
||||
gotoxy (16,pos_y);cprintf ("<EFBFBD>");
|
||||
gotoxy (65,pos_y);cprintf ("<EFBFBD>");
|
||||
gotoxy (64,pos_y);cprintf ("<EFBFBD>");
|
||||
gotoxy (32,pos_y);cprintf ("<EFBFBD>");
|
||||
gotoxy (48,pos_y);cprintf ("<EFBFBD>");
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
// Borrador de l<>nea
|
||||
char borrar(int pos_y)
|
||||
{
|
||||
for (limpia=1;limpia<=80;limpia++)
|
||||
{
|
||||
gotoxy (limpia,pos_y);
|
||||
textcolor (0);
|
||||
cprintf ("<EFBFBD>");
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
// Comprobaci<63>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);
|
||||
}
|
||||
Reference in New Issue
Block a user