Advertisement
josemf

Untitled

May 22nd, 2016
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.58 KB | None | 0 0
  1. package jsopaletras_v02;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.util.Vector;
  6. import javax.swing.JLabel;
  7.  
  8. /**
  9. * @author Edmond Duke
  10. * email: edu1738@gmail.com
  11. */
  12.  
  13. public class Sopaletras2 {
  14. //private char[][] letras;
  15. private int filas, columnas;
  16. private JLabel[][] jletra;
  17. private int[][] lockedPos;
  18. private String caracteres;
  19. private Vector<PalabrasIntro> palabras;
  20.  
  21. public Sopaletras2(int xfilas, int xcolumnas, String xcaracteres){
  22. filas = xfilas;
  23. columnas = xcolumnas;
  24. jletra = new JLabel[filas][columnas];
  25. lockedPos = new int[filas][columnas];
  26. palabras = new Vector();
  27. caracteres = xcaracteres;
  28. int xAscii,i,j;
  29. for(i = 0; i < filas; i++){
  30. for(j = 0; j < columnas; j++){
  31. xAscii = (int)(Math.random()* caracteres.length());
  32. jletra[i][j] = new JLabel(caracteres.substring(xAscii,xAscii+1), javax.swing.SwingConstants.CENTER);
  33. jletra[i][j].setFont(new Font("Arial",Font.PLAIN,18));
  34. jletra[i][j].setName(i + "e" + j);
  35. jletra[i][j].setOpaque(true);
  36. }
  37. }
  38. }
  39. public void New(){
  40. int xAscii,i,j;
  41. lockedPos = new int[filas][columnas];
  42. palabras = new Vector();
  43. for(i = 0; i < filas; i++){
  44. for(j = 0; j < columnas; j++){
  45. xAscii = (int)(Math.random()* caracteres.length());
  46. jletra[i][j].setText(caracteres.substring(xAscii,xAscii+1));
  47. }
  48. }
  49. }
  50. public JLabel[][] getJLabel(){
  51. return jletra;
  52. }
  53. public boolean lockedPosition(int x, int y){ // Verdadero si la posicion es ocupada por una
  54. if(lockedPos[x][y] == 1) // letra de una palabra agregada
  55. return true;
  56. else
  57. return false;
  58. }
  59. public int getTotalFilas(){
  60. return filas;
  61. }
  62. public int getTotalColumnas(){
  63. return columnas;
  64. }
  65. public String getCaracteresPermitidos(){
  66. return caracteres;
  67. }
  68. public char getChar(int xfila, int xcolumna){
  69. return jletra[xfila][xcolumna].getText().charAt(0);
  70. }
  71. public int getTotalPalabras(){
  72. return palabras.size();
  73. }
  74. public void PintaPosicion(int x,int y, Color xcolor){
  75. jletra[x][y].setBackground(xcolor);
  76. }
  77. public void PintaPalabra(int pos, Color xcolor){
  78. if(pos < getTotalPalabras()){
  79. PalabrasIntro pa = getPalabra(pos);
  80. int j;
  81. for(j = 0; j < pa.getSizePalabra(); j++)
  82. jletra[pa.getPosX(j)][pa.getPosY(j)].setBackground(xcolor);
  83. }
  84. }
  85. public void PintaAllPalabra(Color xcolor){
  86. if(getTotalPalabras()>0){
  87. PalabrasIntro pa;
  88. int i,j;
  89. for(i = 0; i < getTotalPalabras(); i++){
  90. pa = getPalabra(i);
  91. for(j = 0; j < pa.getSizePalabra(); j++)
  92. jletra[pa.getPosX(j)][pa.getPosY(j)].setBackground(xcolor);
  93. }
  94. }
  95. }
  96. public void RemovePalabra(int pos){
  97. PalabrasIntro pa = palabras.get(pos);
  98. int i,xAscii,x,y;
  99. for(i = 0; i < pa.getSizePalabra(); i++){
  100. xAscii = (int)(Math.random()* caracteres.length());
  101. x = pa.getPosX(i);
  102. y = pa.getPosY(i);
  103. lockedPos[x][y]--;
  104. if(lockedPos[x][y] < 1)
  105. jletra[x][y].setText(caracteres.substring(xAscii, xAscii+1));
  106. }
  107. palabras.remove(pos);
  108. }
  109. public Vector getVectorPalabas(){
  110. return palabras;
  111. }
  112. public PalabrasIntro getPalabra(int pos){
  113. return palabras.get(pos);
  114. }
  115. public void setPalabra(String palabra, int xfila, int xcolumna, int forma){
  116. //forma = 1 ; izquierda, 2 derecha, 3 arriba, 4 abajo
  117. // 5 Arriba izquierda
  118. // 6 Arriba derecha
  119. // 7 Abajo izquierda
  120. // 8 Abajo derecha
  121. //char[] charPalabra = palabra.toCharArray();
  122. int tamano = palabra.length();
  123. int j;
  124. PalabrasIntro pa = new PalabrasIntro(palabra);
  125. switch(forma){
  126. case 1:
  127. for(j = 0; j < tamano; j++){
  128. jletra[xfila][xcolumna].setText(palabra.substring(j,j+1));
  129. pa.addPosicion(xfila,xcolumna);
  130. lockedPos[xfila][xcolumna]++;
  131. xcolumna--;
  132. }
  133. break;
  134. case 2:
  135. for(j = 0; j < tamano; j++){
  136. jletra[xfila][xcolumna].setText(palabra.substring(j,j+1));
  137. pa.addPosicion(xfila,xcolumna);
  138. lockedPos[xfila][xcolumna]++;
  139. xcolumna++;
  140. }
  141. break;
  142. case 3:
  143. for(j = 0; j < tamano; j++){
  144. jletra[xfila][xcolumna].setText(palabra.substring(j,j+1));
  145. pa.addPosicion(xfila,xcolumna);
  146. lockedPos[xfila][xcolumna]++;
  147. xfila--;
  148. }
  149. break;
  150. case 4:
  151. for(j = 0; j < tamano; j++){
  152. jletra[xfila][xcolumna].setText(palabra.substring(j,j+1));
  153. pa.addPosicion(xfila,xcolumna);
  154. lockedPos[xfila][xcolumna]++;
  155. xfila++;
  156. }
  157. break;
  158. case 5:
  159. for(j = 0; j < tamano; j++){
  160. jletra[xfila][xcolumna].setText(palabra.substring(j,j+1));
  161. pa.addPosicion(xfila,xcolumna);
  162. lockedPos[xfila][xcolumna]++;
  163. xfila--;
  164. xcolumna--;
  165. }
  166. break;
  167. case 6:
  168. for(j = 0; j < tamano; j++){
  169. jletra[xfila][xcolumna].setText(palabra.substring(j,j+1));
  170. pa.addPosicion(xfila,xcolumna);
  171. lockedPos[xfila][xcolumna]++;
  172. xfila--;
  173. xcolumna++;
  174. }
  175. break;
  176. case 7:
  177. for(j = 0; j < tamano; j++){
  178. jletra[xfila][xcolumna].setText(palabra.substring(j,j+1));
  179. pa.addPosicion(xfila,xcolumna);
  180. lockedPos[xfila][xcolumna]++;
  181. xfila++;
  182. xcolumna--;
  183. }
  184. break;
  185. case 8:
  186. for(j = 0; j < tamano; j++){
  187. jletra[xfila][xcolumna].setText(palabra.substring(j,j+1));
  188. pa.addPosicion(xfila,xcolumna);
  189. lockedPos[xfila][xcolumna]++;
  190. xfila++;
  191. xcolumna++;
  192. }
  193. break;
  194. }
  195. palabras.add(pa);
  196. }
  197. public int Verify(String palabra, int xfila, int xcolumna, int forma){
  198. int i = 1;
  199. int j,err;
  200. err = 0;
  201. /* si i = 0; ningun error
  202. * si i = 1; palabra no entra
  203. * si i = 2; palabra se cruza con otra */
  204. int tamano = palabra.length();
  205. char[] charPalabra = palabra.toCharArray();
  206. switch(forma){
  207. case 1: //Izquierda
  208. if(tamano <= xcolumna+1)
  209. i = 0;
  210. if(i == 0){ //Comprueba sino sobrepone otra palabra
  211. for(j = 0; j < tamano && err == 0; j++){
  212. if(lockedPos[xfila][xcolumna] > 0){
  213. if(getChar(xfila, xcolumna) != charPalabra[j])
  214. err++;
  215. }
  216. xcolumna--;
  217. }
  218. }
  219. break;
  220. case 2: //Derecha
  221. if(tamano <= columnas - xcolumna)
  222. i = 0;
  223. if(i == 0){
  224. for(j = 0; j < tamano && err == 0; j++){
  225. if(lockedPos[xfila][xcolumna] > 0){
  226. if(getChar(xfila, xcolumna) != charPalabra[j])
  227. err++;
  228. }
  229. xcolumna++;
  230. }
  231. }
  232. break;
  233. case 3: //Arriba
  234. if(tamano <= xfila+1)
  235. i = 0;
  236. if(i == 0){
  237. for(j = 0; j < tamano && err == 0; j++){
  238. if(lockedPos[xfila][xcolumna] > 0){
  239. if(getChar(xfila, xcolumna) != charPalabra[j])
  240. err++;
  241. }
  242. xfila--;
  243. }
  244. }
  245. break;
  246. case 4: //Abajo
  247. if(tamano <= filas - xfila)
  248. i = 0;
  249. if(i == 0){
  250. for(j = 0; j < tamano && err == 0; j++){
  251. if(lockedPos[xfila][xcolumna] > 0){
  252. if(getChar(xfila, xcolumna) != charPalabra[j])
  253. err++;
  254. }
  255. xfila++;
  256. }
  257. }
  258. break;
  259. case 5: //Arriba Izquierda
  260. if(tamano <= xcolumna + 1 && tamano <= xfila +1)
  261. i = 0;
  262. if(i == 0){
  263. for(j = 0; j < tamano && err == 0; j++){
  264. if(lockedPos[xfila][xcolumna] > 0){
  265. if(getChar(xfila, xcolumna) != charPalabra[j])
  266. err++;
  267. }
  268. xfila--;
  269. xcolumna--;
  270. }
  271. }
  272. break;
  273. case 6: //Arriba Derecha
  274. if(tamano <= xfila+1 && tamano <= columnas - xcolumna)
  275. i = 0;
  276. if(i == 0){
  277. for(j = 0; j < tamano && err == 0; j++){
  278. if(lockedPos[xfila][xcolumna] > 0){
  279. if(getChar(xfila, xcolumna) != charPalabra[j])
  280. err++;
  281. }
  282. xfila--;
  283. xcolumna++;
  284. }
  285. }
  286. break;
  287. case 7: //Abajo izquierda
  288. if(tamano <= filas - xfila && tamano <= xcolumna+1)
  289. i = 0;
  290. if(i == 0){
  291. for(j = 0; j < tamano && err == 0; j++){
  292. if(lockedPos[xfila][xcolumna] > 0){
  293. if(getChar(xfila, xcolumna) != charPalabra[j])
  294. err++;
  295. }
  296. xfila++;
  297. xcolumna--;
  298. }
  299. }
  300. break;
  301. case 8: //Abajo derecha
  302. if(tamano <= filas - xfila && tamano <= columnas - xcolumna)
  303. i = 0;
  304. if(i == 0){
  305. for(j = 0; j < tamano && err == 0; j++){
  306. if(lockedPos[xfila][xcolumna] > 0){
  307. if(getChar(xfila, xcolumna) != charPalabra[j])
  308. err++;
  309. }
  310. xfila++;
  311. xcolumna++;
  312. }
  313. }
  314. break;
  315. }
  316. if(err != 0)
  317. i = 2;
  318. return i;
  319. }
  320. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement