|
221
|
Programación / Programación General / ¿Cómo generar passwords rápido? Flash es muy lento y mi PC creo que no resiste.
|
en: 22 Noviembre 2024, 04:21 am
|
Si pongo un while probablemente se tranque porque tarda mucho, y si pongo que el código se ejecute en cada frame es muy lento, pero aunque se me acaba de ocurrir que se ejecute más de 1 vez por frame, el otro problema es que mi PC no creo que pueda seguir ejecutando ese programa, si el texto generado es mucho.
Conozco estas formas de generarlo:
A- En traces, que son como prints. Ya vi que entre más haya, más se enlentece.
B- En un cuadro de texto. Dudo que sea mejor.
C- En variables, un password por cada variable (P1 = "Aaaa", P2 = ... etc). Idem. Luego copiaría las variables, sustituiría = por tab, lo pegaría en Excel y quedarían los contenidos de las variables listos para copiar, separados de sus nombres y del =.
D- En 1 variable, poniendo salto de línea. Podría ser mejor que lo anterior, pero que los traces no sé.
Arrays, guardar en archivos, en fin, como sea, creo que Flash es muy lento para esto. Pensé eb Excel ¿será muy lento? ¿qué programa recomiendan, que permita copiar los passwords o genere un archivo de ellos? Quiero que se generen por mi código, aclaro, ya lo tengo, tendría que conviertirlo al lenguaje que me recomienden ¿cual? ¿y cómo lo uso?
Otra aclaración, aunque en el fondo no sirve: Es para averiguar un password que olvidé, de un archivo mío, o de varios míos, con passwords que olvidé (no sé si tienen el mismo password o se diferencian en 1 caracter).
|
|
|
223
|
Foros Generales / Foro Libre / ¿Qué programa te gustaría que yo haga? Gratis y te doy el editable.
|
en: 19 Noviembre 2024, 23:28 pm
|
No me pidan cosas complicadísimas, que no sé tanto.
Tampoco cosas que claramente son no éticas (aunque la mayoría está descartada por lo anterior).
Sería en Macromedia Flash 5.
Te doy el exe.
Un swf que lo puedes abrir con el reproductor que viene con el editor Flash. Los reproductores que se descargaban sueltos, para Youtube y similares, no sé si sirven. Por lo que sé, los swf son menos peligrosos, los exes pueden crear/modificar archivos, los swf no he visto que puedan (aunque es probable).
Y te doy el fla, el archivo editable, que lo puedes abrir con el editor Flash.
Si por algún motivo cierran el tema, me pueden enviar un mensaje privado.
Simplemente para practicar y ver qué quiere la gente. Por ahora lo que me pidieron fue: - Algo para ganar en juegos de azar. Complicado y no ético. - Un programa que diga si otro termina o no. Dicen que es imposible en ciertos casos, que hay paradojas.
Cosas que he visto en este foro: A- Ganar dinero, objetos, etc, sin esfuerzo. B- Ubicar a supuesto acosador, estafador o hacker. C- Robar cuenta del amigo porque no le dice cómo hacer trampa en juego, por ejemplo. D- Aparente virus, de broma. E- Recuperar cuenta que el servicio se niega a dar.
A: No sé, además esfuérzate y merécelo, o juegoa algún juego donde a nadie le importe si haces trampa. B: Tampoco sé, además no se sabe si la historia es verídica, y no es el acosador quien pide ubicar a la persona. C: Idem, y busca mejores amigos/juegos. D: Prefiero algo útil, pero podría intentar. Igual ya hay, mejor que busquen por ahí. E: No sé, y es similar a B.
En cuanto a que el problema es que sea en Flash, ni idea, es como que te ofrezcan una silla hecha a martillazo común y con una madera que la pueden comer las hormigas, por poner un ejemplo. ¿Qué importa si fue hecha con un martillo común o uno eléctrico y taladro y demás? Importa que funcione. En cuanto a los peligros por madera de mala calidad, no la lleves donde haya hormigas y listo. Son juegos offline, no sé online, no usan Internet, así que si te pueden hackear alguno no es problema del juego sino que el hacker ese tiene mucho nivel, es como que te pueda hackear el buscaminas...
Ah, sí, puede que pida ayuda a una IA o a gente, claro.
|
|
|
224
|
Programación / Programación General / Re: Simulación de choques desde atrás.
|
en: 19 Noviembre 2024, 16:28 pm
|
A la izquierda se notan problemas a medida que avanza el juego, pero más allá de eso se volvió más aburrido, es como que sólo se mueve un barril a la vez :/ ¿Así es realista o hice algo mal? https://youtu.be/Ouy3ysDW6L0function MoveBarriles () { // Empieza desde 2 porque el 1 no existe, porque cada objeto tiene una "profundidad" que determina cual aparece delante/atrás y se basa en el número del barril, para más facilidad, pero el número 1 está reservado para el personaje. Moved = 1; do { Moved++; // I es un objeto donde van las imágenes, es útil para eliminarlas todas a la vez, por ejemplo. BarrilaMover = "I.Barril"+Moved; BarrilSpeed = BarrilaMover+"Speed"; EvaluedBarrilSpeed = eval(BarrilSpeed); // Aplicar rozamiento: if (EvaluedBarrilSpeed > 0) { EvaluedBarrilSpeed = EvaluedBarrilSpeed/1.0025; if (EvaluedBarrilSpeed < 0.05) { EvaluedBarrilSpeed = 0; } set(BarrilSpeed, EvaluedBarrilSpeed); } setProperty (BarrilaMover, _x, getProperty(BarrilaMover, _x)+EvaluedBarrilSpeed); // Resumen: Res = BarrilaMover+".Part"; // El barril no se gira sino que se gira una parte suya, porque como no es redondo no se ve bien cuando se gira. Lo copié de un juego y lo quiero así a pesar de sus defectos. setProperty (Res, _rotation, getProperty(Res, _rotation)+EvaluedBarrilSpeed*2); // Si tocan al personaje y él se está moviendo: if (I.Player.hitTest(eval(BarrilaMover)) == true && I.Player.Action == "Walking") { // Game over: gotoAndStop (3); break; } else { // Ver si tocó al barril anterior, que está delante: BarrilAnterior = "I.Barril"+(Moved-1); if (eval(BarrilaMover).hitTest(eval(BarrilAnterior)) == true) { // Pasarle la velocidad: set(BarrilAnterior+"Speed", eval(BarrilAnterior+"Speed")+EvaluedBarrilSpeed); // Quedar sin velocidad: set(BarrilSpeed, 0); } } } while (Moved<Barriles); }
Si hay algo del código que no entiendan pueden preguntar.
|
|
|
226
|
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: // Barril se movió. // Si toca al personaje: if (I.Player.hitTest(eval(BarrilaMover)) == true) { // Si él se está moviendo: if (I.Player.Action == "Walking") { // Game over: gotoAndStop (3); }
...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: // Barril se movió. // Si toca al personaje: if (I.Player.hitTest(eval(BarrilaMover)) == true) { // Si él se está moviendo: if (I.Player.Action == "Walking") { // Game over: gotoAndStop (3); } else { // Ver si toca otro barril. } } else { // Ver si toca otro barril. }
No quiero ver eso y luego ver si hay game over, porque si hay game over no tiene sentido que se haga eso xP
|
|
|
227
|
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: function ConvertirHexEnDec (Hexadecimal) { return parseInt(Hexadecimal, 16); } function ConvertirDecEnHex (Decimal) { Hexadecimal = Decimal.toString(16).toUpperCase(); if (Hexadecimal.length == 1) { Hexadecimal = "0"+Hexadecimal; } return Hexadecimal; } function ActualizarColorDelFondo () { // Formar el color: ColorDelFondo = Rojo+Verde+Azul; // Actualizar el color del objeto: ColorDelObjetoFondo.setRGB(parseInt(ColorDelFondo, 16)); }
Y por ejemplo el botón azul de +1: on (release) { // Del color obtener la parte a modificar: Azul = ColorDelFondo.substr(4, 2); // Convertirla en decimal: Azul = ConvertirHexEnDec(Azul); // Se aumenta 1 a esa parte y si supera 255 queda en 255: Azul = Math.min(Azul+1, 255); // Convertirlo en hexadecimal: Azul = ConvertirDecEnHex(Azul); // Obtener las otras partes: Rojo = ColorDelFondo.substr(0, 2); Verde = ColorDelFondo.substr(2, 2); ActualizarColorDelFondo () }
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á: on (release) { _root.CFModo = 0; _root.CPartB = _root.Fondo.substring( 5, 6 ); _root.CPartA = _root.Fondo.substring(4, 5); if (_root.CPartB == "F") { // Aumenta el primer dígito. if (_root.CPartA == "F") { } else { _root.CPartB = "0"; if (_root.CPartA == "E") { _root.CPartA = "F"; } else if (_root.CPartA == "D") { _root.CPartA = "E"; } else if (_root.CPartA == "C") { _root.CPartA = "D"; } else if (_root.CPartA == "B") { _root.CPartA = "C"; } else if (_root.CPartA == "A") { _root.CPartA = "B"; } else if (_root.CPartA == "9") { _root.CPartA = "A"; } else if (_root.CPartA == "8") { _root.CPartA = "9"; } else if (_root.CPartA == "7") { _root.CPartA = "8"; } else if (_root.CPartA == "6") { _root.CPartA = "7"; } else if (_root.CPartA == "5") { _root.CPartA = "6"; } else if (_root.CPartA == "4") { _root.CPartA = "5"; } else if (_root.CPartA == "3") { _root.CPartA = "4"; } else if (_root.CPartA == "2") { _root.CPartA = "3"; } else if (_root.CPartA == "1") { _root.CPartA = "2"; } else if (_root.CPartA == "0") { _root.CPartA = "1"; } } // Aumenta el segundo dígito. } else if (_root.CPartB == "E") { _root.CPartB = "F"; } else if (_root.CPartB == "D") { _root.CPartB = "E"; } else if (_root.CPartB == "C") { _root.CPartB = "D"; } else if (_root.CPartB == "B") { _root.CPartB = "C"; } else if (_root.CPartB == "A") { _root.CPartB = "B"; } else if (_root.CPartB == "9") { _root.CPartB = "A"; } else if (_root.CPartB == "8") { _root.CPartB = "9"; } else if (_root.CPartB == "7") { _root.CPartB = "8"; } else if (_root.CPartB == "6") { _root.CPartB = "7"; } else if (_root.CPartB == "5") { _root.CPartB = "6"; } else if (_root.CPartB == "4") { _root.CPartB = "5"; } else if (_root.CPartB == "3") { _root.CPartB = "4"; } else if (_root.CPartB == "2") { _root.CPartB = "3"; } else if (_root.CPartB == "1") { _root.CPartB = "2"; } else if (_root.CPartB == "0") { _root.CPartB = "1"; } _root.Fondo = _root.Fondo.substring( 0, 4) + _root.CPartA + _root.CPartB; ColF = new Color(_root.Fondoimg); ColF.setRGB(parseInt(_root.Fondo, 16)); }
|
|
|
228
|
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.
|
|
|
229
|
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?
|
|
|
230
|
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: } else if (MinCuadraditoPintado < CuadraditoCentraloCD) { // El dibujo puede ser simétrico... // a otro ya mostrado. ¿Lo es? // Esto puede cambiar: DibujoEsSimetrico = "No"; // Captar valor (colores) de cada fila; // si alguno es menor al inverso, sí: PunteroDeFilas = 0; do { PunteroDeFilas++; PunteroDeColumnas = 0; PunteroInverso = CuadraditosPorFila; do { PunteroDeColumnas++; Valor = eval("Cuadradito"+PunteroDeFilas+"_"+PunteroDeColumnas); ValorInverso = eval("Cuadradito"+PunteroDeFilas+"_"+PunteroInverso); // trace("Valor: "+Valor); // trace("ValorInverso: "+ValorInverso); if (Valor < ValorInverso) { DibujoEsSimetrico = "Sí"; FilaFallada = PunteroDeFilas; PunteroDeFilas = CuadraditosPorFila; break; } else if (Valor > ValorInverso) { // Es ok: PunteroDeFilas = CuadraditosPorFila; break; } PunteroInverso--; } while (PunteroDeColumnas < CuadraditosPorFila); } while (PunteroDeFilas < CuadraditosPorFila); // Este if es probablemente innecesario, // porque se supone que el dibujo será simétrico u ok, // antes de que se terminen de comparar todas las filas. if (DibujoEsSimetrico == "Sí") { // trace (" El dibujo es simétrico a otro ya mostrado."); DibujosSimetricos++; // Al Puntero ponerlo al final de la fila... // captada como simétrica, para posiblemente... // evitar algunos otros dibujos simétricos: Puntero = CuadraditosPorFila*FilaFallada; Variar(); } else if (CuadraditosDespintados < MinCuadraditosDespintados) { trace (" El dibujo tiene demasiados cuadraditos pintados: "+CuadraditosDespintados); DibujosDensos++; // Preparar Puntero para generar el próximo dibujo: Puntero = MaxPosiciondePuntero; Variar(); } else { DibujosOk++; // trace (" Mostrando dibujo nro: "+DibujosOk); // Preparar Puntero para generar el próximo dibujo: Puntero = MaxPosiciondePuntero; play (); } } else if (CuadraditosDespintados < MinCuadraditosDespintados) { trace (" El dibujo tiene demasiados cuadraditos pintados: "+CuadraditosDespintados); DibujosDensos++; // Preparar Puntero para generar el próximo dibujo: Puntero = MaxPosiciondePuntero; Variar(); } else { DibujosOk++; // trace (" Mostrando dibujo nro: "+DibujosOk); // Preparar Puntero para generar el próximo dibujo: Puntero = MaxPosiciondePuntero; play (); }
En resumen: 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: 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?
|
|
|
|
|
|
|