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


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 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 35 36 37 38 39 40 ... 238
241  Informática / Software / Re: Programa edición imagenes texto editable en: 27 Septiembre 2024, 03:36 am
Me refería a si lo creas en Flash, ahí los textos quedan separados del resto, luego los puedes modificar cada vez que quieras. En este video no grabé el puntero del mouse pero como puedes ver son textos que están hechos por mí desde antes y aquí los edito:
https://youtu.be/7cXCMTkKhNw

Repito, el programa se llama Flash, pero no lo confundas con el reproductor, esto es un editor. Hace poco un usuario lo buscaba y le dieron un link, debe estar en la sección Software, Multimedia o diseño gráfico, el nombre del usuario es una carita con las manos levantadas.
242  Media / Juegos y Consolas / ¿Cuales son las acciones realizables en los videojuegos que implican un desafío? en: 26 Septiembre 2024, 05:27 am
O una buena forma de clasificarlas, pero si me preguntan "¿Buenas en qué sentido?" no sé responder.

Quiero digamos inventar videojuegos, ver qué videojuegos son posibles de hacer, para lo cual considero que necesito bases, es decir puntos a partir de los cuales avanzar.

Según he pensado, los juegos más simples son estos 3:
1: Ganas cuando mueves el mouse.
2: Ganas cuando haces un clic.
3: Ganas cuando presionas una tecla.
Pero eso quiero que tenga un sentido, visual, que se gane porque esa acción genera un cambio en la situación que se muestra en la pantalla; lo que hace el usuario a la máquina debe reflejarse en algo visible, el juego no debe ser una pantalla vacía de no ser por un texto que diga "Mueve el mouse".

He aquí una lista de acciones, díganme más:
- Dar una señal (lanzar una bengala, levantar una mano, etc).
- Acomodar/desacomodar una mira, un aparato, etc (para que sirve/falle en el futuro).
- Sacudirse para descongelarse o quitarse un líquido o algo similar a tierra, especialmente un animal con pelo o plumas.
- Golpearse, lanzarse al agua o revolcarse en el suelo para quitarse fuego, hormigas o cosa similar.
- Lanzarse hacia un animal para cazarlo, un león, halcón, etc.
- Disparar o lanzar algo.
- Esquivar/bloquear algo lanzado hacia algún sitio (hacia el personaje, o un aliado o algo que debe proteger).
- Espiar/camuflarse/esconderse/cubrirse/revelarse, un camaleón, periodista, etc.
- Caminar, correr, saltar, trepar, bajar, cavar, deslizarse (como serpiente o con patines, etc), flotar, volar, teletransportarse, viajar en el tiempo, cambiar de posición bajo el agua o en el espacio...
- Respirar o dejar de respirar.
- Modificar clima, suelo, hora del día, atraer/alejar el Sol o la Luna, provocar un eclipse, atraer/alejar meteoritos, causar/detener una lluvia de ballenas/algo, causar/detener una avalancha o catarata de algo...
- Causar/evitar dolor mental (tipo el profesor de X Men).
- Modificar algo de la mente de alguien, o evitar que se modifique. Un recuerdo, deseos, la capacidad de pensar o recordar.
- Hablar/callar/escuchar.
- Leer, escribir, borrar, pintar, rayar, calcar.
- Fotografiar/filmar/photoshopear.
- Encender/apagar.
- Ingerir/ayunar.
- Dispersar semillas, algún polvo, etc, o evitarlo.
- Plantar/enterrar/desenterrar.
- Dar/poner/soltar/agarrar.
- Atar/desatar.
- Limpiar/ensuciar.
- Agregar/construir/reparar/desarmar/triturar/eliminar.
- Empujar/jalar/levantar.
- Afilar/rajar/cortar/partir.
- Cargar/descargar.
- Bailar, quedar quieto como estatua.
- Cambiarse ropa, armadura, adornos, peinado, etc.
- Curar/inyectar/infectar/envenenar/drogar.
- Sugerir/votar/inducir/forzar.
- Pagar/intercambiar/prestar/devolver/ofrecer.
- Iluminar/cegar/oscurecer.
- Golpear/rendirse.
- Agacharse/levantarse/sentarse/acostarse.
- Señarlar.
- Abrir/cerrar algo.
- Programar/instalar/hackear.
- Informar/teorizar/mentir.
- Debatir/interrogar/consultar/insultar.
- Dudar/concluir/creer.
- Acelerar/frenar/chocar.
- Girar/desgirar.
- Calentar/enfriar.
- Agujerear/rellenar/vaciar.
- Juntar/separar.
- Acusar/perseguir/insistir/ignorar.
- Apretar/desapretar.
- Ventilar/encerrar/humear.
- Producir sonidos/silenciar.
- Apurar/esperar/rezar/meditar.
- Inflar/pinchar.
- Doblar/desdoblar.
- Expresar emociones con el rostro (sonreír, fruncir el ceño, etc).
- Traducir/interpretar/tergiversar.
- Rimar/remar xP
- Percibir aromas, frío, etc.
- Planificar/organizar una acción o evento.
- Hacer una trampa/desactivar una trampa.
- Aumentar/dismunuir la gravedad
- Aumentar/disminuir la presión atmosférica (no sé qué hace).
- Cambiar la composición del aire, hacer respirable o no un entorno.
- Emparejar/reproducirse.
- Entrenar/ejercitarse/descansar.
- Picar, succionar, y ese tipo de ataques.
- Contar, calcular.
- Despegar/aterrizar.
- Transformarse o cambiar de color o algo, como los Transformers o los que se vuelven intangibles.
- Transmutar algo.
- Mejorar o perjudicar una armadura, aparato, etc.

