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


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 235
181  Programación / Scripting / Re: Actionscript en: 19 Noviembre 2024, 15:37 pm
Si posteas el código o dices qué hace el programa quizá pueda ayudarte.

Pero si lo quieres para esto:
https://foro.elhacker.net/dudas_generales/obtener_metodo_de_login_de_un_juego_flash-t520858.0.html;msg2276671#msg2276671
...entonces no creo porque eso ya es ingeniería inversa, temas de seguridad, que no sé mucho.

En fin, parece que quieres que se adivine algo de un programa luego de adivinar qué quieres :/
182  Programación / Programación General / Re: ¿Se puede evitar estos ifs, cómo? en: 19 Noviembre 2024, 06:39 am
Acá, dentro de un while, tengo un problema similar, aunque más sencillo:
Código
  1. // Barril se movió.
  2. // Si toca al personaje:
  3. if (I.Player.hitTest(eval(BarrilaMover)) == true) {
  4. // Si él se está moviendo:
  5. if (I.Player.Action == "Walking") {
  6. // Game over:
  7. gotoAndStop (3);
  8. }
...a partir de ahí, si no hay Game over, quiero ver si el barril toca a otro barril. En realidad acabo de notar que eso no me sirve, pero supongamos que sí, quiero ver cómo se resolvería. Si uno los ifs (los que ya tiene el código) con una &&, no hay problema, salvo que me queda largo y feo el if, me gusta que cada condición esté en una línea distinta. Quizá concatenando las variables antes lograría eso. Pero si no uno los ifs, parece que debo poner 2 elses con lo mismo:
Código
  1. // Barril se movió.
  2. // Si toca al personaje:
  3. if (I.Player.hitTest(eval(BarrilaMover)) == true) {
  4. // Si él se está moviendo:
  5. if (I.Player.Action == "Walking") {
  6. // Game over:
  7. gotoAndStop (3);
  8. } else {
  9. // Ver si toca otro barril.
  10. }
  11. } else {
  12. // Ver si toca otro barril.
  13. }

No quiero ver eso y luego ver si hay game over, porque si hay game over no tiene sentido que se haga eso xP
183  Programación / Programación General / Re: Cambiar partes de un color definido hexadecimalmente. en: 19 Noviembre 2024, 05:01 am
Con tu ayuda y la de GPT lo hice.

Usando estas funciones:
Código
  1. function ConvertirHexEnDec (Hexadecimal) {
  2.    return parseInt(Hexadecimal, 16);
  3. }
  4. function ConvertirDecEnHex (Decimal) {
  5.    Hexadecimal = Decimal.toString(16).toUpperCase();
  6. if (Hexadecimal.length == 1) {
  7. Hexadecimal = "0"+Hexadecimal;
  8. }
  9. return Hexadecimal;
  10. }
  11. function ActualizarColorDelFondo () {
  12. // Formar el color:
  13. ColorDelFondo = Rojo+Verde+Azul;
  14. // Actualizar el color del objeto:
  15. ColorDelObjetoFondo.setRGB(parseInt(ColorDelFondo, 16));
  16. }

Y por ejemplo el botón azul de +1:
Código
  1. on (release) {
  2. // Del color obtener la parte a modificar:
  3. Azul = ColorDelFondo.substr(4, 2);
  4. // Convertirla en decimal:
  5. Azul = ConvertirHexEnDec(Azul);
  6. // Se aumenta 1 a esa parte y si supera 255 queda en 255:
  7. Azul = Math.min(Azul+1, 255);
  8. // Convertirlo en hexadecimal:
  9. Azul = ConvertirDecEnHex(Azul);
  10. // Obtener las otras partes:
  11. Rojo = ColorDelFondo.substr(0, 2);
  12. Verde = ColorDelFondo.substr(2, 2);
  13. ActualizarColorDelFondo ()
  14. }

Cada botón es un poco distinto pero se entiende la idea.

Hace años lo hice poniendo que si el valor era "A" pasaba a "B", que si era "B" pasaba a "C", etc, un lío, por eso quería hacerlo mejor.

Acá está:
Código
  1. on (release) {
  2.    _root.CFModo = 0;
  3.    _root.CPartB = _root.Fondo.substring( 5, 6 );
  4.    _root.CPartA = _root.Fondo.substring(4, 5);
  5.    if (_root.CPartB == "F") {
  6.        // Aumenta el primer dígito.
  7.        if (_root.CPartA == "F") {
  8.        } else {
  9.            _root.CPartB = "0";
  10.            if (_root.CPartA == "E") {
  11.                _root.CPartA = "F";
  12.            } else if (_root.CPartA == "D") {
  13.                _root.CPartA = "E";
  14.            } else if (_root.CPartA == "C") {
  15.                _root.CPartA = "D";
  16.            } else if (_root.CPartA == "B") {
  17.                _root.CPartA = "C";
  18.            } else if (_root.CPartA == "A") {
  19.                _root.CPartA = "B";
  20.            } else if (_root.CPartA == "9") {
  21.                _root.CPartA = "A";
  22.            } else if (_root.CPartA == "8") {
  23.                _root.CPartA = "9";
  24.            } else if (_root.CPartA == "7") {
  25.                _root.CPartA = "8";
  26.            } else if (_root.CPartA == "6") {
  27.                _root.CPartA = "7";
  28.            } else if (_root.CPartA == "5") {
  29.                _root.CPartA = "6";
  30.            } else if (_root.CPartA == "4") {
  31.                _root.CPartA = "5";
  32.            } else if (_root.CPartA == "3") {
  33.                _root.CPartA = "4";
  34.            } else if (_root.CPartA == "2") {
  35.                _root.CPartA = "3";
  36.            } else if (_root.CPartA == "1") {
  37.                _root.CPartA = "2";
  38.            } else if (_root.CPartA == "0") {
  39.                _root.CPartA = "1";
  40.            }
  41.        }
  42.        // Aumenta el segundo dígito.
  43.    } else if (_root.CPartB == "E") {
  44.        _root.CPartB = "F";
  45.    } else if (_root.CPartB == "D") {
  46.        _root.CPartB = "E";
  47.    } else if (_root.CPartB == "C") {
  48.        _root.CPartB = "D";
  49.    } else if (_root.CPartB == "B") {
  50.        _root.CPartB = "C";
  51.    } else if (_root.CPartB == "A") {
  52.        _root.CPartB = "B";
  53.    } else if (_root.CPartB == "9") {
  54.        _root.CPartB = "A";
  55.    } else if (_root.CPartB == "8") {
  56.        _root.CPartB = "9";
  57.    } else if (_root.CPartB == "7") {
  58.        _root.CPartB = "8";
  59.    } else if (_root.CPartB == "6") {
  60.        _root.CPartB = "7";
  61.    } else if (_root.CPartB == "5") {
  62.        _root.CPartB = "6";
  63.    } else if (_root.CPartB == "4") {
  64.        _root.CPartB = "5";
  65.    } else if (_root.CPartB == "3") {
  66.        _root.CPartB = "4";
  67.    } else if (_root.CPartB == "2") {
  68.        _root.CPartB = "3";
  69.    } else if (_root.CPartB == "1") {
  70.        _root.CPartB = "2";
  71.    } else if (_root.CPartB == "0") {
  72.        _root.CPartB = "1";
  73.    }
  74.    _root.Fondo = _root.Fondo.substring( 0, 4) + _root.CPartA + _root.CPartB;
  75.    ColF = new Color(_root.Fondoimg);
  76.    ColF.setRGB(parseInt(_root.Fondo, 16));
  77. }
184  Foros Generales / Foro Libre / Re: ¿Puede GPT programar más rápido que tú o incluso cosas que no sabes? en: 19 Noviembre 2024, 01:33 am
Hice el tema porque estaba sorprendido de GPT y pensé que ya es como una especie de oráculo o gurú al que se puede preguntar cosas, pero no pregunté aquí en serio sobre Dios, ni voy a hablar de eso. Sólo que en el Budismo, por ejemplo, el "dios" viene a ser Buda, es decir un ser que existió, supuestamente, y que no hizo algo sobrenatural, que yo sepa, más allá de alcanzar el supuesto nirvana, la iluminación o no sé bien qué. Lo que tiene de sobrenatural el budismo es que creen en la reencarnación. También tengo más o menos entendido que hay religiones que adoraban al Sol, o al mar.
185  Foros Generales / Foro Libre / ¿Puede GPT programar más rápido que tú o incluso cosas que no sabes? en: 18 Noviembre 2024, 14:40 pm
En mi caso sí. Pareciera entonces que programar fuese una pavadita, que cualquiera puede hacer, porque a ver, no soy experto pero hace años que le doy al asunto. O es que en una escala del 1 al 5, yo estoy en LV2 y GPT en 4 o 3 y la diferencia se nota mucho. Pero hay otras cosas que no hace tan bien, al menos aún, no es Dios ¿pero cómo hace el tipo para programar tan bien siendo un "cacharro", una máquina? ¿deberé volverme GPTólico? ¿surgirá una nueva religión?
186  Programación / Programación General / ¿Se puede evitar estos ifs, cómo? en: 18 Noviembre 2024, 05:37 am
El código es largo como para ponerlo todo, cualquier cosa pregunten:
Código
  1. } else if (MinCuadraditoPintado < CuadraditoCentraloCD) {
  2. // El dibujo puede ser simétrico...
  3. // a otro ya mostrado. ¿Lo es?
  4. // Esto puede cambiar:
  5. DibujoEsSimetrico = "No";
  6. // Captar valor (colores) de cada fila;
  7. // si alguno es menor al inverso, sí:
  8. PunteroDeFilas = 0;
  9. do {
  10. PunteroDeFilas++;
  11. PunteroDeColumnas = 0;
  12. PunteroInverso = CuadraditosPorFila;
  13. do {
  14. PunteroDeColumnas++;
  15. Valor = eval("Cuadradito"+PunteroDeFilas+"_"+PunteroDeColumnas);
  16. ValorInverso = eval("Cuadradito"+PunteroDeFilas+"_"+PunteroInverso);
  17. // trace("Valor: "+Valor);
  18. // trace("ValorInverso: "+ValorInverso);
  19. if (Valor < ValorInverso) {
  20. DibujoEsSimetrico = "Sí";
  21. FilaFallada = PunteroDeFilas;
  22. PunteroDeFilas = CuadraditosPorFila;
  23. break;
  24. } else if (Valor > ValorInverso) {
  25. // Es ok:
  26. PunteroDeFilas = CuadraditosPorFila;
  27. break;
  28. }
  29. PunteroInverso--;
  30. } while (PunteroDeColumnas < CuadraditosPorFila);
  31. } while (PunteroDeFilas < CuadraditosPorFila);
  32. // Este if es probablemente innecesario,
  33. // porque se supone que el dibujo será simétrico u ok,
  34. // antes de que se terminen de comparar todas las filas.
  35. if (DibujoEsSimetrico == "Sí") {
  36. // trace ("  El dibujo es simétrico a otro ya mostrado.");
  37. DibujosSimetricos++;
  38. // Al Puntero ponerlo al final de la fila...
  39. // captada como simétrica, para posiblemente...
  40. // evitar algunos otros dibujos simétricos:
  41. Puntero = CuadraditosPorFila*FilaFallada;
  42. Variar();
  43. } else if (CuadraditosDespintados < MinCuadraditosDespintados) {
  44. trace ("  El dibujo tiene demasiados cuadraditos pintados: "+CuadraditosDespintados);
  45. DibujosDensos++;
  46. // Preparar Puntero para generar el próximo dibujo:
  47. Puntero = MaxPosiciondePuntero;
  48. Variar();
  49. } else {
  50. DibujosOk++;
  51. // trace ("  Mostrando dibujo nro: "+DibujosOk);
  52. // Preparar Puntero para generar el próximo dibujo:
  53. Puntero = MaxPosiciondePuntero;
  54. play ();
  55. }
  56. } else if (CuadraditosDespintados < MinCuadraditosDespintados) {
  57. trace ("  El dibujo tiene demasiados cuadraditos pintados: "+CuadraditosDespintados);
  58. DibujosDensos++;
  59. // Preparar Puntero para generar el próximo dibujo:
  60. Puntero = MaxPosiciondePuntero;
  61. Variar();
  62. } else {
  63. DibujosOk++;
  64. // trace ("  Mostrando dibujo nro: "+DibujosOk);
  65. // Preparar Puntero para generar el próximo dibujo:
  66. Puntero = MaxPosiciondePuntero;
  67. play ();
  68. }
  69.  

