elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 183
11  Programación / Programación General / ¿Cómo producir variaciones rápidamente? en: 25 Febrero 2024, 06:07 am
Hace poco hice un tema similar:
https://foro.elhacker.net/programacion_general/iquestcomo_los_numeros_se_producirian_mas_rapido_en_mflash_5-t520859.0.html
Pero este no es tanto sobre Flash, aquél más o menos ya lo resolví.

Este código produce dibujos negros y blancos:
Código
  1.   actions for fotograma 1
  2.      PixelesdeLargo = 1;
  3.      // En el frame 3 se repite:
  4.      function Variar () {
  5.         PixelaModificar = "ColordePixel"+Puntero;
  6.         ColordePixelaModificar = eval(PixelaModificar);
  7.         // ¿El pixel puede cambiar de color?
  8.         if (ColordePixelaModificar<1) {
  9.            // Sí, hacer los cambios:
  10.            set (PixelaModificar, ColordePixelaModificar+1);
  11.            Col = new Color("Pixel"+Puntero);
  12.            Col.setRGB(parseInt(0, 16));
  13.            // Para juzgar: ¿El dibujo es repetido?
  14.            SumadePintados = SumadePintados+1;
  15.            // ¿El píxel está en el extremo derecho o abajo, donde no había en una hoja más chica?
  16.            if (Puntero/PixelesdeLargo == Math.floor(Puntero/PixelesdeLargo) or Puntero>MinPixelInferior) {
  17.               // Sí, actualizar SumadePintadosNuevos:
  18.               SumadePintadosNuevos = SumadePintadosNuevos+1;
  19.            }
  20.            // ¿El dibujo tiene píxeles donde no había en una hoja más chica...
  21.            // y son al menos (PixelesdeLargo) píxeles?
  22.            if (SumadePintadosNuevos>0 && SumadePintados>MinSumadePintados) {
  23.               // Sí, hacer dibujo y dar tiempo para verlo:
  24.               Puntero = MaxPosiciondePuntero;
  25.               play ();
  26.            } else {
  27.               // No, el dibujo es repetido, no mostrarlo y hacer otro:
  28.               Puntero = MaxPosiciondePuntero;
  29.               Variar();
  30.            }
  31.         } else {
  32.            // El pixel no puede cambiar de color, resetearlo:
  33.            set (PixelaModificar, 0);
  34.            Col = new Color("Pixel"+Puntero);
  35.            Col.setRGB(parseInt("FFFFFF", 16));
  36.            SumadePintados = SumadePintados-1;
  37.            // ¿El píxel está en el extremo derecho o abajo, donde no había en una hoja más chica?
  38.            if (Puntero/MaxPosiciondePuntero == Math.floor(Puntero/MaxPosiciondePuntero) or Puntero>MinPixelInferior) {
  39.               // Sí, actualizar SumadePintadosNuevos:
  40.               SumadePintadosNuevos = SumadePintadosNuevos-1;
  41.            }
  42.            // ¿Hay un pixel anterior?
  43.            if (Puntero>1) {
  44.               // Sí, apuntar a ese:
  45.               Puntero = Puntero-1;
  46.               // Continuar haciendo el dibujo:
  47.               Variar();
  48.            } else {
  49.               // No, aumentar tamaño de hoja y reiniciar.
  50.               gotoAndPlay (2);
  51.            }
  52.         }
  53.      }
  54.   actions for fotograma 2
  55.      PixelesdeLargo = PixelesdeLargo+1;
  56.      // Colocados:
  57.      Pixeles = 0;
  58.      DistanciaEntrePixeles = 384/PixelesdeLargo;
  59.      PosicionX = 64-DistanciaEntrePixeles;
  60.      EnlaFilaActual = 0;
  61.      PosicionY = 0;
  62.      MaxPosiciondePuntero = PixelesdeLargo*PixelesdeLargo;
  63.      Puntero = MaxPosiciondePuntero;
  64.      // Píxeles pintados:
  65.      SumadePintados = 0;
  66.      MinSumadePintados = PixelesdeLargo-1;
  67.      MinPixelInferior = PixelesdeLargo*(PixelesdeLargo-1);
  68.      // Píxeles pintados que no estaban en hojas de menos píxeles:
  69.      SumadePintadosNuevos = 0;
  70.      // Agregar píxeles en blanco:
  71.      do {
  72.         Pixeles = Pixeles+1;
  73.         if (EnlaFilaActual<PixelesdeLargo) {
  74.            EnlaFilaActual = EnlaFilaActual+1;
  75.            PosicionX = PosicionX+DistanciaEntrePixeles;
  76.         } else {
  77.            PosicionX = 64;
  78.            EnlaFilaActual = 1;
  79.            PosicionY = PosicionY+DistanciaEntrePixeles;
  80.         }
  81.         trace ("El pixel "+Pixeles+" se colocó en "+PosicionX+", "+PosicionY);
  82.         attachMovie("mPixel", "Pixel"+Pixeles, Pixeles);
  83.         setProperty ("Pixel"+Pixeles, _x, PosicionX);
  84.         setProperty ("Pixel"+Pixeles, _y, PosicionY);
  85.         setProperty ("Pixel"+Pixeles, _width, DistanciaEntrePixeles);
  86.         setProperty ("Pixel"+Pixeles, _height, DistanciaEntrePixeles);
  87.      } while (Pixeles<MaxPosiciondePuntero);
  88.      stop ();
  89.   actions for fotograma 3
  90.      stop ();
  91.   actions for Vacío
  92.      onClipEvent (enterFrame) {
  93.         _level0.Variar();
  94.      }
  95.   actions for fotograma 4
  96.      stop ();
  97.   actions for fotograma 5
  98.      gotoAndPlay (3);

La función se repite dentro de si misma, supongo que un do while sería mejor, no me di cuenta, pero ese no es el tema, el tema es que hago algo así:
Si ColordePixel4 puede colorearse, hacerlo y mostrar dibujo.
sino resetearlo. Si el 3 puede colorearse, hacerlo y mostrar dibujo.
sino resetearlo. Si el 2...
Y así hasta el 1.
Cuando hay más píxeles, eso se repite más veces.

¿Qué otro método más rápido sería mejor? ¿es posible, cómo? Me refiero a algo que varíe todo lo necesario sin tener que variar un puntero y repetir un while y estar reseteando 1 cosa a la vez...

Si un humano quiere escribir una lista así:
0001
0010
0011
0100
etc
No sé bien cómo se hace, pero es como que se mira dónde hay que sumar y si los valores a la derecha están al máximo se resetean. O sea, desde la izquierda se busca el 1er valor que no esté al máximo, se lo aumenta y se resetean los a la derecha suyo. Pero nosotros los humanos es como que no necesitamos mirar desde la izquierda, ya más o menos podemos anticipar en dónde estará el próximo número que debe aumentarse ¿o no?

No sé, a mí esa manera me resulta muy lenta, variando las cosas de a una, siento que debe haber algo mejor.

Una posibilidad sería hacer sumas normales y luego convertirlo en el valor que se precisa:
0 -> 0000
1 -> 0001
2 -> 0010
Hacer la conversión no creo que tarde mucho ¿pero si los posibles valores fuesen más de 9 o de 10? Por eso uso varias variables, no sólo 1. Uds supongo que usan arrays, pero creo que en el fondo es igual. Si son menos de 9 o 10 posibles valores la conversión es literal:
ColordePixel4 = Caracter4
ColordePixel3 = Caracter3
etc
Sino creo que se deben hacer operaciones matemáticas para cada uno y eso implica usar un do while...

Hay que inventar algo mejor o díganme qué hay que no sé xD

Para colmo, en el caso particular de los dibujos, tengo que variar unas variables y luego debo variar colores en base a ellas, creo que lo puedo hacer más rápido, pero el punto es que tendría que usar un do while también (edit: quizá no, probaré).

Tampoco es cuestión de estar haciendo los dibujos desde 0 en cada caso, yo intento que se varíen sólo los pixeles que deben variarse.

¿Ideas, info?
12  Programación / Programación General / Re: Detectar que luego de moverse el mouse, se detuvo. en: 25 Febrero 2024, 02:31 am
Asumiré que es imposible que funcione, aunque no sé la causa.

He visto que la posición del mouse llega a actualizarse en cada frame con framerate 120, así que ese número no sería el problema.

Y disminuyendo el framerate (no quiero) funciona bien, así que el código no es el problema.

 ¿Tal vez la posición sólo se actualiza rápido luego de que lleva un rato moviéndose? De momento no sé cómo ver eso. ¿Cómo podría? Debería poner un contador de tiempo y... ver si al inicio se actualizaba tan rápido como luego. Haré eso.

Edit: Confirmado que no sirve.
13  Foros Generales / Foro Libre / Re: Sinceridad en: 25 Febrero 2024, 01:46 am
no tiene sentido que todo el mundo que no sepa del tema que se pregunta respondo diciendo algo parecido como, lo sentimos pero no se sabe la respuesta.
Totalmente, en Quora hay muchos que responden así o les dices "leer mi comentario" y en algunas respuestas que dan se nota que no lo leyeron y parece que hubieran usado un bot, nada de eso tiene sentido, es una pérdida de tiempo, se mira la respuesta para nada.


En cuanto a los foros, yo también me he quedado con la duda de qué ha pasado, no entiendo por qué Facebook es más exitoso (dicen). El problema de los foros probablemente son los trolls, eso hace que se desconfíe de cualquiera y ponen altas exigencias para participar o te banean por cualquier cosa, o quién sabe, a mí me han baneado de varios lados no sé por qué.

Ah, me habían recomendado Likedin, prueba eso. Yo no tengo mucha paciencia como para andar cambiando de sitios, es lioso aprender a usarlos.
14  Media / Juegos y Consolas / ¿Qué es medible en todos los videojuegos? Corregir/ampliar mi lista. en: 24 Febrero 2024, 22:05 pm
- Casos de (dar una instrucción mediante presionar cierto botón o algo similar):
En general: Mide la velocidad promedio conque el jugador presiona cierto botón.
El conteo es pausado (me refiero a que sólo cuenta como "caso" el momento en que se presionó un botón o se movió el mouse; si se presionó o movió y no se dejó de hacerse sólo cuenta como 1 caso, debe haber una pausa entre los "casos").
Ejemplo en que más valor implica más habilidad: Veces que aprendió o se burló del oponente (asumiendo que mientras lo hace se pone a si mismo en riesgo).
Ejemplo en que más valor implica menos habilidad: Veces que recurrió a activar un escudo.

- 1er frame (frame = instante con cierta duración, es una forma de medir el tiempo) en que ocurrió un caso de:
General: Cuánto tardó en presionar cierto botón por 1era vez.
Conteo pausado.
Habilidoso: Qué tan rápido empezó a correr luego de la señal.
Negativo: Qué tan rápido tuvo que frenar antes de llegar a la meta.

- Último frame en que ocurrió un caso de:
General: Cuánto tardó en presionar cierto botón por última vez.
Conteo pausado.
Habilidoso: Cuánto tiempo resistió antes de escapar, o cuan cerca estuvo de presionar el botón en el último momento posible (en juegos de Golf suele haber algo parecido a eso).
Negativo: Cuánto tiempo tardó en presionar el botón de aprender (si sobrevivió).

- Frames en que ocurrió un caso de:
General: Tiempo en que se estuvo presionando algo.
Conteo normal: Diferencias con respecto a "Casos de":
1: Si se hace una misma cosa más de una vez en un mismo frame (lo cual es casi imposible porque los frames cambian muy rápido; es posible por ejemplo si lo que se mide son los botones diferentes presionados al mismo tiempo, porque en ese caso pueden ser más de 1 a la vez), sólo cuenta como 1.
2: Aquí dejar presionado 1 botón durante 5 frames, por ejemplo, cuenta como 5 casos, no se necesita presionar-soltar.
Habilidoso: Si mantener presionado el botón implica desactivar un escudo.
Negativo: Si implica activarlo.

- Mínima duración de un caso de:
General: Se explica solo.
Conteo normal.
Habilidoso: Es así generalmente, presionar y rápidamente tener listo el dedo para presionar otra cosa, pero podría ser especialmente positivo si se debe golpear algo lo más suavemente posible y depende de cuánto tiempo se haya presionado el botón.
Negativo: Similar a lo anterior, difícilmente resulta negativo, el ejemplo podría ser en un juego en que se deba dar mucha energía a algo (mantener el botón presionado un tiempo) y darle poca sea un desperdicio (en juegos de automóviles no vale mucho porque, incluso acelerar durante un poquito es mejor que no acelerar).

- Máxima duración de un caso de:
General: Parece igual que "Frames en que ocurrió un caso de" pero eso cuenta la duración total y esto la máxima antes de una pausa.
Conteo normal.
Habilidoso: Si mantener presionado el botón implica desactivar un escudo.
Negativo: Si implica activarlo.

- Por frames, mínimos casos de:
General: Mínima velocidad de presión. Para hacer esto, cuando hay un frame en que no hubo presión se empieza a contar en cuántos más seguidos no la hubo. El conteo que resulte mayor es X. El resultado será "0 casos en X frames". Si se presionara en absolutamente cada frame (lo cual se supone imposible como ya expliqué), el resultado sería "X casos en X frames", y si además de eso a veces se presionara varias veces por frame, sería "VECES casos en 1 frame". Todo esto puede ser confuso pero es la mejor forma que se me ocurrió de hacerlo.
Conteo pausado.
Habilidoso (como de costumbre: Mayor valor es mejor): Cuando presionar rápido un botón hace que un golpe sea más fuerte.
Negativo: Dar la misma orden varias veces (asumiendo que es innecesario).

- Por frames, máximos casos de:
General: Máxima velocidad de presión. Para hacer esto, cuando hay un caso se empieza a contar cuántos frames se tardó en ocurrir otro. El conteo que resulte menor es N. El resultado será "2 casos en N frames". Si el caso ocurriera en cada frame, sería "X casos en X frames", y si además de eso a veces el caso ocurriera varias veces por frame, sería "VECES casos en 1 frame".
Conteo pausado.
Los ejemplos de antes son válidos.

- Mínima/máxima distancia (en frames) entre 2 casos de:
Este es un método peor de medir la velocidad mínima/máxima de eventos, ya que uno podría ocurrir en un mismo frame más de 1 vez. No le veo sentido a usarlo.

- En un mismo frame mínimos/máximos casos de:
Por si mismo es poco útil pero es complementario de lo anterior, pero el método que puse más arriba combina ambos, ergo tampoco le veo sentido a usar este.

Luego hay relaciones como:
Mínima distancia (en frames) entre una instrucción A y una B (asumiendo que puede ser 0 si ambas ocurrieron en un mismo frame).

Condiciones como:
Casos de A mientras A<B
donde A es una instrucción (presión de botón, etc).
e B es un número fijo u otra instrucción.

Y lo podemos mezclar con propiedades, como:
Casos de A mientras el largo de A<B

...pero eso lo pensaré luego.

En resúmen es:
- Casos en que se da cierta instrucción (debe haber pausa).
- 1er momento en que se da.
- Último momento en que se da.
- Tiempo en que se da la instrucción.
- Mínima duración conque se repite.
- Máxima duración conque se repite.
- Mínima velocidad conque se repite (debe haber pausa).
- Máxima velocidad conque se repite (debe haber pausa).

¿Qué me falta?
15  Foros Generales / Foro Libre / Re: Sinceridad en: 24 Febrero 2024, 07:27 am
Yo en general cuando sé respondo salvo que me parezca que quieren hacer malware o algo así, o si la pregunta me parece muy absurda (por ejemplo una vez uno preguntó qué pasa si martillaba una moneda a diario).

Ya sabes que mucha participación no hay, así que no tiene mucho sentido que te sorprenda que no te respondan, más si tus preguntas son difíciles de responder.
16  Programación / Programación General / Detectar que luego de moverse el mouse, se detuvo. en: 23 Febrero 2024, 09:32 am
Y entonces quiero que ocurra cierto evento.

