246 lines
8.0 KiB
C
246 lines
8.0 KiB
C
|
#include<stdio.h>
|
||
|
#include<stdlib.h>
|
||
|
|
||
|
/*
|
||
|
TRES EN RAYA
|
||
|
*/
|
||
|
|
||
|
#define TAM 3
|
||
|
|
||
|
int main(){
|
||
|
// Variables
|
||
|
int tablero[TAM][TAM]={0};
|
||
|
int i,j,final, fila, columna, tirada=0;
|
||
|
char estado[1]="-";
|
||
|
|
||
|
// Variables de comprobación
|
||
|
int ganador1=3;
|
||
|
int ganador2=15;
|
||
|
|
||
|
|
||
|
|
||
|
do{
|
||
|
|
||
|
//Muestra el estado del tablero
|
||
|
printf("\n |\t0\t1\t2\t<< Columna\n");
|
||
|
printf("_____|____________________________________\n");
|
||
|
printf(" |\n");
|
||
|
for(i=0; i<TAM; i++){
|
||
|
printf(" %d |\t",i);
|
||
|
for(j=0; j<TAM; j++){
|
||
|
if(tablero[i][j]==0){
|
||
|
fflush(stdin);
|
||
|
estado[0] = '-';
|
||
|
}else if(tablero[i][j]==1){
|
||
|
fflush(stdin);
|
||
|
estado[0] = 'X';
|
||
|
}else{
|
||
|
fflush(stdin);
|
||
|
estado[0] = 'O';
|
||
|
}
|
||
|
|
||
|
|
||
|
printf("%s\t", estado);
|
||
|
}
|
||
|
printf("\n");
|
||
|
}
|
||
|
printf(" |\n ^ |\nFila |\n\n");
|
||
|
|
||
|
|
||
|
// TURNO JUGADOR 1
|
||
|
|
||
|
printf("\n ---------------");
|
||
|
printf("\n Turno jugador 1");
|
||
|
printf("\n ---------------");
|
||
|
|
||
|
do{
|
||
|
printf("\n Elige una fila: ");
|
||
|
// Pedir Fila y control de nº fila correcto
|
||
|
do{
|
||
|
scanf("%d", &fila);
|
||
|
if(fila<0||fila>2){
|
||
|
printf("\nSolo hay filas del 0 al 2.");
|
||
|
printf("\nVuelve a intentarlo: ");
|
||
|
}
|
||
|
}while (fila<-1||fila>2);
|
||
|
|
||
|
|
||
|
printf(" Elige una columna: ");
|
||
|
|
||
|
// Pedir Columna y control de nº columna correcto
|
||
|
do{
|
||
|
scanf("%d", &columna);
|
||
|
if(columna<0||columna>2){
|
||
|
printf("\nSolo hay columnas del 0 al 3.");
|
||
|
printf("\nVuelve a intentarlo: ");
|
||
|
}
|
||
|
}while (columna<-1||columna>2);
|
||
|
|
||
|
// Control si la posición está ocupada (error) o es una posición correcta
|
||
|
if(tablero[fila][columna]!=0){
|
||
|
printf("\nCasilla ocupada.");
|
||
|
printf("\nVuelve a intentarlo:\n");
|
||
|
}else{
|
||
|
tablero[fila][columna]=1;
|
||
|
tirada=1;
|
||
|
}
|
||
|
|
||
|
}while(tirada!=1);
|
||
|
|
||
|
tirada=0;
|
||
|
|
||
|
//Comprobar si hay ganador o empate
|
||
|
if(ganador1==tablero[0][0]+tablero[0][1]+tablero[0][2]||
|
||
|
ganador1==tablero[1][0]+tablero[1][1]+tablero[1][2]||
|
||
|
ganador1==tablero[2][0]+tablero[2][1]+tablero[2][2]||
|
||
|
ganador1==tablero[0][0]+tablero[1][0]+tablero[2][0]||
|
||
|
ganador1==tablero[0][1]+tablero[1][1]+tablero[2][1]||
|
||
|
ganador1==tablero[0][2]+tablero[1][2]+tablero[2][2]||
|
||
|
ganador1==tablero[0][0]+tablero[1][1]+tablero[2][2]||
|
||
|
ganador1==tablero[0][2]+tablero[1][1]+tablero[2][0]){
|
||
|
printf("\n#########################");
|
||
|
printf("\n# GANADOR JUGADOR 1 #");
|
||
|
printf("\n#########################\n");
|
||
|
final=1;
|
||
|
}
|
||
|
|
||
|
if(ganador2==tablero[0][0]+tablero[0][1]+tablero[0][2]||
|
||
|
ganador2==tablero[1][0]+tablero[1][1]+tablero[1][2]||
|
||
|
ganador2==tablero[2][0]+tablero[2][1]+tablero[2][2]||
|
||
|
ganador2==tablero[0][0]+tablero[1][0]+tablero[2][0]||
|
||
|
ganador2==tablero[0][1]+tablero[1][1]+tablero[2][1]||
|
||
|
ganador2==tablero[0][2]+tablero[1][2]+tablero[2][2]||
|
||
|
ganador2==tablero[0][0]+tablero[1][1]+tablero[2][2]||
|
||
|
ganador2==tablero[0][2]+tablero[1][1]+tablero[2][0]){
|
||
|
printf("\n#########################");
|
||
|
printf("\n# GANADOR JUGADOR 2 #");
|
||
|
printf("\n#########################\n");
|
||
|
final=1;
|
||
|
}
|
||
|
|
||
|
if(tablero[0][0]!=0&&tablero[1][0]!=0&&tablero[2][0]!=0&&
|
||
|
tablero[0][1]!=0&&tablero[1][1]!=0&&tablero[2][1]!=0&&
|
||
|
tablero[0][2]!=0&&tablero[1][2]!=0&&tablero[2][2]!=0){
|
||
|
printf("\n##############");
|
||
|
printf("\n# EMPATE #");
|
||
|
printf("\n##############\n");
|
||
|
final=1;
|
||
|
}
|
||
|
|
||
|
|
||
|
//Muestra el estado del tablero
|
||
|
printf("\n |\t0\t1\t2\t<< Columna\n");
|
||
|
printf("_____|____________________________________\n");
|
||
|
printf(" |\n");
|
||
|
for(i=0; i<TAM; i++){
|
||
|
printf(" %d |\t",i);
|
||
|
for(j=0; j<TAM; j++){
|
||
|
if(tablero[i][j]==0){
|
||
|
fflush(stdin);
|
||
|
estado[0] = '-';
|
||
|
}else if(tablero[i][j]==1){
|
||
|
fflush(stdin);
|
||
|
estado[0] = 'X';
|
||
|
}else{
|
||
|
fflush(stdin);
|
||
|
estado[0] = 'O';
|
||
|
}
|
||
|
|
||
|
|
||
|
printf("%s\t", estado);
|
||
|
}
|
||
|
printf("\n");
|
||
|
}
|
||
|
printf(" |\n ^ |\nFila |\n\n");
|
||
|
|
||
|
|
||
|
// TURNO JUGADOR 2
|
||
|
|
||
|
printf("\n ---------------");
|
||
|
printf("\n Turno jugador 2");
|
||
|
printf("\n ---------------");
|
||
|
|
||
|
do{
|
||
|
printf("\n Elige una fila: ");
|
||
|
// Pedir Fila y control de nº fila correcto
|
||
|
do{
|
||
|
scanf("%d", &fila);
|
||
|
if(fila<0||fila>2){
|
||
|
printf("\nSolo hay filas del 0 al 2.");
|
||
|
printf("\nVuelve a intentarlo: ");
|
||
|
}
|
||
|
}while (fila<-1||fila>2);
|
||
|
|
||
|
|
||
|
printf(" Elige una columna: ");
|
||
|
|
||
|
// Pedir Columna y control de nº columna correcto
|
||
|
do{
|
||
|
scanf("%d", &columna);
|
||
|
if(columna<0||columna>2){
|
||
|
printf("\nSolo hay columnas del 0 al 3.");
|
||
|
printf("\nVuelve a intentarlo: ");
|
||
|
}
|
||
|
}while (columna<-1||columna>2);
|
||
|
|
||
|
// Control si la posición está ocupada (error) o es una posición correcta
|
||
|
if(tablero[fila][columna]!=0){
|
||
|
printf("\nCasilla ocupada.");
|
||
|
printf("\nVuelve a intentarlo:\n");
|
||
|
}else{
|
||
|
tablero[fila][columna]=5;
|
||
|
tirada=1;
|
||
|
}
|
||
|
|
||
|
}while(tirada!=1);
|
||
|
|
||
|
tirada=0;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//Comprobar si hay ganador o empate
|
||
|
if(ganador1==tablero[0][0]+tablero[0][1]+tablero[0][2]||
|
||
|
ganador1==tablero[1][0]+tablero[1][1]+tablero[1][2]||
|
||
|
ganador1==tablero[2][0]+tablero[2][1]+tablero[2][2]||
|
||
|
ganador1==tablero[0][0]+tablero[1][0]+tablero[2][0]||
|
||
|
ganador1==tablero[0][1]+tablero[1][1]+tablero[2][1]||
|
||
|
ganador1==tablero[0][2]+tablero[1][2]+tablero[2][2]||
|
||
|
ganador1==tablero[0][0]+tablero[1][1]+tablero[2][2]||
|
||
|
ganador1==tablero[0][2]+tablero[1][1]+tablero[2][0]){
|
||
|
printf("\n#########################");
|
||
|
printf("\n# GANADOR JUGADOR 1 #");
|
||
|
printf("\n#########################\n");
|
||
|
final=1;
|
||
|
}
|
||
|
|
||
|
if(ganador2==tablero[0][0]+tablero[0][1]+tablero[0][2]||
|
||
|
ganador2==tablero[1][0]+tablero[1][1]+tablero[1][2]||
|
||
|
ganador2==tablero[2][0]+tablero[2][1]+tablero[2][2]||
|
||
|
ganador2==tablero[0][0]+tablero[1][0]+tablero[2][0]||
|
||
|
ganador2==tablero[0][1]+tablero[1][1]+tablero[2][1]||
|
||
|
ganador2==tablero[0][2]+tablero[1][2]+tablero[2][2]||
|
||
|
ganador2==tablero[0][0]+tablero[1][1]+tablero[2][2]||
|
||
|
ganador2==tablero[0][2]+tablero[1][1]+tablero[2][0]){
|
||
|
printf("\n#########################");
|
||
|
printf("\n# GANADOR JUGADOR 2 #");
|
||
|
printf("\n#########################\n");
|
||
|
final=1;
|
||
|
}
|
||
|
|
||
|
if(tablero[0][0]!=0&&tablero[1][0]!=0&&tablero[2][0]!=0&&
|
||
|
tablero[0][1]!=0&&tablero[1][1]!=0&&tablero[2][1]!=0&&
|
||
|
tablero[0][2]!=0&&tablero[1][2]!=0&&tablero[2][2]!=0){
|
||
|
printf("\n##############");
|
||
|
printf("\n# EMPATE #");
|
||
|
printf("\n##############\n");
|
||
|
final=1;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
}while(final!=1);
|
||
|
|
||
|
return 0;
|
||
|
}
|