- Se debe realizar un programa que simule el juego de Conecta 4 para poder jugar entre dos personas.
-
El jugador correspondiente ingresa un número del 1 al 10 para que la ficha caiga en esa “casilla”.
- Para que el usuario pueda ingresar un valor del 1 al 10, siendo que estamos trabajando con una matriz 10x10, donde los valores admitidos son del 0 al 9, basta con restar 1 a la posición que se ingrese.
-
Que no meta una columna invalida.
-
Para esto, cree una función llamada “validar”, la cual, no solo puede usarse en este programa, igual puede implementarse en otros, donde se necesite validar un dato dentro de cierto rango.
int validar (int dato, int minimo, int maximo) { if (dato < minimo || dato > maximo) { puts("\nValor no valido\n"); dato = 0; } else { dato = 1; } return dato; }
-
Donde:
dato
a evaluar,minimo
valor mínimo,maximo
valor máximo. -
Si el dato esta fuera del rango mandará un mensaje en pantalla y regresa un resultado. En el proyecto, esté último, se usó en conjunto con otra variable y el ciclo “while”.
-
-
Opciones durante la partida
-
Preferí hacerlo un poco más minimalista y quitar las opciones en pantalla, mostrando solo el ingreso de la columna donde caerá la ficha. Ya que las funciones de guardado de la partida y carga de una partida guardada, aún no han sido implementadas (aun no entiendo bien los temas, asique no quise complicarme más, pero tengo pensado implementarlas en un futuro).
-
De igual manera, para tener en cuenta las acciones faltantes, se sustituyeron con algunas funciones:
- Para guardar la partida, bastará con ingresar como
columna
el código3312
, y para terminar la partida, el código911
.
- Para guardar la partida, bastará con ingresar como
-
9 | | | | | | | | | | |
8 | | | | | | | | | | |
7 | | | | | | | | | | |
6 | | | | | | | | | | |
5 | | | | | | | | | | |
4 | | | | | | | | | | |
3 | | | | | | | | | | |
2 | | | | | | | | | | |
1 | | | | | | | | | | |
0 | | | | | | | | | | |
0 1 2 3 4 5 6 7 8 9
Esta debe de ser impresa comenzando por la última fila, para ello se usan dos ciclos “for”, en el cual, el primero (correspondiente a las filas) se configura de la siguiente manera:
for (int i = fil-1; i >= 0 ; i--) 5
El segundo “for” (correspondiente a las columnas) se plasma “normal”:
for (int j = 0; j < col ; j++)
Al termino del segundo for
, colocamos un puts(“ ”);
para ir generando la tabla.
Teniendo en cuenta que tenemos un eje horizontal x
, un eje vertical y
y un punto cero
, ubicamos la columna deseada, y validamos, que la coordenada cero
, no tenga ficha
, caso contrario subimos una línea, y repetimos el proceso.
Algo como la siguiente tabla:
col(x), fil(y) |
---|
x , y+9 |
x , y+8 |
x , y+7 |
x , y+6 |
x , y+5 |
x , y+4 |
x , y+3 |
x , y+2 |
x , y+1 |
x , y |
- Cabe mencionar, que en el programa se tomó en cuenta, cuando ya no quedan espacios libres en la columna, por lo cual, al presentarse dicho evento, se alerta al jugador con un mensaje en pantalla.
Para que el juego cumpla su cometido, debemos tener en cuenta sus posibles formas de ganar.
-
Izquierda
x-3 , y x-2 , y x-1 , y x , y -
Derecha
x , y x+1 , y x+2 , y x+3 , y -
Abajo
x , y x , y-1 x , y-2 x , y-3 -
Arriba
x , y-3 x , y-2 x , y-1 x , y -
De igual manera, las diagonales.
- Ascendente Izquierda
x-3 , y+3 x-2 , y+2 x-1 , y+1 x , y - Ascendente Derecha
x+3 , y+3 x+2 , y+2 x+1 , y+1 x , y - Descendente Izquierda
x , y x-1 , y-1 x-2 , y-2 x-3 , y-3 - Descendente Derecha
x , y x+1 , y-1 x+2 , y-2 x+3 , y-3
Para más información, no dudes en explorar el código fuente.