PageRenderTime 41ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/SegundoProyecto/SegundoProyecto/Voraz.cs

https://gitlab.com/Crisly/rompecabezasTetris
C# | 301 lines | 244 code | 51 blank | 6 comment | 83 complexity | 30e261f9bd167ce4ae86a0718b115f2f MD5 | raw file
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace SegundoProyecto
  8. {
  9. class Voraz
  10. {
  11. public static int comprobacionesVoraz = 0;
  12. public static Random randomGenerator = new Random();
  13. public static ArrayList piezas = new ArrayList();
  14. static int piezaResultadoGeneradorP = 0;
  15. public static int Asignaciones =0;
  16. public static int lineasEvaluadasVoraz = 0;
  17. /*metodo encargado de ingresar las piezas al arraylist Piezas, en total ingresara 13*/
  18. public static void cargarArregloPiezas()
  19. {
  20. piezas.Clear();
  21. lineasEvaluadasVoraz += 1;
  22. for (int ingresarNumeros=0 ; ingresarNumeros < Program.piezasArchivo.Count; ingresarNumeros++)
  23. {
  24. lineasEvaluadasVoraz += 2;
  25. piezas.Add(ingresarNumeros);
  26. }
  27. }
  28. /*Metodo encargado de generar piezas desde 1 a 13*/
  29. public static int generadorPieza()
  30. {
  31. int p = randomGenerator.Next(0, piezas.Count);
  32. lineasEvaluadasVoraz += 2;
  33. return (int)piezas[p];
  34. }
  35. /*Metodo encargado de verificar la disponibilidad de la pieza, en caso que sea disponible su campo retorna la pieza, y en caso de que
  36. * no lo sea intenta colocarla en otra posiciĆ³n en la matriz y que este disponible**/
  37. public static int ObtenerPieza(int i, int j)
  38. {
  39. lineasEvaluadasVoraz = 1;
  40. bool disponibilidadCampo;
  41. while(true)
  42. {
  43. if(piezas.Count == 0){
  44. lineasEvaluadasVoraz += 2;
  45. break;
  46. }
  47. piezaResultadoGeneradorP = generadorPieza();
  48. disponibilidadCampo = false;
  49. lineasEvaluadasVoraz += 2;
  50. if (piezaResultadoGeneradorP == 1)
  51. {
  52. comprobacionesVoraz++;
  53. disponibilidadCampo = ComprobacionFigura.comprobarCuadrado(i, j);
  54. lineasEvaluadasVoraz += 3;
  55. }
  56. else if (piezaResultadoGeneradorP == 2)
  57. {
  58. comprobacionesVoraz++;
  59. disponibilidadCampo = ComprobacionFigura.comprobarRectanguloV(i, j);
  60. lineasEvaluadasVoraz += 3;
  61. }
  62. else if (piezaResultadoGeneradorP == 3)
  63. {
  64. comprobacionesVoraz++;
  65. disponibilidadCampo = ComprobacionFigura.comprobarfiguraVerde(i, j);
  66. lineasEvaluadasVoraz += 3;
  67. }
  68. else if (piezaResultadoGeneradorP == 4)
  69. {
  70. comprobacionesVoraz++;
  71. disponibilidadCampo = ComprobacionFigura.comprobarRectanguloH(i, j);
  72. lineasEvaluadasVoraz += 3;
  73. }
  74. else if (piezaResultadoGeneradorP == 5)
  75. {
  76. comprobacionesVoraz++;
  77. disponibilidadCampo = ComprobacionFigura.comprobarLderecha(i, j);
  78. lineasEvaluadasVoraz += 3;
  79. }
  80. else if (piezaResultadoGeneradorP == 6)
  81. {
  82. comprobacionesVoraz++;
  83. disponibilidadCampo = ComprobacionFigura.comprobarTAbajo(i, j);
  84. lineasEvaluadasVoraz += 3;
  85. }
  86. else if (piezaResultadoGeneradorP == 7)
  87. {
  88. comprobacionesVoraz++;
  89. disponibilidadCampo = ComprobacionFigura.comprobarLAbajo(i, j);
  90. lineasEvaluadasVoraz += 3;
  91. }
  92. else if (piezaResultadoGeneradorP == 8)
  93. {
  94. comprobacionesVoraz++;
  95. disponibilidadCampo = ComprobacionFigura.comprobarLIzquierda(i, j);
  96. lineasEvaluadasVoraz += 3;
  97. }
  98. else if (piezaResultadoGeneradorP == 9)
  99. {
  100. comprobacionesVoraz++;
  101. disponibilidadCampo = ComprobacionFigura.comprobarLArriba(i, j);
  102. lineasEvaluadasVoraz+= 3;
  103. }
  104. else if (piezaResultadoGeneradorP == 10)
  105. {
  106. comprobacionesVoraz++;
  107. disponibilidadCampo = ComprobacionFigura.comprobarTArriba(i, j);
  108. lineasEvaluadasVoraz += 3;
  109. }
  110. else if (piezaResultadoGeneradorP == 11)
  111. {
  112. comprobacionesVoraz++;
  113. disponibilidadCampo = ComprobacionFigura.comprobarTDerecha(i, j);
  114. lineasEvaluadasVoraz += 3;
  115. }
  116. else if (piezaResultadoGeneradorP == 12)
  117. {
  118. comprobacionesVoraz++;
  119. disponibilidadCampo = ComprobacionFigura.comprobarTIzquierda(i, j);
  120. lineasEvaluadasVoraz += 3;
  121. }
  122. else if (piezaResultadoGeneradorP == 13)
  123. {
  124. comprobacionesVoraz++;
  125. disponibilidadCampo = ComprobacionFigura.comprobarfiguraVerdeZ(i, j);
  126. lineasEvaluadasVoraz += 3;
  127. }
  128. if (disponibilidadCampo == false)
  129. {
  130. piezas.Remove(piezaResultadoGeneradorP);
  131. lineasEvaluadasVoraz += 3;
  132. }
  133. else
  134. {
  135. lineasEvaluadasVoraz += 1;
  136. return piezaResultadoGeneradorP;
  137. }
  138. }
  139. return -1;
  140. }
  141. /*Colocar Pieza solicita una pieza y verifica su disponibilidad el resultado de ese proceso lo aprovecha y coloca la pieza donde corresponda
  142. una vez evaluada su disponibilida de campo y estado de la pieza*/
  143. public static void colocarPieza()
  144. {
  145. lineasEvaluadasVoraz += 6; // variables globales
  146. int length = Program.matriz.GetLength(0);
  147. for (int i = length - 1; i >= 0; i--)
  148. {
  149. lineasEvaluadasVoraz+=2;
  150. for (int j = 0; j < length; j++)
  151. {
  152. cargarArregloPiezas();
  153. int figura = ObtenerPieza(i, j);
  154. lineasEvaluadasVoraz+= 2;
  155. if (figura == 1)
  156. {
  157. Program.cantidadFigurasGeneradas++;
  158. Program.cuadrado(i, j);
  159. Asignaciones++;
  160. lineasEvaluadasVoraz += 4;
  161. }
  162. else if (figura == 2)
  163. {
  164. Program.cantidadFigurasGeneradas++;
  165. Program.rectanguloVertical(i, j);
  166. Asignaciones++;
  167. lineasEvaluadasVoraz += 4;
  168. }
  169. else if (figura == 3)
  170. {
  171. Program.cantidadFigurasGeneradas++;
  172. Program.figuraVerdePosc1(i, j);
  173. Asignaciones++;
  174. lineasEvaluadasVoraz += 4;
  175. }
  176. else if (figura == 4)
  177. {
  178. Program.cantidadFigurasGeneradas++;
  179. Program.rectanguloHorizontal(i, j);
  180. Asignaciones++;
  181. lineasEvaluadasVoraz += 4;
  182. }
  183. else if (figura == 5)
  184. {
  185. Program.cantidadFigurasGeneradas++;
  186. Program.lDerecha(i, j);
  187. Asignaciones++;
  188. lineasEvaluadasVoraz += 4;
  189. }
  190. else if (figura == 6)
  191. {
  192. Program.cantidadFigurasGeneradas++;
  193. Program.tAbajo(i, j);
  194. Asignaciones++;
  195. lineasEvaluadasVoraz += 4;
  196. }
  197. else if (figura == 7)
  198. {
  199. Program.cantidadFigurasGeneradas++;
  200. Program.lAbajo(i, j);
  201. Asignaciones++;
  202. lineasEvaluadasVoraz += 4;
  203. }
  204. else if (figura == 8)
  205. {
  206. Program.cantidadFigurasGeneradas++;
  207. Program.lizquierda(i, j);
  208. Asignaciones++;
  209. lineasEvaluadasVoraz += 4;
  210. }
  211. else if (figura == 9)
  212. {
  213. Program.cantidadFigurasGeneradas++;
  214. Program.lArriba(i, j);
  215. Asignaciones++;
  216. lineasEvaluadasVoraz += 4;
  217. }
  218. else if (figura == 10)
  219. {
  220. Program.cantidadFigurasGeneradas++;
  221. Program.tArriba(i, j);
  222. Asignaciones++;
  223. lineasEvaluadasVoraz += 4;
  224. }
  225. else if (figura == 11)
  226. {
  227. Program.cantidadFigurasGeneradas++;
  228. Program.tDerecha(i, j);
  229. Asignaciones++;
  230. lineasEvaluadasVoraz += 4;
  231. }
  232. else if (figura == 12)
  233. {
  234. Program.cantidadFigurasGeneradas++;
  235. Program.tIzquierda(i, j);
  236. Asignaciones++;
  237. lineasEvaluadasVoraz += 4;
  238. }
  239. else if (figura == 13)
  240. {
  241. Program.cantidadFigurasGeneradas++;
  242. Program.figuraVerdeZ(i, j);
  243. Asignaciones++;
  244. lineasEvaluadasVoraz += 4;
  245. }
  246. }
  247. }
  248. }
  249. }
  250. }