Foros del Web » Programando para Internet » Javascript »

Alguien encuentra el error en esta funcion?, sera un "for" inutil?, o un mal calculo?

Estas en el tema de Alguien encuentra el error en esta funcion?, sera un "for" inutil?, o un mal calculo? en el foro de Javascript en Foros del Web. Buenas trades! Necesito preguntar a quien lea esto de si saben cual es mi error con la siguiente funcion, aparentemente el error esta en los ...
  #1 (permalink)  
Antiguo 14/07/2012, 15:53
Avatar de milomondo  
Fecha de Ingreso: julio-2012
Ubicación: uruguay.
Mensajes: 11
Antigüedad: 11 años, 9 meses
Puntos: 1
Pregunta Alguien encuentra el error en esta funcion?, sera un "for" inutil?, o un mal calculo?

Buenas trades!
Necesito preguntar a quien lea esto de si saben cual es mi error con la siguiente funcion, aparentemente el error esta en los for, pero ya no tengo idea de como arreglarlo.

Explico brevemente:
-Estoy intentando realizar una especie de "jueguito" con javascript imitando carreras de auto, donde unas imagenes de autos se mueven por las celdas de una fila en una tabla, y el auto que primero llega a la celda final de su fila: gana.

-Para calcular el movimiento del auto un jugador ingresa una cantidad de combustible y una cantidad de recarga al iniciar la carrera.

-Y asi el auto se mueve tantos casilleros segun el combustible que tiene, multiplicado por un numero aleatorio entre 1 y 4 que representa la "suerte" del jugador.

-Pero el problema es que al iniciar el programita, a veces al darle click a un boton (uno para cada auto,para que comience a moverse) este no funciona, el auto no aparece ni se mueve, y otras veces si, incluso a veces aparece uno de los autos y el otro no, no encuentro el patron.


Esta es la funcion que utilizo para calcular el movimiento del auto:
Código Javascript:
Ver original
  1. $(document).ready(iniEventos);
  2. var j=0;
  3. $(document).ready(iniEventos2);
  4. var k=0;
  5.  
  6.  
  7. function iniEventos(){
  8. $("#aceptar1").click(movimiento);
  9. }
  10.  
  11. function movimiento(){
  12.  
  13.  
  14. var suerte=suertes[0]
  15. var destreza=destrezas[0]
  16. var desplazamiento=desplazamientos[0]
  17. var tr=$("#jugador1");
  18. var carril="<img src='camino.JPG' alt='camino'/>";
  19. var foto="<img src='GIF063.gif' alt='camino'/>";
  20. var td=tr.children("td");
  21. var movimiento=(desplazamiento*(suerte+destreza))%10
  22. if(movimiento=0){
  23. movimiento=1}
  24.  
  25.  
  26. if ($(this).attr("id")=="aceptar1"){
  27.  
  28. for (var i=j; i<(movimiento+j); i++){
  29. if ($(td[i]).next().html()!=null){
  30.  
  31.  
  32.  
  33. window.setTimeout(mover, i*100,$(td[i]),carril,foto,true);
  34.  
  35. }
  36. else{
  37. alert("se terminó la pista");
  38. break;
  39. }
  40. }
  41. j+=movimiento;
  42. }
  43. }
  44.  
  45. function mover(td,carril,foto,flecha){
  46. if (flecha) {
  47.  
  48. td.empty();
  49. td.append(carril);
  50. td=td.next();
  51. td.empty();
  52. td.append(foto);
  53. }
  54. }
  55. //aca se termina la funcion que hace posible el movimiento del primer auto
  56.  
  57. function iniEventos2(){
  58. $("#aceptar2").click(movimiento2);
  59. }
  60.  
  61.  
  62. function movimiento2(){
  63.  
  64. var suerte2=suertes[1]
  65. var destreza2=destrezas[1]
  66. var desplazamiento2=desplazamientos[1]
  67.  
  68. var tr=$("#jugador2");
  69. var carril="<img src='camino.JPG' alt='camino'/>";
  70. var foto="<img src='GIF063.gif' alt='camino'/>";
  71. var td=tr.children("td");
  72. var movimiento2=(desplazamiento2*(suerte2+destreza2))%10
  73. if(movimiento2=0){
  74. movimiento2=1}
  75.  
  76.  
  77. if ($(this).attr("id")=="aceptar2"){
  78.  
  79. for (var i=k; i<(movimiento2+k); i++){
  80. if ($(td[i]).next().html()!=null){
  81.  
  82.  
  83.  
  84. window.setTimeout(mover2, i*100,$(td[i]),carril,foto,true);
  85.  
  86. }
  87. else{
  88. alert("se terminó la pista");
  89. break;
  90. }
  91. }
  92. k+=movimiento2;
  93. }
  94. }
  95.  
  96. function mover2(td,carril,foto,flecha){
  97. if (flecha) {
  98.  
  99. td.empty();
  100. td.append(carril);
  101. td=td.next();
  102. td.empty();
  103. td.append(foto);
  104. }
  105. }
  106. //aca se termina la funcion que hace posible el movimiento del segundo auto


(no se asusten, son mas o menos la misma funcion dos veces, uno para cada jugador)


Yo se que escribi mucho y talvez pido demasiado, pero si alguien puede encontrarle el eror a esa funcion ya que a veces no funciona le agradesco infinitamente! Ya no tengo a donde mas recurrir. xD

- No estoy seguro si es el "for" de cada funcion , o si calculo mal y el movimiento termina siendo igual a cero en ocasiones. :S
  #2 (permalink)  
Antiguo 15/07/2012, 04:35
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Alguien encuentra el error en esta funcion?, sera un "for" inutil?, o un m

no estoy muy seguro pero a simple vista prueba a devolver los valores de j y k a 0 cuando se haga click XD

Código PHP:
$(document).ready(iniEventos);
var 
j=0;
$(
document).ready(iniEventos2);
var 
k=0;

function 
iniEventos(){
$(
"#aceptar1").click(movimiento);
}

function 
movimiento(){
j=0;
k=0;
var 
suerte=suertes[0
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft

Etiquetas: funcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:28.