En resumen:
Código:
sino si el dibujo puede ser simétrico
   averiguar si lo es, iniciando un while
      iniciar otro while, también necesario
         si se capta simetría
            terminar los while
         sino si se capta que no hay simetría
            terminar los while
      fin del while
   fin del while
   Si se captó simetría
      hacer A
   sino si es denso
      hacer B
   sino
      hacer C
sino si es denso
   hacer B
sino
   hacer C

Veo 2 problemas:
- Ifs fuera del while, que se cumplen del mismo modo que los de dentro, sin que vaya a haber cambios en el proceso.
- Código repetido.

En cuanto al 1er punto:
El código es parte de la función Variar, que se autollama en los casos A y B, así que los while deberían terminar antes de que se autollame, por eso no puedo hacer A dentro del while como correspondería.

El código repetido se podría evitar si se analiza siempre la simetría (quitar el else if inicial), pero no parece buena idea sabiendo que será necesario sólo a partir de cierto punto (el código se repite así que tampoco es que haya un punto fijo, sólo hay condiciones fijas).

No sé. Lo de simetría, por las dudas, no se refiere a si el dibujo es capicúa, sino que, al ser invertido (espejo | ) es igual a un dibujo hecho antes.

Es un programa que genera dibujos en blanco y negro siguiendo cierto órden.


Me gustaría poner un ejemplo más simple sobre esta estructura de código... A ver:
Código:
Si hace calor
   usar gorro
sino si el cielo está nublado
   averiguar si está lloviendo, iniciando un while
      iniciar otro while, también necesario
         si se capta lluvia
            terminar los while
         sino si se capta que no llueve
            terminar los while
      fin del while
   fin del while
   Si se captó lluvia
      usar paraguas
   sino si hay terremoto
      no salir
   sino
      hacer lo normal
sino si hay terremoto
   no salir
sino
   hacer lo normal
No es muy parecido porque no hay autollamadas. ¿Ese es el problema, debería evitarlas? Puedo poner un while al principio supongo... Repetir mientras el dibujo generado no sea ok. Probaré. ¿Alguna otra idea o sugerencia?

¿Y el código repetido cómo lo hago más eficiente?
187  Foros Generales / Sugerencias y dudas sobre el Foro / Re: ¿Editar un tema lo vuelve a temas activos? en: 18 Noviembre 2024, 02:48 am
Acabo de modificar un tema y no se reactivó, o sea, estaba en 3er lugar porque otros posts fueron más recientes, y tras mi modificación siguió en el mismo lugar.
188  Media / Multimedia / Re: Duración de textos en un video ¿qué estoy haciendo mal? en: 17 Noviembre 2024, 17:16 pm
Ya entendí... En el lapso en que se movía por 2nda vez, tenía 2 objetos aumentando la velocidad, en vez de tener 1... Son objetos a los que no los hago visibles y quizá por andar copiando y pegando textos lo copié sin querer y quedaron 2... Aún no lo solucioné pero teniendo en cuenta esto supongo que ya está, fin del misterio, no tenía sentido, había probado poner la misma fuente y tamaño, variar la forma de calcular y el error seguía.

189  Sistemas Operativos / Windows / Re: no puedo acceder a varias carpetas del pc en: 17 Noviembre 2024, 17:15 pm
¿Abrir el ordenador? ¿te refieres a acceder a él desde otro aparato? Yo lo que sé es que el mío cuando lo enciendo, si no muevo el mouse enseguida luego no se mueve, así que puede estar relacionado, no debería suceder, pero el truco sería no dejar encendido en vano el PC, y de paso te ahorras algo de corriente.
190  Programación / Programación General / Simulación de choques desde atrás. en: 17 Noviembre 2024, 07:53 am
Barriles aparecen desde la izquierda, moviéndose a la derecha. Quiero que en vez de poder ocupar el mismo espacio (es un mundo 2d, los barriles están acostados y se ve su parte circular, como si fuese una rueda) y que uno pase al otro como si nada, se choquen, y que el de atrás pierda velocidad ¿se detenga? y el otro gane ¿lo mismo que la otra perdió? Pregunto porque no sé cómo sería más realista.

El principal problema que tengo es quizá por no saber Física. Se me ocurre algo así:
Se mueve el barril que está más a la izquierda.
luego el siguiente, y así sucesivamente hasta el más derecho.
Luego se va mirando desde la izquierda, a ver si quedó tocando a uno de delante, en cuyo caso el de atrás pierde velocidad y el de delante gana.
El problema es que a altas velocidades puede ocurrir algo así:
O sea, son 2 momentos distintos. En el 1ero, arriba, no se chocaron.
Abajo, se movieron, como indiqué, pero el de más izquierda se movía mucho más rápido que el del medio, que era más rápido que la derecha, así que quedaron tocándose los 3. Si en el programa pongo que I se detenga por tocar a M, y M se detenga por tocar a D, entonces I y M van a quedarse tocando y quietos, lo cual no es físicamente posible, sería que estén ocupando el mismo espacio.

¿Cómo lo hago bien?
Páginas: 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines