• Sábado 14 de Diciembre de 2024, 09:47

Autor Tema:  ¿Cómo hago un programa para jugar gato en lenguaje C?  (Leído 29982 veces)

Alejandra_Jañez

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
¿Cómo hago un programa para jugar gato en lenguaje C?
« en: Martes 30 de Junio de 2009, 00:23 »
0
Estoy en un curso de programación en C, ya me enviaron la parte de código que dibuja la tabla y la función que genera los números aleatorios, pero aun así no se como empezar. Agradeceré orientación, pseudocódigo y/o ideas de como resolver el problema y si tienen algunos códigos de ejemplo. (NO quiero k me haga nadie el programa)

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: ¿Cómo hago un programa para jugar gato en lenguaje C?
« Respuesta #1 en: Martes 30 de Junio de 2009, 10:54 »
0
No sé cómo se juega al gato, así que si puedes especificar más...

Alejandra_Jañez

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: ¿Cómo hago un programa para jugar gato en lenguaje C?
« Respuesta #2 en: Miércoles 1 de Julio de 2009, 03:36 »
0
El juego de gato (se le conoce asi en mexico) en otros lados se conoce como tres en linea o tic tac toe, formas un arreglo con dos lineas paralelas verticales y dos paralelas horizontales que las crucen, lo que te da 9 casillas(similar a #). Cada jugador (solo pueden ser dos) tira con una X o con una O, seleccionando una casilla por turno, gana el que forme una linea horizontal, vertical o cruzada.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: ¿Cómo hago un programa para jugar gato en lenguaje C?
« Respuesta #3 en: Miércoles 1 de Julio de 2009, 10:30 »
0
Ok

¿Y qué llevas hecho? ¿O cómo lo tienes pensado plantear?

Alejandra_Jañez

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: ¿Cómo hago un programa para jugar gato en lenguaje C?
« Respuesta #4 en: Martes 7 de Julio de 2009, 19:18 »
0
Ya lo termine, se los comparto a ver si a alguien mas le sirve

/* este programa juega al gato o tres en linea con el usuario. I. Jañez jue 02 jul 09*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int c[9]={0,0,0,0,0,0,0,0,0}, turno, jugador;
char denuevo=' ';

char tirada(int i); /*Necesaria en print_gato, retorna 'X', 'O' o ' '*/
int ganador(); /*Deduce si hay un ganador, regresa -1, 0 o 1*/
void print_gato(); /*Imprime el tablero de Gato*/
void turno_jugador();
void turno_computadora();


int main()
{
do
{
    int h, menu;
    printf(" nMenu:n 1) Jugar. n 2) Leer instruccionesn 3) Ver creditosn 4) Salirnn");
    scanf("%d", &menu);
   
    switch(menu)
    {
         case 1:
                 
                     
                        jugador = 1;
                        turno = 0;
                        do
                        {
                              turno++;
                              if (jugador) turno_jugador(); else turno_computadora();
                              print_gato();
                         }
                         while ((!ganador())&&(turno<=8));
                         switch (ganador())
                         {
                                case 0:
                                     printf("n Empatamosn");
                                     break;
                                     
                                case 1:
                                     printf("n Tu ganasnn");
                                     break;
                               
                                case -1:
                                     printf("n o.O yo te gano n");
                                     break;
                         }
                                                                       
                 
                 break;
         
         case 2:
              printf("n Vamos a jugar GATO!nn Las casillas estan enumeradas asi:n 1 |2 |3n --+--+--n 4 |5 |6n --+--+--n 7 |8 |9n");
              printf("n Elije una casilla pulsando un numero. Una vez que tires tu, tirare yo. nGana quien haga una linea de tres caracteres iguales n ya sean horizontales, verticales o diagonalesnn");
              getchar();
              break;
         
         case 3:
              printf("n Programa que juega gato con el usuario hecho por:n Irais Jañezn");
              getchar();
              break;
           
          case 4:
               printf("t Fue un placer jugar contigo");
               getchar();
               exit(1);
              break;    
         }
         printf("Volver al menu? (s o n) ");
         scanf("%s", &denuevo);
         if (denuevo>=97) denuevo-=32;
         if ((denuevo!='s')&&(denuevo!='n'))
         for (h=0;h<=8;h++) c[h]=0;        
}
while (denuevo=='S');            
getchar();

}

void print_gato() /*esta funcion acomoda los valores en el dibujo del tablero*/
{
     printf("n %c |%c |%cn --+--+--n %c |%c |%cn --+--+--n %c |%c |%cn", tirada(c[0]), tirada(c[1]), tirada(c[2]), tirada(c[3]), tirada(c[4]), tirada(c[5]), tirada(c[6]), tirada(c[7]), tirada(c[8]));
}

char tirada(int i)
{
     switch (i)
     {
            case (-1):
                 return 'X';
                 break;
                 
            case (1):
                 return 'O';
                 break;
                 
            default:
                    return ' ';
     }
}

int ganador() /*esta funcion compara el arreglo con los patrones de posible ganador*/
{
    if ((c[0]+c[1]+c[2]==3)|| (c[3]+c[4]+c[5]==3)|| (c[6]+c[7]+c[8]==3)|| (c[6]+c[3]+c[0]==3)|| (c[7]+c[4]+c[1]==3)|| (c[8]+c[5]+c[2]==3)|| (c[6]+c[4]+c[2]==3)|| (c[8]+c[4]+c[0]==3)) return 1;
    else if ((c[0]+c[1]+c[2]==-3)|| (c[3]+c[4]+c[5]==-3)|| (c[6]+c[7]+c[8]==-3)|| (c[6]+c[3]+c[0]==-3)|| (c[7]+c[4]+c[1]==-3)|| (c[8]+c[5]+c[2]==-3)|| (c[6]+c[4]+c[2]==-3)|| (c[8]+c[4]+c[0]==-3)) return -1;
    else return 0;
}

void turno_jugador() /*coloca el caracter en la casilla seleccionada y verifica que no este ocupada*/
{
     int quieres;
     printf("n Te toca, En que casilla quieres tirar? [1-9] ");
     scanf("%d",&quieres);
     
     if ((quieres>9)|| (quieres<1)|| (c[quieres-1]!=0))
     {
                       do
                       {
                                     printf("n Esa casilla esta ocupada, intenta en otra: [1-9] ");
                                     fflush(stdin);
                                     
                                     scanf("%d",&quieres);
                       }
                       while ((quieres>9)|| (quieres<1)|| (c[quieres-1]!=0));
     }
     
     c[quieres-1]=1;
     jugador = 0;
}

void turno_computadora() /* coloca el valor de la computadora a tirar, en una posicion aleatoria*/
{
     int quiero;
     time_t t;
     printf("n Me toca, tiro en la casilla: ");
     do
     {
                  srand(time(&t));
                  quiero=rand()%9;
     }
     while (c[quiero]!=0);
     printf("%dn", quiero + 1);
     
     c[quiero]=-1;
     jugador = 1;
}

Paula_gob

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: ¿Cómo hago un programa para jugar gato en lenguaje C?
« Respuesta #5 en: Miércoles 29 de Septiembre de 2010, 05:03 »
0
Esta bueno el codigo te pasaste, pero tu sabes como hacerlo para jugar con alguien mas no con el pc y con graficos

jotacorredo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: ¿Cómo hago un programa para jugar gato en lenguaje C?
« Respuesta #6 en: Domingo 1 de Mayo de 2011, 04:24 »
0
amigos... no entiendo para que es esta parte...
printf("Volver al menu? (s o n) ");
scanf("%s", &denuevo);
if (denuevo>=97) denuevo-=32;
if ((denuevo!='s')&&(denuevo!='n'))
for (h=0;h<=8;h++) c[h]=0;
}
while (denuevo=='S');
getchar();
por qué se colocan estos valores entre 97 y 32????
Gracias

RAB

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: ¿Cómo hago un programa para jugar gato en lenguaje C?
« Respuesta #7 en: Lunes 2 de Mayo de 2011, 03:26 »
0
Probablemente sean valores ASCII, ve si concuerdan con s o n.