Le di la lista a GPT y antes de pedirle que agregue elementos (la mayoría los pensé yo, que conste) le pedí que los ordene mejor. Los clasificó así:
- Movimiento Físico
- Acciones Básicas
- Manipulación de Objetos
- Comunicación
- Sensaciones y Percepción
- Acciones Estratégicas o Especiales
- Interacciones con el Entorno
- Interacciones Corporales
...
No me convence. Pensé en clasificarlas según profesiones ¿otras ideas?
243  Informática / Software / Re: Programa edición imagenes texto editable en: 26 Septiembre 2024, 00:18 am
Flash, además puedes hacer que los textos tengan borde de otro color (aunque no existe la opción directamente, debes hacer varios copy paste y movimientos), transparencia, animación...

Que sea el editor Flash, no Flash Player.
244  Programación / Scripting / Re: script para rellenar en una columna los blancos teniendo en cuenta el primer dato rellenado en excel en: 25 Septiembre 2024, 10:54 am
¿Es necesario que uses ese estilo?

No entiendo qué quieres hacer pero si es que unas celdas queden con cierto dato, crea una celda especial que contenga ese dato y a las que quieras que tengan ese dato ponles =(coordenadas de la celda), presiona F4 y copia eso a todas las celdas que quieras.
245  Programación / Programación General / Lograr que un dibujo tenga X colores de forma más eficiente. en: 25 Septiembre 2024, 09:02 am
El programa genera dibujos al azar y cada uno debe tener cierta cantidad de colores, ejemplo 3:

El verde no es parte de los dibujos, es para separarlos.

Básicamente lo he logrado así (este código lo tiene un objeto que es agregado repetidamente en ciertas posiciones como se ve en la imagen, cada cuadrado separado con verde sería un objeto; cuadraditos es lo que tiene ese objeto, no es lo mismo):
Código
  1. // Agregar, distribuir cuadraditos y asignarles un color,
  2. // pero la cantidad de diferentes colores debe ser...
  3. // la indicada por _level0.ColoresRequeridos,
  4. // así que se guardan en una lista y...
  5. // se reasignarán si son menos de lo requerido.
  6. CuadraditosColocados = 0;
  7. Columna = 0;
  8. Fila = 0;
  9. Colores = 0;
  10. trace ("Asignando colores para un nuevo dibujo");
  11. do {
  12. CuadraditosColocados = CuadraditosColocados+1;
  13. attachMovie("mCuadradito", "Cuadradito"+CuadraditosColocados, CuadraditosColocados);
  14. setProperty ("Cuadradito"+CuadraditosColocados, _x, Columna*_level0.LargoDeCuadraditos);
  15. setProperty ("Cuadradito"+CuadraditosColocados, _y, Fila*_level0.LargoDeCuadraditos);
  16. setProperty ("Cuadradito"+CuadraditosColocados, _width, _level0.LargoDeCuadraditos);
  17. setProperty ("Cuadradito"+CuadraditosColocados, _height, _level0.LargoDeCuadraditos);
  18. ColorDeCuadradito = new Color("Cuadradito"+CuadraditosColocados);
  19. ColorDeCuadradito.setRGB(_level0.PosiblesColores[random(_level0.PosiblesColores.length)]);
  20. // Si el dibujo no tenía los colores necesarios:
  21. if (Colores < _level0.ColoresRequeridos) {
  22. trace ("El dibujo probablemente aún no tiene los colores requeridos, tenía: "+Colores);
  23. trace ("Se colocó el cuadradito: "+CuadraditosColocados);
  24. trace ("Su color es: "+ColorDeCuadradito.getRGB());
  25. trace ("Se verá si es del mismo color que otro.");
  26. VerSiColorExisteEtc();
  27. }
  28. Columna = Columna+1;
  29. if (Columna == _level0.CuadraditosPorFila) {
  30. Columna = 0;
  31. Fila = Fila+1;
  32. }
  33. } while (CuadraditosColocados<_level0.MaxCuadradito);
  34. // Si es necesario, reasignar colores hasta lograr lo requerido:
  35. while (Colores < _level0.ColoresRequeridos) {
  36. trace ("Se asignó color a todos los cuadraditos pero la cantidad de colores del dibujo es sólo: "+Colores);
  37. trace ("Se volverán a asignar colores.");
  38. CuadraditoaRepintar = 0;
  39. Colores = 0;
  40. do {
  41. CuadraditoaRepintar++;
  42. ColorDeCuadradito = new Color("Cuadradito"+CuadraditoaRepintar);
  43. ColorDeCuadradito.setRGB(_level0.PosiblesColores[random(_level0.PosiblesColores.length)]);
  44. VerSiColorExisteEtc();
  45. } while (CuadraditoaRepintar<_level0.MaxCuadradito);
  46. }

La función mencionada es:
Código
  1. function VerSiColorExisteEtc () {
  2. // Esto puede cambiar:
  3. ColorDistinto = "Sí";
  4. PunteroDeColores = 0;
  5. while (PunteroDeColores < Colores) {
  6. PunteroDeColores++;
  7. trace ("Comparando con el color guardado en el lugar "+PunteroDeColores+": "+eval("ColorEnLista"+PunteroDeColores));
  8. if (ColorDeCuadradito.getRGB() == eval("ColorEnLista"+PunteroDeColores)) {
  9. trace ("Iguales, el color del cuadradito recién agregado ya estaba en la lista.");
  10. ColorDistinto = "No";
  11. // Para que no siga mirando la lista:
  12. PunteroDeColores = Colores;
  13. }
  14. }
  15. // Si el color no está en la lista:
  16. if (ColorDistinto == "Sí") {
  17. // Agregarlo:
  18. Colores++;
  19. set ("ColorEnLista"+Colores, ColorDeCuadradito.getRGB());
  20. // Esta función se usa en 2 lados distintos usando variables distintas,
  21. // por eso hay 2 traces:
  22. trace ("El cuadradito "+CuadraditosColocados+" fue el 1ero de un color no anotado: "+ColorDeCuadradito.getRGB());
  23. trace ("El cuadradito "+CuadraditoaRepintar+" fue el 1ero de un color no anotado: "+ColorDeCuadradito.getRGB());
  24. trace ("La cantidad de colores captada ahora es "+Colores);
  25. }
  26. }

¿Cómo simplificarían el código, si es posible?

El puro azar quiero que se conserve.

A lo que me refiero es que el código, en caso de que el dibujo generado no tenga la cantidad de colores adecuada, reasigna colores a tooodos los cuadraditos, lo cual es ineficiente.

Una alternativa a esa repetición es algo así:
Código:
Repetir mientras la cantidad de colores sea insuficiente:
   Modificar uno al azar
Pero eso asumo que puede tardar mucho en terminar en dibujos más grandes ¿no? Ahora no estoy muy seguro...

Otra alternativa es que se repinten hasta que haya la cantidad requerida de colores, con eso difícil que se necesiten repintar todos. El problema es que si se inicia a repintar desde el nro 1 se pierde el azar puro, porque empieza a resultar más probable que los 1eros colores sean de un color único. Y si se empieza a modificar desde uno al azar, también, porque resulta más probable que los de color único estén cerca.

Se me ocurre algo así:
Hacer una lista de los colores que faltan
Hacer una lista de los colores que sólo están 1 vez (únicos)
Código:
Repetir mientras la cantidad de colores sea insuficiente:
   Repetir
      Elegir un cuadradito al azar
   Mientras el color del elegido no sea uno de los únicos
   Al cuadradito elegido asignarle uno de los colores que faltan
}
Pero además de que puede ser complicado (y quiero terminar de una puñetera vez con esto), dudo que sea más eficiente, por eso de hacer las listas. Tendría que hacerlas cuando por 1era vez se asignan los colores... Para evitar crear otros loops. Ah, tengo un código similar que puedo adaptar.
En fin, la idea con eso es modificar sólo los cuadraditos necesarios, al azar, en vez de modificarlos todos o de color único (lo cual podría disminuir la cantidad). De este modo no se modifican los de color único. No creo que el azar puro se pierda con esto.

Lo intentaré y si lo termino lo publico (tardaré) ¿qué sugieren sobre todo esto?

Edit: Olvidé que ya en el código hacía una lista xD Más fácil entonces.

Edit2: Me líe intentando hacer el código así que hice un pseudocódigo ¿creen que está bien? Al final me desconcentré:
Código
  1. Hacer lista de colores faltantes y únicos.
  2. Ir asignando colores a los cuadraditos.
  3. Ver si el color elegido está en la lista de faltantes
  4. Si está
  5. Quitarlo de la lista de faltantes y Faltantes--
  6. sino
  7. Ver si el color elegido está en la lista de únicos
  8. Si está
  9. Quitarlo y Unicos--
  10. Repetir si aún hay faltantes
  11. Unico = "Sí"
  12. Repetir
  13. Elegir un cuadradito al azar
  14. Ver si su color está en la lista de únicos
  15. Si no está
  16. Unico = "No"
  17. mientras Unico == "Sí"
  18. Al elegido ponerle un color faltante y Faltante--
246  Foros Generales / Foro Libre / Re: ¿Cómo saber si un usuario de algún lado es un bot? en: 25 Septiembre 2024, 07:16 am
Tal vez también puede ser que te preguntan si vos usas ChatGPT porque en algún post que realmente lo usaste
El 1er usuario me preguntó si lo usé, prácticamente suponiendo que sí, y el 2ndo y el 3ero asumieron que sí. Quora es muy grande, dudo que hayamos interactuado antes, o yo al menos no los registro.

Citar
es porque dijiste en ese o esos posts que utilizas ese bot y eso ya genera la duda de que lo podes seguir usando.
Sí lo he usado pero en tales casos lo he dicho, por ejemplo luego de responder por mi cuenta en una ocasión dije luego "A ver qué dice GPT" y puse su respuesta, pero repito que esos usuarios y yo difícilmente nos hayamos cruzado antes, estamos hablando del post que puse al inicio de este tema. Además que me vieran usarlo (diciendo que lo uso) no debería llevarles a concluir que lo uso siempre, ni en este caso particular, si por ejemplo Overlord tiene 1 o 2 películas y yo no las mencioné porque no las vi. GPT no hubiera hablado de lo que vió. Además está mi comentario respondiéndole al 1ero que no usé GPT, detallando un poco más mi respuesta y diciendo por qué lo bloqueo, o sea, puede ser que no vieran eso, también, hacen todo mal >_<

Citar
tus preguntas tienen respuestas obvias, y esta que hacés ahora ya deberías saberla por el tiempo que usas los foros...

No tiene nada que ver que un usuario "supuestamente nuevo" te pregunte eso
No es nuevo, dije que lleva registrado desde hace 1 año, y el tipo sólo tenía 1 respuesta, mira ahora:

Sus 2 preguntas son sobre por qué uso GPT y respondió temas míos pero le borraron las respuestas o las borró él luego, de esas respuestas sólo quedó 1.
Lo que yo me preguntaba es por qué un tipo que estaba como en lo más profundo de una cueva, invisible, aparece para criticarme, no tiene mucha lógica ¿por qué esto le pareció tan importante? Pero creo que ya lo entendí. Tiene publicaciones, hay que tener eso en cuenta (Quora es para preguntar y responder pero también se puede poner información random o respuestas en ciertos "Espacios", similarmente a un foro), pero lo ocurrido puede tener que ver con esta pregunta mía:
"¿No sería bueno que Quora impida responder a los que no han hecho preguntas, especialmente si sus respuestas son sólo una imagen? Muy seguido me responden con una imagen propaganda no relacionada con mi pregunta, bloqueo a uno y aparece otro."
Probablemente el tipo, como no tenía preguntas, se ofendió o por decir "Ah, mira, ahora tengo preguntas", hizo esas 2 que ves en la imagen xD

Y bueno, teorías yo también tenía, como que eran amiguitos del 1ero y salieron de debajo de las piedras a defenderlo, pero aún así me parece absurdo, inmaduro como dijiste.

Citar
o te das cuenta de que ese usuario registrado puede ser alguien con otra cuenta?
¿Que si son todos distintos? Claro, es lo más probable.

Citar
No te das cuenta que ese usuario tal vez no tenga otra cuenta pero es un visitante de hace años?
Esta pregunta no sé cómo interpretarla. Puede que un mismo usuario tenga más de 1 cuenta, por ejemplo.


En fin... también todo esto podría explicar por qué me banearon de ciertos sitios o me cerraban temas en uno xD
247  Foros Generales / Foro Libre / Re: ¿Cómo saber si un usuario de algún lado es un bot? en: 24 Septiembre 2024, 06:24 am
Un tipo se puso a responder mis preguntas diciendo que uso GPT, y si ves su perfil se registró en 2023 y sólo tiene 2 respuestas porque le borraron las que me acaba de hacer, además hizo 2 temas preguntando por qué uso GPT, o sea ¿cómo alguien registrado el año pasado lo único que hizo en Quora además de publicar no sé qué cosas, fue preguntar por qué uso GPT y responder mis temas quejándose de que uso GPT?

Hay gente muy estúpida. Y si lees esto (que le di el link) tenelo claro: Las veces que usé GPT lo he dicho. No usé GPT para decir qué animes vi.


Imagina hacer algo para un trabajo o carrera y que el evaluador te descalifique por creer que usaste GPT, me parece preocupante, van a tener que crear unas reglas sobre cómo debe ser escrita tu tarea para que no haya malentendidos, pero los bots serán cada vez mejor imitando ¿qué va a pasar?
248  Programación / Programación General / Ayuda para usar arrays. en: 23 Septiembre 2024, 06:56 am
Quiero entender qué tiene sentido contar y qué no, en videojuegos, pongo una lista de ejemplo (X puede ser un objeto, enemigo, etc):
Citar
Distint@s X Aparecid@s
Distint@s X Adquirid@s
Distint@s X Adquirid@s desde la Izquierda
Distint@s X Adquirid@s desde la Derecha
Distint@s X Adquirid@s desde Abajo
Distint@s X Adquirid@s desde Arriba
X Contactad@s
Distint@s X Contactad@s
Distint@s X Contactad@s 1ero desde la Izquierda
Distint@s X Contactad@s 1ero desde la Derecha
Distint@s X Contactad@s 1ero desde Abajo
Distint@s X Contactad@s 1ero desde Arriba
Distint@s X Contactad@s sólo 1 vez
Distint@s X Contactad@s más de 1 vez
Distint@s X Contactad@s no desde la Izquierda
Distint@s X Contactad@s, desde la Izquierda sólo 1 vez
Distint@s X Contactad@s, desde la Izquierda más de 1 vez
Distint@s X Contactad@s no desde la Derecha
Distint@s X Contactad@s, desde la Derecha sólo 1 vez
Distint@s X Contactad@s, desde la Derecha más de 1 vez
Distint@s X Contactad@s no desde Abajo
Distint@s X Contactad@s, desde Abajo sólo 1 vez
Distint@s X Contactad@s, desde Abajo más de 1 vez
Distint@s X Contactad@s no desde Arriba
Distint@s X Contactad@s, desde Arriba sólo 1 vez
Distint@s X Contactad@s, desde Arriba más de 1 vez
Distint@s X Contactad@s sólo 1 vez, desde la Izq o Der
Distint@s X Contactad@s más de 1 vez desde la Izq o Der
Distint@s X Contactad@s alguna vez desde la Izq o Der
Se va poniendo cada vez más confuso, algunas cosas resultado de operaciones matemáticas a partir de cosas anteriores, y algunas cosas parecen tener doble interpretación, por ejemplo:
Distint@s X Contactad@s sólo 1 vez, desde la Izq o Der
Con la , no, sólo hay 1 interpretación: Debe haber sido contactado sólo 1 vez, y esa vez debe haber sido por la izquierda o derecha.
Pero es posible esto: Debe haber sido contactado sólo 1 vez por la izquierda o sólo 1 vez por la derecha, es decir, en el caso anterior si se contactó al objeto más de 1 vez entonces ese objeto no se cuenta, pero en el 2ndo caso si se contactó 1 vez por la izquierda o derecha, se cuenta, aunque por abajo o arriba haya sido contactado muchas veces, incluso puede haber sido contactado por la izquierda o derecha más de 1 vez, basta conque por 1 de esos 2 lados haya sido contactado sólo 1 vez.

En fin, ya que es tan confuso, decidí intentar que cuente cosas un programa, yo sólo le digo los eventos básicos. El orden de los eventos no me importa, excepto respecto a por ejemplo por dónde fue el 1er contacto y el último, o sea, no me importa cual fue el 2ndo, ni el 3ero, etc, no me interesa contar algo como "distintos objetos que al ser contactados por 2nda vez fue desde la izquierda".

En el ejemplo que estoy contando, X es escaleras, el personaje contactó 7 escaleras distintas, lo anoté así:
> 1: I3
> 2: D2
> 3: I
> 4: D, Ar, I2
> 5: Ar, I
> 6: D
> 7: I
Por ejemplo la 4 significa que se contactó 1ero por la derecha, luego por arriba, y al final por la izquierda, indicando que en algún otro momento también se contactó por la izquierda.

Serían 7 arrays.

Según he pensado, la mejor estructura que pueden tener es:
Lugar del 1er contacto, contactos desde la izquierda, derecha, arriba, lugar del útimo contacto
¿Me recomiendan otra manera?

No puse abajo porque el personaje no salta así que no contacta escaleras desde abajo de ellas.

Yo prácticamente no sé usar arrays, hago las cosas con "variables sueltas", pero esta vez decidí intentarlo.

Pondría:
Escalera1 = "I", 3, 0, 0, "I"
Escalera2 = "D", 0, 2, 0, "D"
Escalera3 = "I", 0, 0, 0, "I"
Escalera4 = "D", 2, 1, 1, "I"
Escalera5 = "Ar", 1, 0, 1, "I"
Escalera6 = "D", 0, 1, 0, "D"
Escalera7 = "I", 1, 0, 0, "I"

Si puse mal los datos, mala suerte, luego los reviso mejor. La cuestión es: ¿Puede un array tener texto y números? En Macromedia Flash 5, probaré, sino puedo sustituir I por 0, D por 1 y Ar por 2.

No me interesa mucho por ahora variar esos datos pero la idea es que el programa se base siempre en ellos, entonces si quiero contar Distintas contactadas 1ero desde la Izquierda (ah, lo de distintas es redundante a veces, olvidé eso, pero como me ayuda a no confundirme lo dejé), debo poner algo como:
Código:
PriI = 0
EscaleraaChequear = 0
Repetir
   EscaleraaChequear++
   Si 1era variable de eval("Escalera"+EscaleraaChequear) == "I"
      PriI++
mientras EscaleraaChequear < 7
¿no? ¿pero cómo es la condición de ese if específicamente? No sé mucho cómo hacer referencia a las partes de un array y menos si tengo que usar eval.
249  Programación / Programación General / Re: Contar tiempo en que se presionan teclas pero... en: 23 Septiembre 2024, 05:26 am
Esto también lo voy a dar por solucionado, me pareció que debía contar otras cosas, y decidí contarlas de a 1, es decir, contar distintos eventos en distintos momentos del programa, no todos los eventos a la vez, al menos por ahora. Sería largo explicar sobre eso así que termino acá.
250  Programación / Programación General / Re: Mostrar en pantalla números cada vez más largos, de todo tipo e intercalando. en: 23 Septiembre 2024, 05:16 am
Ya logré esto.
Código
  1. // Este programa produce números cada vez más largos,
  2. // intercalándolos según el tipo,
  3. // entre más decimales 1ero,
  4. // y secundariamente los negativos 1ero.
  5. //
  6. // El 0 aquí se refiere a la cantidad de decimales
  7. // (pero los números se guardan como enteros):
  8. LastPositivoDe0 = -1;
  9. // El programa tiene 5 etapas:
  10. // 1: Esta, donde sólo se definen cosas.
  11. // 2: Produce el 0 y números positivos de 0 decimales.
  12. // 3: Negativos y positivos, de 0 decimales.
  13. // 4: Positivos de 1, negativos y positivos de 0.
  14. // 5: Va creando 2 tipos de número.
  15. // Variables como esta determinan cuánto dura cada etapa,
  16. // o cuando se crean listas y sus máximos valores:
  17. MaxPositivoDe0 = 9;
  18. // Esto se repite en el frame 2:
  19. function Etapa2 () {
  20. // Producir el 0 o un número positivo:
  21. LastPositivoDe0++;
  22. trace (LastPositivoDe0);
  23. if (LastPositivoDe0 == MaxPositivoDe0) {
  24. // No hay más números de largo 1,
  25. // crear lista de negativos:
  26. LastNegativoDe0 = 0;
  27. // Indicar nuevos máximos:
  28. MaxPositivoDe0 = 99;
  29. MaxNegativoDe0 = -9;
  30. // Avanzar etapa:
  31. gotoAndStop (3);
  32. }
  33. }
  34. // Esto se repite en el frame 3:
  35. function Etapa3 () {
  36. // ¿Se puede producir un número negativo de largo 2?
  37. if (LastNegativoDe0>MaxNegativoDe0) {
  38. // Sí, producirlo:
  39. LastNegativoDe0--;
  40. trace (LastNegativoDe0);
  41. }
  42. // Positivo:
  43. LastPositivoDe0++;
  44. trace (LastPositivoDe0);
  45. if (LastPositivoDe0 == MaxPositivoDe0) {
  46. // No hay más números de largo 2.
  47. // crear lista de positivos de 1 decimal:
  48. LastPositivoDe1 = 0;
  49. // Indicar nuevos máximos:
  50. MaxPositivoDe0 = 999;
  51. MaxNegativoDe0 = -99;
  52. // Recuérdese que las listas de decimales...
  53. // son guardadas como enteros.
  54. MaxPositivoDe1 = 99;
  55. // Avanzar etapa:
  56. gotoAndStop (4);
  57. }
  58. }
  59. // Esto se repite en el frame 4:
  60. function Etapa4 () {
  61. // ¿Se pueda producir un número positivo de 1 decimal y largo 3?
  62. if (LastPositivoDe1<MaxPositivoDe1) {
  63. // Sí, producirlo:
  64. LastPositivoDe1++;
  65. // ¿Termina en 0?:
  66. Textualizado = String(LastPositivoDe1);
  67. LastChar = Textualizado.charat(Textualizado.length-1);
  68. if (LastChar == 0) {
  69. // Sí, ergo al convertirlo a decimales...
  70. // no tendrá largo 3, arreglarlo:
  71. LastPositivoDe1++;
  72. }
  73. Decimaleado = LastPositivoDe1/10;
  74. trace (Decimaleado);
  75. }
  76. // ¿Se puede producir un número negativo de largo 3?
  77. if (LastNegativoDe0>MaxNegativoDe0) {
  78. // Sí, producirlo:
  79. LastNegativoDe0--;
  80. trace (LastNegativoDe0);
  81. }
  82. // Positivo:
  83. LastPositivoDe0++;
  84. trace (LastPositivoDe0);
  85. if (LastPositivoDe0 == MaxPositivoDe0) {
  86. // No hay más números de largo 3,
  87. // crear nuevas listas:
  88. LastPositivoDe2 = 0;
  89. LastNegativoDe1 = 0;
  90. // Indicar nuevos máximos:
  91. MaxPositivoDe0 = 9999;
  92. MaxNegativoDe0 = -999;
  93. MaxPositivoDe1 = 999;
  94. MaxNegativoDe1 = -99;
  95. MaxPositivoDe2 = 999;
  96. // Para la siguiente etapa:
  97. MaxDecimales = 2;
  98. Decimales = 2;
  99. trace ("Inicia la 5");
  100. gotoAndStop (5);
  101. }
  102. }
  103. // Esto se repite en el frame 5:
  104. function Etapa5 () {
  105. // ¿Se puede producir un número positivo de X decimales y largo Y?
  106. // X = Decimales.
  107. Resumen = "LastPositivoDe"+Decimales;
  108. // trace("Resumen: "+Resumen);
  109. Evalued = eval(Resumen);
  110. // trace("Evalued: "+Evalued);
  111. if (Evalued<eval("MaxPositivoDe"+Decimales)) {
  112. // Sí, producirlo:
  113. Evalued++;
  114. // ¿Termina en 0?:
  115. Textualizado = String(Evalued);
  116. LastChar = Textualizado.charat(Textualizado.length-1);
  117. if (LastChar == 0) {
  118. // Sí, ergo al convertirlo a decimales...
  119. // no será del largo requerido, arreglarlo:
  120. Evalued++;
  121. }
  122. Decimaleado = Evalued/Math.pow(10, Decimales);
  123. trace (Decimaleado);
  124. // Guardarlo en la lista:
  125. set (Resumen, Evalued);
  126. }
  127. do {
  128. // Repetir mientras Decimales > 0:
  129. Decimales--;
  130. // ¿Se puede producir un número negativo de X decimales y largo Y?
  131. Resumen = "LastNegativoDe"+Decimales;
  132. // trace("Resumen: "+Resumen);
  133. Evalued = eval(Resumen);
  134. // trace("Evalued: "+Evalued);
  135. if (Evalued>eval("MaxNegativoDe"+Decimales)) {
  136. // Sí, producirlo:
  137. Evalued--;
  138. if (Decimales>0) {
  139. // ¿Termina en 0?:
  140. Textualizado = String(Evalued);
  141. LastChar = Textualizado.charat(Textualizado.length-1);
  142. if (LastChar == 0) {
  143. // Sí, ergo al convertirlo a decimales...
  144. // no será de largo Y, arreglarlo:
  145. Evalued--;
  146. }
  147. }
  148. Decimaleado = Evalued/Math.pow(10, Decimales);
  149. trace (Decimaleado);
  150. // Guardarlo en la lista:
  151. set (Resumen, Evalued);
  152. }
  153. // ¿Se puede producir un número positivo de X decimales y largo Y?
  154. // X = Decimales.
  155. Resumen = "LastPositivoDe"+Decimales;
  156. // trace("Resumen: "+Resumen);
  157. Evalued = eval(Resumen);
  158. // trace("Evalued: "+Evalued);
  159. if (Evalued<eval("MaxPositivoDe"+Decimales)) {
  160. // Sí, producirlo:
  161. Evalued++;
  162. if (Decimales>0) {
  163. // ¿Termina en 0?:
  164. Textualizado = String(Evalued);
  165. LastChar = Textualizado.charat(Textualizado.length-1);
  166. if (LastChar == 0) {
  167. // Sí, ergo al convertirlo a decimales...
  168. // no tendrá largo Y, arreglarlo:
  169. Evalued++;
  170. }
  171. }
  172. Decimaleado = Evalued/Math.pow(10, Decimales);
  173. trace (Decimaleado);
  174. // Guardarlo en la lista:
  175. set (Resumen, Evalued);
  176. }
  177. if (LastPositivoDe0 == MaxPositivoDe0) {
  178. // INDICAR SI CONTINÚA O PARA:
  179. // No hay más números de largo Y.
  180. // crear listas para números más largos:
  181. MaxDecimales++;
  182. set ("LastPositivoDe"+MaxDecimales, 0);
  183. set ("LastNegativoDe"+MaxDecimales, 0);
  184. // Indicar nuevos máximos:
  185. MaxPositivoDe0 = Math.pow(10, Decimales+1)-1;
  186. MaxNegativoDe0 = Math.pow(10, Decimales)*-1+1;
  187. Decimales = 0;
  188. Maximo1 = Math.pow(10, Decimales)-1;
  189. Maximo2 = Math.pow(10, Decimales-1)*-1+1;
  190. do {
  191. Decimales++;
  192. set ("MaxPositivoDe"+Decimales, Maximo1);
  193. set ("MaxNegativoDe"+Decimales, Maximo2);
  194. } while (Decimales<MaxDecimales);
  195. }
  196. } while (Decimales>0);
  197. Decimales = MaxDecimales;
  198. }
Al menos hasta donde probé, ese último if no llegó a ejecutarse.

He aquí el resultado a partir de la etapa 5:
0.01
-0.1
10.1
-100
1000
0.02
-0.2
10.2
-101
1001
0.03
-0.3
10.3
-102
1002
Y sigue.

Los errores que recuerdo eran:
- Había puesto "de" en vez de "De" en una parte.
- Modificaba Resumen, está bien, pero lo que necesitaba modificar en ese momento era Evalued.
- No ponía que Decimales vuelva a ser MaxDecimales.

No sé simplificar el programa, que sean menos etapas, y no sé si conviene.

Es probable que requiera una etapa 6 o algún límite para el largo de los números que produce.

También es probable que la parte de "Indicar nuevos máximos" en la etapa 5 esté mal, lo voy a consultar, pero bueno, ya está.
Páginas: 1 ... 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 35 36 37 38 39 40 ... 238
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines