Ver Mensaje Individual
  #12 (permalink)  
Antiguo 20/12/2009, 20:36
Conrado2009
 
Fecha de Ingreso: diciembre-2009
Mensajes: 8
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Resolución juego en PHP

Tengo el siguiente codigo en javascript y quisiera convertirlo a php se puede de alguna manera??

Código Javascript:
Ver original
  1. var pos=new Array(49);
  2. var jumps=new Array();
  3. var boardType="Solitaire";
  4. var numMoves=0;
  5. var finished=false;
  6. var selectnum=false;
  7. var autosolve=false;
  8. var running=false;
  9. var basenum=0;
  10. var destnum=0;
  11. var destnum1=0;
  12. var destnum2=0;
  13. var destnum3=0;
  14. var destnum4=0;
  15. var delaynum=500;
  16. if (document.images) {
  17. blank = new Image(19,19);
  18. blank.src = "blank.gif";
  19. empty = new Image(19,19);
  20. empty.src = "empty.gif";
  21. emptysel = new Image(19,19);
  22. emptysel.src = "emptysel.gif";
  23. peg = new Image(19,19);
  24. peg.src = "peg.gif";
  25. pegact = new Image(19,19);
  26. pegact.src = "pegact.gif";
  27. }
  28. function display(pos,basenum,destnum) {
  29. selectnum=false;
  30. if (!basenum && !destnum) {
  31. for (var i=0; i<pos.length; i++) {
  32. if (pos[i]==-1) document.images["img"+i].src=blank.src;
  33. else if (pos[i]==1) document.images["img"+i].src=peg.src;
  34. else document.images["img"+i].src=empty.src;
  35.  }
  36. }
  37. else {
  38. document.images["img"+basenum].src=empty.src;
  39. document.images["img"+(basenum+destnum/2)].src=empty.src;
  40. document.images["img"+(basenum+destnum)].src=peg.src;
  41. for (var i=0; i<pos.length; i++) {
  42. if (document.images["img"+i].src==emptysel.src)
  43. document.images["img"+i].src=empty.src;
  44.  }
  45. }
  46. if (numMoves>1) win();
  47. }
  48. function move(num) {
  49. var curNumMoves=numMoves;
  50. if (!document.images)
  51. alert("Your browser does not support the 'document.images' property.You\n" +
  52. "should upgrade to at least Netscape 3.0 or Internet explorer 4.0.");
  53. else if (autosolve && running) {}
  54. else if (autosolve && !finished) {
  55. if (confirm('You interrupted the \'Solve\' function. Want to try it yourself?'))
  56. newGame();
  57. }
  58. else if (selectnum) {
  59. if (num!=basenum && num!=basenum+destnum1 && num!=basenum+destnum2 &&
  60. num!=basenum+destnum3 && num!=basenum+destnum4)
  61. alert("Select a destination or click on the original peg again!");
  62. else if (num==basenum) {
  63. document.images["img"+basenum].src=peg.src;
  64. if (destnum1!=0)
  65. document.images["img"+(basenum+destnum1)].src=empty.src;
  66. if (destnum2!=0)
  67. document.images["img"+(basenum+destnum2)].src=empty.src;
  68. if (destnum3!=0)
  69. document.images["img"+(basenum+destnum3)].src=empty.src;
  70. if (destnum4!=0)
  71. document.images["img"+(basenum+destnum4)].src=empty.src;
  72. selectnum=false;
  73. }
  74. else if (num==basenum+destnum1) movePeg(basenum,destnum1)
  75. else if (num==basenum+destnum2) movePeg(basenum,destnum2)
  76. else if (num==basenum+destnum3) movePeg(basenum,destnum3)
  77. else if (num==basenum+destnum4) movePeg(basenum,destnum4)
  78. }
  79. else if (pos[num]==0) {
  80. }
  81. else if ((num==3 || num==10) && pos[num+7]==1 && pos[num+14]==0) movePeg(num,14);
  82. else if ((num==45 || num==38) && pos[num-7]==1 && pos[num-14]==0) movePeg(num,-14);
  83. else if ((num==21 || num==22) && pos[num+1]==1 && pos[num+2]==0) movePeg(num,2);
  84. else if ((num==26 || num==27) && pos[num-1]==1 && pos[num-2]==0) movePeg(num,-2);
  85. else if (num==4 || num==11 || num==19 || num==20) {
  86. if (pos[num-1]==1 && pos[num-2]==0 && pos[num+7]==1 && pos[num+14]==0)
  87. selPeg(num,-2,14);
  88. else if (pos[num-1]==1 && pos[num-2]==0) movePeg(num,-2);
  89. else if (pos[num+7]==1 && pos[num+14]==0) movePeg(num,14);
  90. }
  91. else if (num==2 || num==9 || num==14 || num==15) {
  92. if (pos[num+1]==1 && pos[num+2]==0 && pos[num+7]==1 && pos[num+14]==0)
  93. selPeg(num,2,14);
  94. else if (pos[num+1]==1 && pos[num+2]==0) movePeg(num,2);
  95. else if (pos[num+7]==1 && pos[num+14]==0) movePeg(num,14);
  96. }
  97. else if (num==28 || num==29 || num==37 || num==44) {
  98. if (pos[num+1]==1 && pos[num+2]==0 && pos[num-7]==1 && pos[num-14]==0)
  99. selPeg(num,2,-14);
  100. else if (pos[num+1]==1 && pos[num+2]==0) movePeg(num,2);
  101. else if (pos[num-7]==1 && pos[num-14]==0) movePeg(num,-14);
  102. }
  103. else if (num==33 || num==34 || num==39 || num==46) {
  104. if (pos[num-1]==1 && pos[num-2]==0 && pos[num-7]==1 && pos[num-14]==0)
  105. selPeg(num,-2,-14);
  106. else if (pos[num-1]==1 && pos[num-2]==0) movePeg(num,-2);
  107. else if (pos[num-7]==1 && pos[num-14]==0) movePeg(num,-14);
  108. }
  109. else if (num==16 || num==17 || num==18 || num==23 || num==24 || num==25 || num==30 || num==31 || num==32) {
  110. var cond1=(pos[num-1]==1 && pos[num-2]==0);
  111. var cond2=(pos[num-7]==1 && pos[num-14]==0);
  112. var cond3=(pos[num+1]==1 && pos[num+2]==0);
  113. var cond4=(pos[num+7]==1 && pos[num+14]==0);
  114. if ((cond1 && (cond2 || cond3 || cond4)) ||
  115. (cond2 && (cond1 || cond3 || cond4)) ||
  116. (cond3 && (cond1 || cond2 || cond4)))
  117. {
  118. basenum=num;
  119. destnum1=destnum2=destnum3=destnum4=0;
  120. document.images["img"+basenum].src=pegact.src;
  121. if (cond1) {
  122. destnum1=-2;
  123. document.images["img"+(basenum+destnum1)].src=emptysel.src;
  124. }
  125. if (cond2) {
  126. destnum2=-14;
  127. document.images["img"+(basenum+destnum2)].src=emptysel.src;
  128. }
  129. if (cond3) {
  130. destnum3=2;
  131. document.images["img"+(basenum+destnum3)].src=emptysel.src;
  132. }
  133. if (cond4) {
  134. destnum4=14;
  135. document.images["img"+(basenum+destnum4)].src=emptysel.src;
  136. }
  137. selectnum=true;
  138. }
  139. else if (cond1) movePeg(num,-2);
  140. else if (cond2) movePeg(num,-14);
  141. else if (cond3) movePeg(num,2);
  142. else if (cond4) movePeg(num,14);
  143. }
  144. if (curNumMoves!=numMoves) display(pos,basenum,destnum);
  145. else if (finished) win();
  146. }
  147. function selPeg(num,ofset1,ofset2) {
  148. basenum=num;
  149. destnum1=ofset1;
  150. destnum2=ofset2;
  151. destnum3=destnum4=0;
  152. document.images["img"+basenum].src=pegact.src;
  153. document.images["img"+(basenum+destnum1)].src=emptysel.src;
  154. document.images["img"+(basenum+destnum2)].src=emptysel.src;
  155. selectnum=true;
  156. }
  157. function movePeg(num,ofset) {
  158. pos[num+ofset]=1;
  159. pos[num+ofset/2]=pos[num]=0
  160. basenum=num;
  161. destnum=ofset;
  162. numMoves++;
  163. }
  164. function win() {
  165. var cnt=0;
  166. for(var i=0; i<pos.length; i++) {
  167. if (pos[i]!=-1) cnt+=pos[i];
  168. }
  169. if (cnt==1 && autosolve) {
  170. if (confirm('You let the \'Solve\' function do it.Want to try it yourself?'))
  171. newGame();
  172. }
  173. else if (cnt==1 && pos[24]==1) {
  174. finished=true;
  175. if (confirm('You found the best solution! Do you want to restart?')) newGame();
  176. }
  177. else if (cnt==1) {
  178. finished=true;
  179. if (confirm('You did it! Do you want to restart?')) newGame();
  180. }
  181. else {
  182. var legalMoves=false;
  183. var num=0;
  184. while (num<pos.length && !legalMoves) {
  185. if (pos[num]==1 &&
  186. (((num==2 || num==9 || num==14 || num==15 || num==16 || num==17 ||
  187. num==18 || num==23 || num==24 || num==25 || num==30 || num==31 ||
  188. num==32 || num==21 || num==22 || num==28 || num==29 || num==37 ||
  189. num==44) && pos[num+1]==1 && pos[num+2]==0) ||
  190. ((num==4 || num==11 || num==19 || num==20 || num==16 || num==17 ||
  191. num==18 || num==23 || num==24 || num==25 || num==30 || num==31 ||
  192. num==32 || num==26 || num==27 || num==33 || num==34 || num==39 ||
  193. num==46) && pos[num-1]==1 && pos[num-2]==0) ||
  194. ((num==2 || num==9 || num==14 || num==15 || num==16 || num==17 ||
  195. num==18 || num==23 || num==24 || num==25 || num==30 || num==31 ||
  196. num==32 || num==4 || num==11 || num==19 || num==20 || num==3 ||
  197. num==10) && pos[num+7]==1 && pos[num+14]==0) ||
  198. ((num==33 || num==34 || num==39 || num==46 || num==16 || num==17 ||
  199. num==18 || num==23 || num==24 || num==25 || num==30 || num==31 ||
  200. num==32 || num==45 || num==38 || num==28 || num==29 || num==37 ||
  201. num==44) && pos[num-7]==1 && pos[num-14]==0)))
  202. legalMoves=true;
  203. num++;
  204. }
  205. if (!legalMoves) {
  206. finished=true;
  207. if (confirm('No more valid moves! Do you want to restart?')) newGame();
  208.       }
  209.    }
  210. }
  211. function newGame() {
  212. if (autosolve && running) {}
  213. else if (document.images) {
  214. autosolve=false;
  215. finished=false;
  216. if (boardType=="Cross") {
  217. for (var i=0; i<pos.length; i++) pos[i]=0;
  218. pos[0]=pos[1]=pos[5]=pos[6]=-1;
  219. pos[7]=pos[8]=pos[12]=pos[13]=-1;
  220. pos[10]=pos[16]=pos[17]=pos[18]=pos[24]=pos[31]=1;
  221. pos[35]=pos[36]=pos[40]=pos[41]=-1;
  222. pos[42]=pos[43]=pos[47]=pos[48]=-1;
  223. }
  224. else if (boardType=="Plus") {
  225. for (var i=0; i<pos.length; i++) pos[i]=0;
  226. pos[0]=pos[1]=pos[5]=pos[6]=-1;
  227. pos[7]=pos[8]=pos[12]=pos[13]=-1;
  228. pos[10]=pos[17]=pos[22]=pos[23]=pos[24]=1;
  229. pos[25]=pos[26]=pos[31]=pos[38]=1;
  230. pos[35]=pos[36]=pos[40]=pos[41]=-1;
  231. pos[42]=pos[43]=pos[47]=pos[48]=-1;
  232. }
  233. else if (boardType=="Fireplace") {
  234. for (var i=0; i<pos.length; i++) pos[i]=0;
  235. pos[0]=pos[1]=pos[5]=pos[6]=-1;
  236. pos[7]=pos[8]=pos[12]=pos[13]=-1;
  237. pos[2]=pos[3]=pos[4]=pos[9]=pos[10]=1;
  238. pos[11]=pos[16]=pos[17]=pos[18]=1;
  239. pos[23]=pos[25]=1;
  240. pos[35]=pos[36]=pos[40]=pos[41]=-1;
  241. pos[42]=pos[43]=pos[47]=pos[48]=-1;
  242. }
  243. else if (boardType=="Up Arrow") {
  244. for (var i=0; i<pos.length; i++) pos[i]=0;
  245. pos[0]=pos[1]=pos[5]=pos[6]=-1;
  246. pos[7]=pos[8]=pos[12]=pos[13]=-1;
  247. pos[3]=pos[9]=pos[10]=pos[11]=pos[15]=1;
  248. pos[16]=pos[17]=pos[18]=pos[19]=1;
  249. pos[24]=pos[31]=pos[37]=pos[38]=1;
  250. pos[39]=pos[44]=pos[45]=pos[46]=1;
  251. pos[35]=pos[36]=pos[40]=pos[41]=-1;
  252. pos[42]=pos[43]=pos[47]=pos[48]=-1;
  253. }
  254. else if (boardType=="Pyramid") {
  255. for (var i=0; i<pos.length; i++) pos[i]=0;
  256. pos[0]=pos[1]=pos[5]=pos[6]=-1;
  257. pos[7]=pos[8]=pos[12]=pos[13]=-1;
  258. pos[10]=pos[16]=pos[17]=pos[18]=pos[22]=1;
  259. pos[23]=pos[24]=pos[25]=pos[26]=1;
  260. pos[28]=pos[29]=pos[30]=pos[31]=1;
  261. pos[32]=pos[33]=pos[34]=1;
  262. pos[35]=pos[36]=pos[40]=pos[41]=-1;
  263. pos[42]=pos[43]=pos[47]=pos[48]=-1;
  264. }
  265. else if (boardType=="Diamond") {
  266. for (var i=0; i<pos.length; i++) pos[i]=1;
  267. pos[0]=pos[1]=pos[5]=pos[6]=-1;
  268. pos[7]=pos[8]=pos[12]=pos[13]=-1;
  269. pos[2]=pos[4]=pos[14]=pos[20]=pos[24]=0;
  270. pos[28]=pos[34]=pos[44]=pos[46]=0;
  271. pos[35]=pos[36]=pos[40]=pos[41]=-1;
  272. pos[42]=pos[43]=pos[47]=pos[48]=-1;
  273. }
  274. else if (boardType=="Solitaire") {
  275. for (var i=0; i<pos.length; i++) pos[i]=1;
  276. pos[0]=pos[1]=pos[5]=pos[6]=-1;
  277. pos[7]=pos[8]=pos[12]=pos[13]=-1;
  278. pos[24]=0;
  279. pos[35]=pos[36]=pos[40]=pos[41]=-1;
  280. pos[42]=pos[43]=pos[47]=pos[48]=-1;
  281. }
  282. numMoves=0;
  283. running=true;
  284. changeBoard();
  285. running=false;
  286. solveArray();
  287. display(pos);
  288. }
  289. else
  290. alert("Your browser does not support the 'document.images' property.You\n" +
  291. "should upgrade to at least Netscape 3.0 or Internet explorer 4.0.");
  292. }
  293. function initArray() {
  294. this.length=initArray.arguments.length;
  295. for (var i=0; i<this.length; i++) {
  296. this[i] = initArray.arguments[i];
  297.    }
  298. }