SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: kirikin en Miércoles 26 de Enero de 2011, 20:45

Título: Conecta 4 c++
Publicado por: kirikin en Miércoles 26 de Enero de 2011, 20:45
Buenas, tengo que hacer un conecta 4 en c++ y estoy muy perdido.
Lo primero de todo, tiene que ser muy sencillo, sin librerías extras. <iostream> y fuera.

El problema, y lo que quiero es: necesito iniciar una matriz de 7x7 o más (hasta 10x10) y mostrarla por pantalla "vacía", podría ser una solución que en cada casilla hubiese guiones, por ejemplo. Luego alternar dos jugadores humanos que tienes que indicar en que columna quieren meter la ficha, y mostrar el tablero en cada jugada con una X para las fichas del jugador uno y una O para el 2. Y hacer otra función que revise si hay 4 en línea. Si alguien me podría ayudar, estaría muy agradecido.

Gracias, y un saludo.

(wxDevc++)
Título: Re: Conecta 4 c++
Publicado por: •Parra en Miércoles 26 de Enero de 2011, 21:26
Primero de todo, has pensado hacerlo multiplataforma? O no te importa?
Segundo, preferirías hacerlo en opengl, o en su caso, sdl (si te parece más facil), o vas a usar algo como QT, o alguna otra libreria (alguna que te proporcione controles gráficos)?
Tercero, vas a hacerlo online, es decir, cliente y cliente se conectan entre si?, O vas a hacer que el duelo sea contra la máquina, o offline, tu contra un compañero?

Cuando tengas esto claro, entonces podemos seguir :P
Título: Re: Conecta 4 c++
Publicado por: kirikin en Miércoles 26 de Enero de 2011, 21:35
Buff, lo único que quiero es jugador contra jugador offline.

Sin gráficos, quiere una matriz mostrarla por pantalla con guiones por cada casilla, y cada jugador indica la columna que quiere poner su ficha y que se vuelva e mostrar la matriz con una X en el lugar escogido. Y otra funcion que indique cuando se hace cuatro en linea.

Gracias.
Título: Re: Conecta 4 c++
Publicado por: •Parra en Miércoles 26 de Enero de 2011, 22:09
Ok, has buscado lo más sencillo entonces..

Si estás programando en C++, quizás sea un poco más complicado que hacerlo en C, en C, para los principiantes suele ser facil.

Bueno, primero de todo has de plantearte esto, como puedo hacer un 4 en ralla?

1) Verticalmente
2) Horizontalmente
3) En diagonal, de izquierda a derecha, y de derecha a izquierda.

Ahora, hay que ingeniarse un alogaritmo que chequee, cuando tengo una ficha mia, si tengo una ficha en algun cuadrado a todo alrededor mio (arriba, abajo, derecha, izquierda y diagonales), y si ento uno, que chequee recursivamente en esa dirección, y luego, en la opuesta. Si la suma total de fichas encontradas mias es > 4, entonces ya tenemos 4 en ralla.

Luego, a la hora de jugar vas a tener que hacer que va a pasar cuando el usuario ponga la columna que desea meter la ficha.

