Advertisement
josemf

Untitled

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