Advertisement
Guest User

Untitled

a guest
Apr 20th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. int comprobacionEspacioParaBarco(int *t, int f, int c, int iniFila, int iniCol, int tamBarco, int orientacion){
  2. //Función comprobacionEspacioParaBarco
  3. //INPUTS:
  4. // - tablero de barcos
  5. // - filas
  6. // - columnas
  7. // - posición (fila)
  8. // - posición (columna)
  9. // - tamaño del barco (1, 2 ó 3)
  10. // - orientación (0 horizontal, 1 vertical)
  11. //OUTPUTS: 1 si cabe, 0 si no cabe
  12. //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í.
  13.  
  14. int comprobacion=0;
  15. //Comprueba en funcion de la orientacion si hay espacio para el barco
  16. //Orientacion horizontal
  17. if (orientacion == 0)
  18. {
  19. //Segun el tamaño del barco comprueba si cabe
  20. switch(tamBarco){
  21. //Los de tamaño 1 siempre caben por que no se salen del tablero
  22. case 1:
  23. comprobacion = 1;
  24. break;
  25. //Los de tamaño 2 comprueban si el hueco de la derecha tambien es 0
  26. case 2:
  27.  
  28. if (iniFila>=1 && iniFila<=f && iniCol>=1 && iniCol<c-1 && (*(t+iniFila*c+(iniCol+1))==0))
  29. {
  30. comprobacion = 1;
  31. }
  32.  
  33. break;
  34. //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
  35. case 3:
  36. if (iniFila>=1 && iniFila<=f && iniCol>=1 && iniCol<c-2 && (*(t+iniFila*c+(iniCol+1))==0) && (*(t+iniFila*c+(iniCol+2))==0))
  37. {
  38. comprobacion = 1;
  39. }
  40.  
  41. break;
  42. }
  43. }
  44. //Orientacion vertical
  45. else if (orientacion == 1)
  46. {
  47. //Segun el tamaño del barco comprueba si cabe
  48. switch(tamBarco){
  49. //Los de tamaño 1 siempre caben por que no se salen del tablero
  50. case 1:
  51. comprobacion = 1;
  52. break;
  53. //Los de tamaño 2 comprueban si el hueco de la derecha tambien es 0
  54. case 2:
  55.  
  56. if (iniFila>=1 && iniFila<f-1 && iniCol>=1 && iniCol<=c && (*(t+(iniFila+1)*c+iniCol)==0))
  57. {
  58. comprobacion = 1;
  59. }
  60.  
  61. break;
  62.  
  63. //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
  64. case 3:
  65.  
  66. if (iniFila>=1 && iniFila<f-2 && iniCol>=1 && iniCol<=c && (*(t+(iniFila+1)*c+iniCol)==0) && (*(t+(iniFila+2)*c+iniCol)==0))
  67. {
  68. comprobacion = 1;
  69. }
  70.  
  71. break;
  72. }
  73. }
  74.  
  75. return comprobacion;
  76.  
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement