C/Visual C - Gato en C ansi

 
Vista:

Gato en C ansi

Publicado por mauricio (5 intervenciones) el 10/09/2008 21:43:00
Hola amigos, estoy terminando la carrera de informatica y nos han pedido que desarrollemos el juego del gato pero con punteros y estructuras, sin usar arreglos. ademas debe ser en modalidad grafica.
Quiza alguien tenga por ahio algo que me puieda guiar en esta aventura.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Gato en C ansi

Publicado por AntonioG (42 intervenciones) el 11/09/2008 00:23:24
Hola,

Pues el gato, pero sin punteros, ni estructuras, ni en modalidad grafica:
http://foro_c.forogratis.es/foro/juego-del-gato-tic-tac-toe-o-tres-en-raya-t321.html
pero el gato al fin...

No, mira, ya mas en serio, pues se te puede ayudar en la parte en que te vayas atorando al hacer el porgrama, solo vas diciendo en que parte.

Saludos
P.D. Para que necesitarias punteros en el juego del gato? lo de las estructuras, pues si, pero no veo donde pondria punteros...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gato en C ansi

Publicado por Mauricio (5 intervenciones) el 11/09/2008 18:27:06
Muchisimas gracias por tu respuesta. En realidad los punteros solo son para complicarnos la vida. esa es una idea fija que tiene el profe. Ademas te comento que somos tres. a uno le toco desarrollar la parte grafica, a otro la parte de archivos, donde hay que permitir guardar juegos sin terminar y luego recuperarlos. A mi me ha tocado la parte inteligencia, donde se permita jugar contra el PC y otro contra otro compañero.
En esto estoy ideando declarar una estructura que va a representar el tablero.
Algo asi:

a1 b1 c1
a2 b2 c2
a3 b3 c3

struct tablero {
char a1,a2,a3,b1,b2,b3,c1,c2,c3;
}

El problema es que ademas de registrar que ya eligio una posicion hay que distingiuir cual de los dos eligio si cruz o pelota.

MG
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gato en C ansi

Publicado por AntonioG (42 intervenciones) el 12/09/2008 00:30:39
Hola,

Bueno, en la estructura del tablero, podrias usar un array:
struct tablero{
char a[3][3];
}
No hay problema en lo de la representacion, ya que las entradas del array (o de tu estructura) pueden tomar el valor 'x' ó 'o'.

A la estructura le agregaria una variable para saber si sigue de jugar el jugador 'x' o el jugador 'o'.
struct tablero{
char siguiente_jugada;
char a[3][3];
}
y tal vez una para indicar que el juego esta terminado (para saberlo sin tener que revisar todas las casillas siempre)
struct tablero{
char siguiente_jugada;
char a[3][3];
int juego_terminado; <--aqui tomaria el valor 0 o 1, aunque podrias usar bool en lugar de int
}

Lo de los punteros ya vi donde se usaria, seria en la parte de cuando recuperas las partidas sin jugar, seria punteros a tableros. Leerias cada tablero del archivo y lo irias guardando en una lista enlazada (aqui es donde van los punteros). Al guardarlo es lo mismo, recorres la lista enlazada y vas guardando cada tablero en el archivo.

Por cierto, lo de jugar contra el PC, que vas a usar? hay una tecnica que se llama poda alfa-beta que te puede ayudar en ese sentido (para que el PC juegue "inteligentemente").

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gato en C ansi

Publicado por mauricio (5 intervenciones) el 12/09/2008 16:26:57
Oye muchas gracias por tu buena acogida.

Por parte, no puedo usar arreglos, solo estructuras. entonces la solucion a eso seria usar estrucutras (de algun tipo). Respecto a los punteros no me queda muy claro lo que me indicas. Y por ultimo pensaba hacer un algoritmo que permitiera distinguir cual es la opcion para la mejor jugada. Pero si hay una tecnica, fantastico. Donde la encuentro ¿?

Mauricio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gato en C ansi

Publicado por AntonioG (42 intervenciones) el 12/09/2008 17:38:30
Hola,

Buneo, respecto a los arrays, pues no los uses. Pero aun asi pienso que en tu estructura si deben ir los otros campos que te mencione.

Lo de los punteros, viste listas enlazadas? bueno, mas bien, como piensas guardar en memoria los tableros leidos de un archivo? (respondiendo a esa pregunta vas a ver que necesitas punteros)

Sobre la tecnica, se llama generalmente minimax:
http://es.wikipedia.org/wiki/Minimax
Es mas, busca he igual y viene el ejemplo de minimax con el juego del gato (tambien lo puedes encontrar como poda alfa beta), lo buscaria y pero ahorita voy a clases :D

De todas maneras primero tienes que realizar todo para que pueda jugar un jugador contra otro, y luego hacer el de contra la PC.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gato en C ansi

Publicado por mauricio  (5 intervenciones) el 21/09/2008 04:20:30
Amigo. tenemos casi terminado el gato. pero tenemos uin problema, se trata der que como no podemos usar arreglos y debo guardar el nombre de un juego en un archivo, debemos hacerlo sin el tipico char nombre [20] sino que usar otro metodo. Se te ocurre como ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gato en C ansi

Publicado por mauricio (5 intervenciones) el 22/09/2008 17:35:33
El profe nos dijo, por lo que me acuerdo, que la solucion es declarar un float, y el dato recibirlo como tal, es decir pasarlo a binario o ascii. La cosa es que nadie se "imagina " como sera este proceso.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gato en C ansi

Publicado por AntonioG (42 intervenciones) el 24/09/2008 01:10:57
Hola,

Pues que exagerado con eso de no usar arreglos ni para las cadenas.

Y porque no creas una lista de caracteres? vas leyendo caracater por caracter y lo vas gaurdando en una lista.

Lo que tu dices de usar un float para codificar una cadena, igual y tiene que ver con esto:
un "char" ocupa un byte (valores de 0 a 256)
un "int" ocupa 4 bytes
Entonces tecnicamente puedes guardar 4 "char" dentro de un "int" usando la siguiente formula:
entero=char1+256*char2+256*256*char3+256*256*256*char 4
y para recuperar los valores de esos 4 char a partir del entero usas la formula
char1=entero%256
char2=(entero/256)%256
char3=(entero/256*256)%256
char4=(entero/256*256*256)
Ha de ser algo similar con un float, peor aun asi no vas a poder "guardar" muchos caracteres en un float.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

por cierto, aqui esta el codigo en C

Publicado por AntonioG (42 intervenciones) el 30/09/2008 05:37:53
Hola,

Aqui esta el codigo en C del jmjugeo dle gato:
http://foro_c.forogratis.es/foro/juego-del-gato-tic-tac-toe-o-tres-en-raya-t321.html
igual y te sirve de base para comenzar.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar