#include <stdio.h> #include <stdlib.h> #include <time.h> int menu(){ int select=0; do{ printf("Menu:\n"); printf("1. Score\n"); printf("2. Jugar\n"); printf("3. Salir\n"); printf("Entre la opcion:\n"); scanf("%i",&select); }while(!(select>0 && select<4)); return select; } void mostrar_score(int puntaje){ //Si puntaje <0 entonces no agrega jugador //Sino puede agregarlo } void jugada_maquina(int **tablero, int f, int c){ int i,j; do{ i=rand()%f; j=rand()%c; } while (!tablero[i][j]==0); tablero[i][j]=2; } void mostrar_tablero(int **tablero,int f, int c){ int i,j; for (i=0;i<f;i++){ for (j=0;j<c;j++){ switch(tablero[i][j]){ case 0: printf("*");break; case 1: printf("X");break; case 2: printf("O");break; } } printf("\n"); } } int evaluar(int **tablero,int f,int c){ int i,j; int cambio=0; int tablas=1; int gana=0; do{ cambio=0; for (i=0;i<f;i++){ for (j=0;j<c;j++){ if(tablero[i][j]==3){ if (i-1>0) if (tablero[i-1][j]==1) tablero[i-1][j]=3,cambio=1; if (i+1<f) if (tablero[i+1][j]==1) tablero[i+1][j]=3,cambio=1; if (j-1>0) if (tablero[i][j-1]==1) tablero[i][j-1]=3,cambio=1; if (i+1<c) if (tablero[i][j+1]==1) tablero[i][j+1]=3,cambio=1; } else if (tablero[i][j]==1){ if (i-1>0) if (tablero[i-1][j]==0) tablero[i][j]=3,cambio=1; if (i+1<f) if (tablero[i+1][j]==0) tablero[i][j]=3,cambio=1; if (j-1>0) if (tablero[i][j-1]==0) tablero[i][j]=3,cambio=1; if (i+1<c) if (tablero[i][j+1]==0) tablero[i][j]=3,cambio=1; } } } }while(cambio); for (i=0;i<f;i++){ for (j=0;j<c;j++){ if (tablero[i][j]==1) gana=1; } } for (i=0;i<f;i++){ for (j=0;j<c;j++){ if(tablero[i][j]==3) tablero[i][j]=1; } } if (gana==1){ return 2; } gana=0; do{ cambio=0; for (i=0;i<f;i++){ for (j=0;j<c;j++){ if(tablero[i][j]==4){ if (i-1>0) if (tablero[i-1][j]==2) tablero[i-1][j]=4,cambio=1; if (i+1<f) if (tablero[i+1][j]==2) tablero[i+1][j]=4,cambio=1; if (j-1>0) if (tablero[i][j-1]==2) tablero[i][j-1]=4,cambio=1; if (i+1<c) if (tablero[i][j+1]==2) tablero[i][j+1]=4,cambio=1; } else if (tablero[i][j]==2){ if (i-1>0) if (tablero[i-1][j]==0) tablero[i][j]=4,cambio=1; if (i+1<f) if (tablero[i+1][j]==0) tablero[i][j]=4,cambio=1; if (j-1>0) if (tablero[i][j-1]==0) tablero[i][j]=4,cambio=1; if (i+1<c) if (tablero[i][j+1]==0) tablero[i][j]=4,cambio=1; } } } }while(cambio); for (i=0;i<f;i++){ for (j=0;j<c;j++){ if (tablero[i][j]==2) gana=1; } } for (i=0;i<f;i++){ for (j=0;j<c;j++){ if(tablero[i][j]==4) tablero[i][j]=2; } } if (gana==1){ return 1; } for (i=0;i<f;i++){ for (j=0;j<c;j++){ if(tablero[i][j]==0) tablas=0; } } if (tablas==1) return 4; return 0; } int jugar(){ int i,j,f,c; int **tablero; int puntaje=0; printf ("Entre el numero de filas y columnas del tablero:\n"); scanf("%i%i",&f,&c); tablero = (int**)malloc(f*sizeof(int*)); for (i=0;i<f;i++){ tablero[i]= (int*)malloc(c*sizeof(int)); for (j=0;j<c;j++){ tablero[i][j]=0; } } do{ int ni,nj; mostrar_tablero(tablero,f,c); do{ printf("Entre el numero de la coordenada:\n"); scanf("%i%i",&ni,&nj); if (ni==0 && nj==0){ printf("Desea Salir (s/n)\n"); if(getch()=='s'){ for (i=0;i<f;i++){ free(tablero[i]); } free(tablero); return -1; } else continue; } ni--;nj--; if(!(ni>=0 && ni<f && nj>=0 && nj<c)){ printf("La coordenana esta fuera de los limites\n"); continue; } if (tablero[ni][nj]!=0){ printf("La coordenada colocada esta ocupada\n"); continue; } break; }while (1); tablero[ni][nj]=1; if(evaluar(tablero,f,c)==0){ jugada_maquina(tablero,f,c); }else { //gano el humano } puntaje=evaluar(tablero,f,c); printf("puntaje: %i\n",puntaje); }while(puntaje==0); for (i=0;i<f;i++){ free(tablero[i]); } free(tablero); } int main(){ int salir=0; do{ switch (menu()){ case 1: mostrar_score(-1); break; case 2: mostrar_score(jugar()); break; case 3: salir=1; break; } }while(!salir); printf("Gracias por utilizar el programa"); return 0; }
You need to create an account or log in to post comments to this site.