Con esto el evento (_level0.gotoAndStop(5)) ocurre por el simple hecho de mover el mouse, aunque el mouse no se haya detenido, está mal:
Código
  1. // En frame 1:
  2. Movement = "Never";
  3. onClipEvent (enterFrame) {
  4. if (Movement == "Sí") {
  5. Movement = "Frenado";
  6. } else if (Movement == "Frenado") {
  7. _level0.gotoAndStop(5);
  8. }
  9. }
  10. onClipEvent (mouseMove) {
  11. Movement = "Sí";
  12. }
  13. onClipEvent (mouseDown) {
  14. if (Movement != "Frenado") {
  15. _level0.Mensaje = "Perdiste por hacer clic.";
  16. _level0.gotoAndStop(6);
  17. }
  18. }
  19. onClipEvent (keyDown) {
  20. if (Movement != "Frenado") {
  21. _level0.Mensaje = "Perdiste por hacer clac.";
  22. _level0.gotoAndStop(6);
  23. }
  24. }
Se supone que al moverlo Movement cambia a "Sí", luego el frame se repite y cambia a "Frenado" pero si el mouse se sigue moviendo debería cambiar a "Sí" de nuevo, por lo que la condición de Movement == "Frenado" no debería cumplirse, pero sí se cumple.

Intenté esto:
Código
  1. // En frame 1:
  2. Movement = "Never";
  3. ActualXMouse = _xmouse;
  4. ActualYMouse = _ymouse;
  5. onClipEvent (enterFrame) {
  6.    if (_level0.ActualXMouse != _level0._xmouse or _level0.ActualYMouse != _level0._ymouse) {
  7.        Movement = "Sí";
  8.        trace ("_level0.ActualXMouse era: "+_level0.ActualXMouse);
  9.        _level0.ActualXMouse = _level0._xmouse;
  10.        trace ("_level0.ActualXMouse es: "+_level0.ActualXMouse);
  11.        trace ("_level0.ActualYMouse era: "+_level0.ActualYMouse);
  12.        _level0.ActualYMouse = _level0._ymouse;
  13.        trace ("_level0.ActualYMouse es: "+_level0.ActualYMouse);
  14.    } else if (Movement == "Sí") {
  15.        trace ("Movement == Sí");
  16.        if (_level0.ActualXMouse == _level0._xmouse && _level0.ActualYMouse == _level0._ymouse) {
  17.            _level0.gotoAndStop(5);
  18.        }
  19.    }
  20. }
  21. onClipEvent (mouseMove) {
  22.    // Movement = "Sí";
  23. }
  24. onClipEvent (mouseDown) {
  25.    if (Movement != "Frenado") {
  26.        _level0.Mensaje = "por hacer clic.";
  27.        _level0.gotoAndStop(6);
  28.    }
  29. }
  30. onClipEvent (keyDown) {
  31.    if (Movement != "Frenado") {
  32.        _level0.Mensaje = "por hacer clac.";
  33.        _level0.gotoAndStop(6);
  34.    }
  35. }
Y obtengo el mismo resultado.

Había hablado con GPT, cambié algo, y al final ya no entiendo lo que dice.

Citar
En Macromedia Flash 5 ¿la velocidad conque se ejecutan los frames puede ser más rápida que la velocidad conque se actualiza la posición del mouse?

Citar
En Macromedia Flash 5, la velocidad con la que se ejecutan los frames está determinada por la configuración de fotogramas por segundo (FPS) del proyecto. Por defecto, la configuración de FPS es de 12 fotogramas por segundo, pero se puede ajustar según las necesidades del proyecto.

La velocidad con la que se actualiza la posición del mouse en Flash 5 está vinculada a la frecuencia de actualización del sistema operativo y del hardware del mouse. En general, la posición del mouse se actualiza con bastante rapidez y en tiempo real, lo que significa que los eventos del mouse se pueden detectar y responder de manera rápida.

Dicho esto, es posible que en situaciones extremas, donde haya una alta carga de trabajo en el procesador o limitaciones de rendimiento, la velocidad de actualización de la posición del mouse pueda ser más lenta en comparación con la velocidad de ejecución de los frames de Flash. Sin embargo, esto no es una limitación inherente de Flash 5, sino más bien una cuestión de rendimiento del sistema en el que se ejecuta.

En resumen, en condiciones normales y en sistemas bien configurados, la velocidad de ejecución de los frames en Flash 5 generalmente es más rápida que la velocidad de actualización de la posición del mouse.

Le mostré el código y le pregunté por qué no funcionaba.

Citar
El código que proporcionaste parece tener un par de problemas que podrían estar impidiendo que funcione correctamente. A continuación, te señalaré los posibles problemas y te daré una solución propuesta:

1. Comparación de posiciones del mouse: En tu condición `if (_level0.ActualXMouse != _level0._xmouse && _level0.ActualYMouse != _level0._ymouse)`, estás utilizando el operador lógico "&&" (y) para verificar si las posiciones X e Y del mouse han cambiado. Sin embargo, esto significa que el código dentro de esa condición se ejecutará solo si ambas condiciones son verdaderas al mismo tiempo, lo que puede ser poco probable. Es posible que desees utilizar el operador lógico "||" (o) en su lugar, para verificar si al menos una de las condiciones es verdadera.

Solución propuesta:
```actionscript
if (_level0.ActualXMouse != _level0._xmouse || _level0.ActualYMouse != _level0._ymouse) {
    // Código para cuando la posición del mouse ha cambiado
} else if (Movement == "Sí") {
    // Código para cuando la posición del mouse se ha mantenido igual después de un movimiento previo
}
```

2. Inicialización de la variable "Movement": No se muestra en el código proporcionado cómo se inicializa la variable "Movement". Si no se inicializa correctamente en otra parte de tu código, la condición `else if (Movement == "Sí")` puede no evaluarse como verdadera y, por lo tanto, el código dentro de ese bloque no se ejecutará.

Solución propuesta:
Asegúrate de que la variable "Movement" se inicialice correctamente antes de que se active el código que has proporcionado, por ejemplo, al comienzo del juego o en otro evento relevante.

Espero que estas sugerencias te ayuden a resolver el problema y que tu juego funcione correctamente. Si sigues teniendo dificultades, no dudes en proporcionar más detalles o preguntar más preguntas.

Cambié algo que me propuso, que me pareció bien, pero el resultado no cambió.

Citar
Mis disculpas por la confusión anterior. Luego de revisar nuevamente el código, noto que hay un error en la lógica de las condiciones. El problema radica en que estás comparando la posición del mouse actual con la posición anterior en cada cuadro de animación (enterFrame), lo que hace que la condición siempre se cumpla mientras muevas el mouse.

Para lograr el comportamiento deseado de ganar al mover el mouse y luego detenerlo, puedes implementar una solución alternativa utilizando eventos del mouse en lugar de la lógica basada en enterFrame. A continuación, te muestro un ejemplo de cómo podrías modificar el código:

```actionscript
// Escucha el evento de movimiento del mouse
this.onMouseMove = function() {
    // Guarda la posición del mouse actual
    _level0.ActualXMouse = _level0._xmouse;
    _level0.ActualYMouse = _level0._ymouse;
}

// Escucha el evento de liberación del mouse
this.onMouseUp = function() {
    // Verifica si el mouse se ha movido previamente y luego se detuvo
    if (_level0.ActualXMouse != _level0._xmouse || _level0.ActualYMouse != _level0._ymouse) {
        // El mouse se ha movido y luego se detuvo, se gana el juego
        _level0.gotoAndStop(5);
    }
}
```

En este código, utilizamos los eventos `onMouseMove` y `onMouseUp` para detectar el movimiento y la liberación del mouse, respectivamente. Al mover el mouse, guardamos la posición actual en las variables `_level0.ActualXMouse` y `_level0.ActualYMouse`. Luego, al soltar el mouse, verificamos si la posición del mouse ha cambiado en comparación con la posición guardada previamente. Si ha habido un movimiento y luego se detuvo, se activa la condición y se gana el juego.

Espero que esta solución funcione correctamente para tu juego. Si sigues teniendo problemas o tienes más preguntas, no dudes en hacérmelo saber. Estoy aquí para ayudarte.

MouseUp en mi lenguaje creo que es el evento "se dejó de mantener el botón presionado", no es lo mismo. En fin, no entiendo qué me dice:
Citar
¿qué condición dices que se cumple siempre?

