DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
Go Game
Algun juego que alguna ves realice... llamado go, pero que ya no recuerdo.
#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;
}