Lo mejor que puedes hacer, es hacer un programita sencillito, para crear el primer alogaritmo, y luego lo de despues esta chupado, usa printf, si vas a hacerlo todo por consola, y listo (;

PD: Para ayudarte, puedes hacer algo muy simple, si estás en C++, crea una clase que se llame "Slot", y entonces le pones una variable que sea Tipo, y que pueda variar entre estos tres tipos:

0 = vacío
1 = ficha jugador A
2 = ficha jugador B
Título: Re: Conecta 4 c++
Publicado por: m0skit0 en Jueves 27 de Enero de 2011, 12:15
Cita de: "•Parra"
Si estás programando en C++, quizás sea un poco más complicado que hacerlo en C, en C, para los principiantes suele ser facil.
Bueno, es cuestión de entender mínimamente la POO. En cuanto se entiende, es más fácil, más estructurado y más limpio en C++.
Título: Re: Conecta 4 c++
Publicado por: •Parra en Jueves 27 de Enero de 2011, 12:53
Cita de: "m0skit0"
Cita de: "•Parra"
Si estás programando en C++, quizás sea un poco más complicado que hacerlo en C, en C, para los principiantes suele ser facil.
Bueno, es cuestión de entender mínimamente la POO. En cuanto se entiende, es más fácil, más estructurado y más limpio en C++.
Eso si, pero al que le han empezado enseñado a programar en estructurado, cambiar el chip y pensar en objetos, no es facil.
Título: Re: Conecta 4 c++
Publicado por: m0skit0 en Jueves 27 de Enero de 2011, 13:14
Cita de: "m0skit0"
En cuanto se entiende
Título: Re: Conecta 4 c++
Publicado por: Amilius en Jueves 27 de Enero de 2011, 14:51
Si programas en C++ no es obligatorio usar clases. Además existe la posibilidad de evitar complicaciones innecesarias y código menos legible al poder pasar parámetros por referencia/alias. Además que usar el par new/delete tiene la ventaja de hacer el código más breve: no es necesario un casting extra para new, y delete puede ser llamado sin necesidad de verificar el puntero. Si el puntero es 0 delete no realiza ninguna operación. (En todo caso siempre es necesario inicializar los punteros a 0. También es necesario poner a 0 los punteros ya liberados si existe riesgo que puedan ser nuevamente liberados.).

Otras ventajas que no implican directamente POO:
- No tienes que definir todas tus variables al inicio de tus funciones.
- Puedes usar templates en lugar de macros de preprocesador para operar con tipos genéricos.
- Sobrecarga de operadores y funciones.

Respecto a que es "difícil cambiar el chip" para pasar de estructurado a objetos es más un problema de enseñanza. Se debe usar objetos sólo cuando conviene usar objetos. No estoy para nada de acuerdo con los puristas que quieren meter objetos a todo lo que ven, son iguales a los que quieren meter patrones de diseño hasta para un "hello world".

Creo que la forma correcta de pasar de estructurado a objeto es mostrar un ejemplo más complejo, donde sea evidente las ventajas de pasar de estructurado a objetos. Es cuestión de convencer al alumno que POO les puede simplificar el trabajo en lugar de complicarlo. Luego para explicar a detalle recién se debería utilizar los ejemplos sencillos para cada aspecto de POO.
Título: Re: Conecta 4 c++
Publicado por: m0skit0 en Jueves 27 de Enero de 2011, 15:34
Buf, realmente no quiero convertir esto en un hilo de discusión C vs C++... Cada lenguaje tiene su propósito y su utilidad (yo siempre he sido más de C).

Cita de: "Amilius"
Si programas en C++ no es obligatorio usar clases.
Eso no es C++.
Título: Re: Conecta 4 c++
Publicado por: Amilius en Jueves 27 de Enero de 2011, 19:22
Cita de: "m0skit0"
Eso no es C++.

Claro que si es. ¿O crees que es condición suficiente no usar clases para utilizar un compilador de C? Basta que uses al menos una característica introducida en C++ y ya no podrás usar un compilador que sólo soporte C. Por lo tanto es evidente que es código C++ aunque no utilices clases.

En todo caso lo correcto es decir "Eso no es POO", que es muy distinto. Y por cierto si tienes conocimientos de la implementación de los mecanismos de POO es posible programar orientado a objectos usando sólo C.
Título: Re: Conecta 4 c++
Publicado por: m0skit0 en Viernes 28 de Enero de 2011, 10:21
C++ es POO. No POO es no C++. Disculpa pero no voy a ponerme a discutir obviedades.
Título: Re: Conecta 4 c++
Publicado por: Amilius en Viernes 28 de Enero de 2011, 23:45
Lo correcto es decir C++ soporta POO.