Citar
Mis disculpas por la confusión en mi respuesta anterior. La condición que mencioné anteriormente no se cumple siempre, fue un error en mi explicación.

El problema principal en tu código original es que la condición `if (_level0.ActualXMouse != _level0._xmouse && _level0.ActualYMouse != _level0._ymouse)` se cumple cuando cualquiera de las coordenadas X o Y del mouse cambia. Esto significa que si solo una de las coordenadas cambia, el código dentro de esa condición se ejecutará. Sin embargo, según tu descripción, deseas que el juego se gane solo cuando ambas coordenadas del mouse se mantienen iguales después de un movimiento previo.

Para corregir esto, podemos modificar la condición para que verifique si ambas coordenadas X e Y del mouse se mantienen iguales. Aquí tienes el código actualizado:

```actionscript
onClipEvent(enterFrame) {
    if (_level0.ActualXMouse != _level0._xmouse || _level0.ActualYMouse != _level0._ymouse) {
        // Actualiza las coordenadas del mouse si han cambiado
        _level0.ActualXMouse = _level0._xmouse;
        _level0.ActualYMouse = _level0._ymouse;
    } else if (Movement == "Sí") {
        // Verifica si las coordenadas del mouse se mantienen iguales después de un movimiento previo
        _level0.gotoAndStop(5); // Gana el juego
    }
}
```

En este código actualizado, utilizamos el operador lógico "||" (o) para verificar si cualquiera de las coordenadas X o Y del mouse ha cambiado. Si alguna de las coordenadas cambia, actualizamos las variables `_level0.ActualXMouse` y `_level0.ActualYMouse` para reflejar las nuevas posiciones del mouse. Luego, en el bloque `else if`, verificamos si ambas coordenadas se mantienen iguales después de un movimiento previo. Si es así, se ejecuta el código para ganar el juego.

Espero que esta aclaración solucione el problema y te permita lograr el comportamiento deseado en tu juego. Si tienes más preguntas, no dudes en hacerlas. Estoy aquí para ayudarte.

Ahí parece una versión más simple de la que hice y que no creo que funcione, pero me cuesta entender qué dice y ya me cansé.

¿Solución?
17  Foros Generales / Foro Libre / Re: Conflicto Ucrania-Rusia,EEUU, OTAN, Europa. (Todas las noticias relacionadas irán aquí) en: 23 Febrero 2024, 07:10 am
WTF:
https://somoskudasai.com/noticias/cultura-otaku/un-soldado-otaku-de-rusia-se-vuelve-viral/
18  Informática / Software / Re: ¿Excel podría configurarse para que al escribir se cambie de celda si...? en: 23 Febrero 2024, 06:51 am
Justo hace una semana más o menos encontré una solución a esto.

Para pasar rápidamente al final de la siguiente sección, en esos lugares debo haber puesto **, es sólo una vez cada sección, así:
Proyecto 1:

1: jndjndjsdn

2: djknjdnd

**

------------------------

Proyecto 2:

1: jndjndjsdn

2: djknjdnd

**

--------------------------

Luego uso F3 (en el bloc de notas), escribo **, y así voy rápidamente al final de cada sección, donde están los **  ;D
19  Foros Generales / Foro Libre / Re: Tensión entre EEUU y Rusia después de que Biden llame "loco hijo de p**a" a Putin en: 23 Febrero 2024, 01:59 am
¿Por qué el informativo muestra periodistas relatando el hecho en vez de mostrar el hecho? Yo quería ver qué cara ponía Biden durante y después.
20  Informática / Software / Re: ¿Cómo se encuentra software antiguo en las páginas oficiales? en: 23 Febrero 2024, 01:41 am
Es que incluso si hay me ha pasado que no la encuentro, no se me da bien navegar por las páginas y encontrar cosas que no están a la vista. En este caso puede que no hayan puesto una versión antigua, pero en otros casos me ha tenido que decir una persona, y nunca supe cómo llegó ahí. Otro programa me puede servir si en el futuro actualizo un poco el PC, pero había probado varios y este fue el único que me sirvió.
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 183
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines