Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int comprobacionEspacioParaBarco(int *t, int f, int c, int iniFila, int iniCol, int tamBarco, int orientacion){
- //Función comprobacionEspacioParaBarco
- //INPUTS:
- // - tablero de barcos
- // - filas
- // - columnas
- // - posición (fila)
- // - posición (columna)
- // - tamaño del barco (1, 2 ó 3)
- // - orientación (0 horizontal, 1 vertical)
- //OUTPUTS: 1 si cabe, 0 si no cabe
- //Comprueba si cabe un barco a partir de la posición indicada en la orientación indicada. Devuelve 0 si no cabe, 1 si sí.
- int comprobacion=0;
- //Comprueba en funcion de la orientacion si hay espacio para el barco
- //Orientacion horizontal
- if (orientacion == 0)
- {
- //Segun el tamaño del barco comprueba si cabe
- switch(tamBarco){
- //Los de tamaño 1 siempre caben por que no se salen del tablero
- case 1:
- comprobacion = 1;
- break;
- //Los de tamaño 2 comprueban si el hueco de la derecha tambien es 0
- case 2:
- if (iniFila>=1 && iniFila<=f && iniCol>=1 && iniCol<c-1 && (*(t+iniFila*c+(iniCol+1))==0))
- {
- comprobacion = 1;
- }
- break;
- //Los de tamaño 3 comprueban si el espacio de su derecha es 0 y si el espacio dos huecos a su derecha es 0
- case 3:
- if (iniFila>=1 && iniFila<=f && iniCol>=1 && iniCol<c-2 && (*(t+iniFila*c+(iniCol+1))==0) && (*(t+iniFila*c+(iniCol+2))==0))
- {
- comprobacion = 1;
- }
- break;
- }
- }
- //Orientacion vertical
- else if (orientacion == 1)
- {
- //Segun el tamaño del barco comprueba si cabe
- switch(tamBarco){
- //Los de tamaño 1 siempre caben por que no se salen del tablero
- case 1:
- comprobacion = 1;
- break;
- //Los de tamaño 2 comprueban si el hueco de la derecha tambien es 0
- case 2:
- if (iniFila>=1 && iniFila<f-1 && iniCol>=1 && iniCol<=c && (*(t+(iniFila+1)*c+iniCol)==0))
- {
- comprobacion = 1;
- }
- break;
- //Los de tamaño 3 comprueban si el espacio de su derecha es 0 y si el espacio dos huecos a su derecha es 0
- case 3:
- if (iniFila>=1 && iniFila<f-2 && iniCol>=1 && iniCol<=c && (*(t+(iniFila+1)*c+iniCol)==0) && (*(t+(iniFila+2)*c+iniCol)==0))
- {
- comprobacion = 1;
- }
- break;
- }
- }
- return comprobacion;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement