Autor
|
Tema: Duda sobre Cuatro en línea (Leído 6,154 veces)
|
DickGumshoe
|
No sé por qué, pero me da el error " too few arguments to function `int finPartida(int (*)[8])' " Haciendo esto: #include<stdio.h> #include<stdlib.h> int finPartida(int m[8][8]) { int i, j; for(i = 8-1; i >= 3; i--) for(j = 8-1; j >= 3; j--) if((m[i][j] == m[i-1][j] && m[i][j] == m[i-2][j] && m[i][j] == m[i-3][j] && m[i][j] != 0) || (m[i][j] == m[i][j-1] && m[i][j] == m[i][j-2] && m[i][j] == m[i][j-3] && m[i][j] != 0) || (m[i][j] == m[i-1][j-1] && m[i][j] == m[i-2][j-2] && m[i][j] == m[i-3][j-3] && m[i][j] != 0)) return 1; for(i = 8-1; i >= 3; i--) for(j = 0; j <= 8-3; j++) if(m[i][j] == m[i-1][j+1] && m[i][j] == m[i-2][j+2] && m[i][j] == m[i-3][j+3] && m[i][j] != 0) return 1; return 0; } int main (void) { int M[8][8]; int i, j, col, jugador, s, fila[8]; for(i=0; i<8; i++){ for(j=0; j<8; j++){ M[i][j] = 0; } fila[i] = 7; } jugador = 1; do{ for(i=0; i<8; i++){ for(j=0; j<8; j++){ } } printf("Introduce la columna (1-8): "); col = col-1; M[fila[col]][col] = jugador; fila[col]--; // do{ printf("Introduzca un 0 si abandona o un 1 si quiere seguir jugando: "); jugador = 3-jugador; } while((s<0)||(s>1)); } while(s==1); finPartida(); return 0; }
El código en sí lo he entendido. Gracias.
|
|
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola El error que te está dando está en la llamada a la función, tú tienes finPartida(); pero debes pasarle la matriz finPartida(M); Te pongo mi programa y así lo comparas, y si tienes alguna duda pregunta. #include <stdio.h> #define FILAS 8 #define COLUMNAS 8 void mostrarTablero(int m[FILAS][COLUMNAS]); int finPartida(int m[FILAS][COLUMNAS]); int main(void) { int m[FILAS][COLUMNAS]; int i, j, col, jugador, s = 0; int fila[COLUMNAS]; for(i = 0; i < 8; i++) { for(j = 0; j < 8; j++) m[i][j] = 0; fila[i] = 7; } jugador = 1; do { mostrarTablero(m); printf("\nTurno del jugador %d\n", jugador ); do { printf("Introduce la columna (1-8): "); if(fila[col-1] < 0) { col = 0; printf("\nEsa columna esta llena\n\n"); } } while(col < 1 || col > 8); col = col-1; m[fila[col]][col] = jugador; fila[col]--; jugador = 3 - jugador; s = finPartida(m); } while(s == 0); mostrarTablero(m); printf("\n\nGANADOR EL JUGADOR %d\n\n", 3 - jugador ); printf("Pulsa Enter para salir..."); return 0; } void mostrarTablero(int m[FILAS][COLUMNAS]) { int i, j; for(i = 0; i < FILAS; i++) { for(j = 0; j < COLUMNAS; j++) } for(j = 0; j < COLUMNAS; j++) for(j = 0; j < COLUMNAS; j++) } int finPartida(int m[FILAS][COLUMNAS]) { int i, j; for(i = FILAS-1; i >= 3; i--) for(j = COLUMNAS-1; j >= 3; j--) if((m[i][j] == m[i-1][j] && m[i][j] == m[i-2][j] && m[i][j] == m[i-3][j] && m[i][j] != 0) || (m[i][j] == m[i][j-1] && m[i][j] == m[i][j-2] && m[i][j] == m[i][j-3] && m[i][j] != 0) || (m[i][j] == m[i-1][j-1] && m[i][j] == m[i-2][j-2] && m[i][j] == m[i-3][j-3] && m[i][j] != 0)) return 1; for(i = FILAS-1; i >= 3; i--) for(j = 0; j <= COLUMNAS-3; j++) if(m[i][j] == m[i-1][j+1] && m[i][j] == m[i-2][j+2] && m[i][j] == m[i-3][j+3] && m[i][j] != 0) return 1; return 0; }
Saludos
|
|
|
En línea
|
Breakbeat como forma de vida
|
|
|
DickGumshoe
|
Muchísimas gracias. Ya entiendo el programa entero.
Ahora voy a intentar hacer la opción de si hay 4 en vertical, que me parece que en su código no sale bien.
Saludos.
|
|
|
En línea
|
|
|
|
satu
Desconectado
Mensajes: 301
Siempre aprendiendo
|
Hola
Tienes razón, en las 3 primeras columnas no funciona el vertical, hice el código a ojo sin probarlo y esto es lo que pasa, pero es fácil de arreglar.
Bueno me alegro de que te haya quedado todo claro.
Saludos
Edito: también pasa lo mismo con las horizontales en las 3 filas de arriba
|
|
« Última modificación: 19 Enero 2012, 19:13 pm por satu »
|
En línea
|
Breakbeat como forma de vida
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda sobre Programa en .vbs que modifica una línea de archivo
Programación Visual Basic
|
Kiosera
|
0
|
1,587
|
27 Julio 2006, 18:13 pm
por Kiosera
|
|
|
juego de cuatro en linea en lenguaje C
Programación C/C++
|
gwennnnnn26
|
5
|
3,606
|
7 Diciembre 2016, 01:24 am
por jvm1994
|
|
|
[AYUDA[Error/Problema Cuatro en Línea
Programación C/C++
|
toomi.143
|
2
|
2,090
|
25 Marzo 2017, 07:31 am
por toomi.143
|
|
|
Duda sobre una linea en mi codigo que no funciona
Programación C/C++
|
miguevv
|
6
|
2,730
|
11 Agosto 2018, 03:31 am
por miguevv
|
|
|
Una duda sobre titularidad de la línea Orange y Movistar!
Dispositivos Móviles (PDA's, Smartphones, Tablets)
|
win_7
|
4
|
8,693
|
22 Mayo 2021, 13:29 pm
por Machacador
|
|