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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 ... 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 35 36 37 38 ... 204
221  Programación / Programación General / Re: ¿Es posible hacer una función que incluya parte de un if? en: 28 Febrero 2024, 01:08 am
Tu respuesta es como muy conceptual o abstracta, leí algunas cosas pero no entiendo bien del tema ^^u quiero un código no un método de programar que evita hacer ciertas cosas...

Lo simplifico, tengo un programa que tiene 4 estados.
1: Las definiciones iniciales.
2: Estado 2.
3: Estado 3.
4: Estado final.
En los estados 2 y 3 se usa un código así:
Código:
// Hacer cosas A.
Si (condición B):
  // Hacer cosas C.
sino:
  // Hacer cosas D.
  // Empieza la zona amarilla.
  Si (condición E):
    // Hacer cosas F:
  sino si (condición G):
    // Hacer cosas H.
y a partir de ahí es diferente en cada estado. Ya que los códigos son iguales hasta cierto punto, los quiero convertir en 1 función para evitar que se repita código, para que así ocupe menos espacio en disco, se cargue más rápido, etc, o al menos se supone que así ocurriría. Yo uso funciones para eso y por otro motivo que no viene al caso. Pero en este caso se complica convertir todo eso en 1 función porque el if no terminó, y no sé explicar mejor. Si el código a convertir en función fuese algo así:
Código:
// Hacer cosas.
Si algo A:
  // Hacer B.
sino:
  // Hacer C.
  Si algo D:
    // Hacer E.
  sino si algo F:
    // Hacer G.
  sino:
    // Hacer H.
No tendría problema, pero en el caso de arriba que presento no sé. En un estado lo que sigue es un else if y en el otro un if. Quizá se podría cambiar eso, no sé.

Ahora se me ocurre que la función podría, desde la zona roja, tener un if que, dependiendo de en qué estado se esté ejecutando, siga de un modo u otro, lo cual no me gusta porque me gusta que se cargue (o llame a) lo mínimo necesario. Tampoco es muy legible, quizá es parte de a lo que se refería el link que pusiste.

es que una función no use ni cambie nada de fuera de sí
¿Cual sería el problema si lo hiciera? Casi siempre lo hice así. Ayer hablando con GPT de un caso muy atípico me dió una función en la que se introducen parámetros, yo nunca o casi nunca hice una así. La usé porque parece totalmente necesaria para poner un operador variable en un if y así evitar cídigo, ya que esto no me funciona:
Si CVal CVal CVal
ni esto Si CVal eval(CVal) CVal
GPT me dijo que use una función así:
if (Comparacion(CVal, CVal, CVal)) {

Debe hallarse un valor de C tal que C C C, algo como:
"==" == "=="

Código
  1. // Posibles valores del Candidato:
  2. CVal1 = "<";
  3. CVal2 = "<=";
  4. CVal3 = "==";
  5. CVal4 = ">=";
  6. CVal5 = ">";
  7. CVal6 = "!=";
  8. // Candidato que será usada 1ero:
  9. C = 1;
  10. // Mensaje que se mostrará en pantalla:
  11. Respuesta = "Hallar un C tal que C C C. Se recomienda el C... ";
  12. // Usada por ProcesoaRepetir:
  13. function Comparacion(Valor1, Comparador, Valor2) {
  14. if (Comparador == "<") {
  15. return valor1 < valor2;
  16. } else if (Comparador == "<=" ) {
  17. return valor1 <= valor2;
  18. } else if (Comparador == "==" ) {
  19. return valor1 == valor2;
  20. } else if (Comparador == ">=" ) {
  21. return valor1 >= valor2;
  22. } else if (Comparador == ">" ) {
  23. return valor1 > valor2;
  24. } else if (Comparador == "!=" ) {
  25. return valor1 != valor2;
  26. }
  27. }
  28. // Se repite en F2:
  29. function ProcesoaRepetir () {
  30. CVal = eval("CVal"+C);
  31. trace ("CVal: "+CVal);
  32. trace ("Aplicación del candidato.");
  33. // ¿Se logró el objetivo?
  34. if (Comparacion(CVal, CVal, CVal)) {
  35.        // Sí, mostrar C que lo causa:
  36. Respuesta = Respuesta+C;
  37. trace ("Solución hallada, ver respuesta.");
  38. gotoAndStop (3);
  39. } else if (Action<6) {
  40. trace ("No se logró el objetivo.");
  41. // ¿Modificar C es posible?
  42. // Sí, modificarlo:
  43. C = C+1;
  44. trace ("El candidato fue modificada, es: "+C);
  45. } else {
  46.        // No, mostrar mensaje en pantalla:
  47. trace ("No es posible modificar al candidato ón ni lograr el objetivo.");
  48. Respuesta = Respuesta+"Ninguna, no es posible lograr el objetivo.";
  49.        // Finalizar programa:
  50. gotoAndStop (3);
  51. }
  52. }

Citar
llevado al máximo, dados unos parámetros iguales la función siempre devolverá lo mismo.
Tiene sentido, a menos que tenga random. ¿Cómo sería de otro modo? No imagino.

Citar
Pues que en verdad se puede hacer otra función, pero tendrías que aislar la lógica y pasarle algunos datos desde la primera función
Todos los datos que uso están fuera de la función.

Citar
Nota. Se me olvidó decir que puedes hacer una función escopeada, dentro del ámbito de la función principal. Pero si lo haces, tienes que pensar que esa función se replicará en instancias diferentes en cada llamada a la función principal. Las variables internas te serán accesibles directamente, pero es un mal patrón porque no escalas horizontalmente la aplicación. Sino en profundidad, que se traduce en consumo de memoria excedente.
Si puedes dame un ejemplo porque no sé si lo entiendo.
222  Informática / Software / Independizar tamaño de columnas en tablas de Word 2013. en: 27 Febrero 2024, 08:10 am
Es posible insertar tablas en Word, como las de Excel u otras. Yo uso esas otras a veces para menejar cómodo 2 textos como si fuesen 2 columnas, porque la función de usar 2 columnas suele darme problemas.

Así lo tengo con imágenes y textos que borré:


Imagen - Texto
Texto - Imagen
etc

En la 3era fila también tengo una imagen en la izquierda.

El tema es que quiero poner distintos tamaños a las columnas, y como ven eso ocurre en la 1er y 2nda fila, tienen columnas de tamaños distintos, pero cuando cambio el tamaño de la 2nda me cambia también el de la 4ta y cuando cambio el de la 3era me cambia el de la 5ta, no parece tener sentido. ¿Hay algún modo de que eso no ocurra, que pueda cambiar el tamaño de la que quiera sin que me cambien el tamaño de los demás?

Creo que si las separo, les cambio los tamaños y las vuelvo a unir quedan con tamaños independientes, así fue como logré que la 1era y 2nda sean diferentes, pero que la 2nda se haya conectado con la 4ta sin haberse conectado con la 3era es como medio random, además no recuerdo haberlas puesto del mismo tamaño, quizá cuando cambias una y otra es de tamaño parecido te la cambia también.
Sin embargo no quiero repetir ese proceso no sé cuántas veces cada vez que no se sabe por qué al programa se le antoje igualar los anchos.

¿Alguna otra alternativa?
223  Seguridad Informática / Seguridad / Re: Si me roban el PC ¿pueden usar mis cuentas? en: 27 Febrero 2024, 02:24 am
Ok. Sería algo a mejorar entonces, que el logeo automático sólo sea válido mientras se siga usando el mismo router.
224  Seguridad Informática / Seguridad / Si me roban el PC ¿pueden usar mis cuentas? en: 27 Febrero 2024, 00:57 am
A y B son casas de mis vecinos, M mi casa: ABM

Hace entre 2 y 3 días, robaron en la casa A.
Ayer o hoy, robaron en B.

Sí, es cierto, así es probable que roben en la mía, cosa que de hecho ocurrió más de una vez. Siempre tuve la duda de qué pasa en ese caso con mis cuentas. Yo entro en Chrome y estoy logeado. ¿Es algo que depende sólo del PC o para que ocurra debe ser también con el mismo router? Es decir, si me roban el PC y lo usan con otro router ¿mi cuenta estará activa, "estaré" logeado (aunque no sea yo)? ¿o al cambiar de router se pierde el logeo automático?

Si dejo de postear es porque tuve algún problema, es algo sobre lo que he leído alguna vez, que si a un forero le pasa algo ¿los otros lo sabrían? Yo no tengo familiares que sepan que hablo por aquí, por ejemplo, uds no se enterarían. Aquí hay casos de foreros que hace mucho que no veo postear. Uno supe que murió, tenía un avatar de Batman, espero que los demás estén bien.
225  Programación / Programación General / "Programar" mediante estados ¿es muy limitante o el límite lo tengo yo? en: 26 Febrero 2024, 15:37 pm
Pensando la manera de jugar cierto juego (The Wizard's Castle, DOS, 1981) arriesgándose lo menos posible, y cómo describir eso, escribí esto:
Citar
Estado 1:
Posición: Fuera del castillo.
- Elige cualquier raza y sexo.
- Usa los puntos para maximizar DEX (18 creo), lo que sobre repartirlo equitativamente prefiriendo STR en caso de empate.
- Comprar espada y plate mail.

A partir de ahora:
Posición: En el castillo.

Definiciones:
Cofre S (seguro): No tiene un warp, sinkhole ni monstruo al lado.
Cofre P (peligroso): Tiene algo de eso al lado, pero no está completamente rodeado por esas cosas.
RWS: Completamente rodeado por warps/sinkholes (¿es posible?).
RM: Completamente rodeado por monstruos (¿es posible?).
R: Completamente rodeado por warps/sinkholes/monstruos.

Estado 2: Se cumple algo de esto:
   Tesoros S o P: Queda alguno sin adquirir.
   Cofres S: Queda alguno sin abrir.
   Grupos de oro tirado S o P: Queda alguno sin adquirir.
- Evita los sinkholes, warps y monstruos.
- Ignora el resto (no abras libros, no mires orbs, etc).
- Consigue eso que falte.
- Ve al siguiente piso usando escaleras. Si son R, usar un warp. Si no hay, ir a pisos anteriores buscando un warp.

Estado 3:
Tesoros S o P: Los tienes todos.
Cofres S: Idem.
Grupos de oro tirado S o P: Idem.
Se cumple algo de esto:
Está incompleto, claro, mi lío para empezar es con los pisos. Normalmente se diría:
Código:
Repetir
   Repetir
      Conseguir los ítems seguros del piso actual
      Ir al siguiente piso
   Mientras piso actual <= 8
Mientras te falten ítems seguros
¿No?

¿Es posible dar esas instrucciones usando estados como puse antes, cómo, o no?

Estado 2: Te faltan ítems seguros y aún no has revisado todos los pisos.
La 2nda parte de eso es redundante, si te faltan no has revisado, pero de algún modo debo decir que debe irse a otros pisos cuando se tengan los ítems S del actual.

Lo reintento:

Estado 2: Te faltan ítems seguros (y aún no has revisado todos los pisos).

m, retry:

Estado 2: Te faltan ítems seguros del piso actual:
- Agarrarlos y luego ir al siguiente piso.

Estado 3: Has recorrido todos los pisos (ergo deberías tener todos los ítems S):

m, retry:

Estado 2: No has recorrido todos los pisos (ergo te faltan ítems S) y te faltan ítems seguros del piso actual:
- Agarrarlos e ir al siguiente piso.

Listo.

Es decir, parece que algo como:
Código:
Repetir
   Repetir
   Condición 1
Condición 2
Se convertiría en:
No me doy cuenta, puse cosas distintas.

Tenía:
Código:
Repetir
   Repetir
      Conseguir los ítems seguros del piso actual
      Ir al siguiente piso
   Mientras piso actual <= 8
Mientras te falten ítems seguros
Y se convierte en:
Estado 2: No has recorrido todos los pisos (ergo te faltan ítems S) y te faltan ítems seguros del piso actual:

¿Cual es la lógica, si es que la hay, tiene que ver una cosa suficiente con la otra o...?

A ver algo más simple:
Código:
Mientras el automóvil esté óptimo:
   Mientras haya que dar más vueltas:
      - Dar una vuelta por la pista
Pero esto en realidad puede ser un sólo while con 2 condiciones... ¿lo mío también?

Código:
Mientras te falten ítems del piso actual y no hayas recorrido todos los pisos:
   - Agarrar los ítems y luego ir al siguiente piso.

Ya... ¿entonces "programar" con estados es tan parecido a usar whiles, por qué al principio no parecía?  :rolleyes:
226  Programación / Programación General / ¿Es posible hacer una función que incluya parte de un if? en: 26 Febrero 2024, 14:30 pm
A continuación 2 funciones iguales hasta la marca roja y que son usadas en un mismo programa:

Obviamente no se ve todo, pero no creo que importe, lo importante es que quiero convertir lo repetido (verde y amarillo) en una misma función, pero así como está termina (rojo) en medio de un if (que empezó en la zona amarilla, donde todo aún es igual). ¿Es posible hacer una función que incluya lo amarillo o debo conformarme con incluir sólo lo verde?

Por si a alguien le interesa, las diferencias entre los códigos son:
1- El izquierdo crea variables en ciertos casos, hasta llegar a 15, y el otro nunca.
2- El izquierdo en cierto punto deja de ejecutarse y ejecuta al otro. Ese cuando deja de ejecutarse da un mensaje y termina el programa.
Básicamente eso.
227  Foros Generales / Foro Libre / Re: ¿Habías oído hablar del protestware? en: 26 Febrero 2024, 02:16 am
Luego miro mejor tu lenguaje (¿el link que has puesto ahora es a eso?), pero me parece que poco cambia entre poner
if (valores comparador(o valor que se convierta en comparador, creo que es posible) valores) {
o
si (condición)

Si logras que la máquina entienda lo 2ndo, bien, pero es como que estás diciendo que la gente es demasiado tonta como para programar normal, como si en el futuro uno pudiera escribir en la calculador * 8 5 y ella reacomode todo para que se haga la operación debida ¿es necesario, la gente no puede escribir algo tan simple?
Además ocurren ambiguedades, en este momento no se me ocurren pero... algo como "Quiero pan con queso o carne". Se puede interpretar como:
A- Dar pan y queso, o dar pan y carne.
B- Dar pan y queso, o dar carne.
Una coma cambia mucho: "Dame pan con queso, o carne", o un paréntesis: "Dame pan (con queso) o carne".

Quiero agua y jugo de naranja, y la máquina te trae un vaso que tiene agua y jugo de naranja mezclado ¿quién tiene la culpa?

Un vaso de plástico, ok. Uno de agua, te trae hielo con forma de vaso (vaso hecho con hielo) xD
Me fui por las ramas.

Algo que estaría bueno es por ejemplo "Modifica esta rom de modo que el jefe final sea Mega Man y actúe con mucha inteligencia", yo que sé, hay mucho que estaría bueno, pero si fuese tan fácil ya se hubiera hecho, aunque hay mucho secretismo en el tema, es decir, normalmente no se revelan códigos o se revelan de un modo que nadie los entiende. Otra podría ser "convierte este exe en un código de Python". Pero bueno, tampoco es que sea tan útil, la gente quiere más riqueza, mujeres, viajar, mejores casas, yo que sé, saber informática no implica saber resolver los problemas más reales me parece, a menos que te dediques específicamente a eso, pero yo lo hago en parte y a penas avancé xP
¿No consigues buen trabajo de algo relacionado con la Informática? Quizá te convenga estudiar otra cosa. Yo intentaría aprender otras cosas si pudiera, y de hecho lo intento, pero digo, no me voy a poner a hacer un curso de electricista por ejemplo, por varios motivos, pero sí he estado leyendo sobre los diodos por ejemplo. Si eres hábil aprendiendo cosas y puedes trabajar de eso, adelante.
228  Foros Generales / Foro Libre / Re: ¿Habías oído hablar del protestware? en: 25 Febrero 2024, 23:13 pm
No conocía el concepto, leí esto:
https://www.enter.co/especiales/dev/que-es-protestware-desarrolladores-saboteando-su-propio-codigo/
y me pareció incoherente pero no lo entendí del todo.

Si ware puede usarse como final de soft o hard, sustituir esos principios por protest no llega ni a dejar en duda si se refiere a hardware o software, porque al no estar la palabra completa no es algo de eso, es como decir demoprotesta o protescracia, no se puede interpretar como "protesta usando democracia", sí como "protesta usando un demo", "protesta usando a la mayoría", o "protesta usando un sistema de gobierno", no creo que sea lo mismo...

Pero existen conceptos o nombres como Freeware, Abandonware, Malware, y todos son software creo, o da igual, son cosas relacionadas con Informática. Protestware tendría sentido que sea "Software hecho para protestar", "Software que se volvió un medio de protesta", e incluso "Protestar con Software", pero dudo que tenga sentido llamar Protestware a borrar o limitar software como medio de protesta (a menos que eso haya sido con software). Una Tomatoprotest podría ser una protesta arrojando tomates (cosa poco ética por cierto, mejor comerlos y arrojar basura), no me parece lógico llamar Tomatoprotest a esconder los tomates, porque no se están usando tomates para protestar, al contrario, aunque sí, bueno xD

Ya no le veo el problema. Esconder una cosa es una forma de usar esa cosa.

Las palabras así sirven para llamar la atención y para resumir. Si no dices protestware deberías decir "protest using software" y no hay mucha necesidad de eso. No sé si existen palabras como Biciride, Motoride, Carrride, etc, pero también servirían de resumen. Hay muchos resúmenes similares que pueden hacerse.

Había olvidado que entiendes el concepto ¿cual es tu queja entonces?

Por lo que he visto en otros mensajes tuyos también, parece que crees que sabes suficiente de Informática y haber aportado suficiente como para haberte vuelto más o menos exitoso pero que debido a una conspiración de empresas, políticos y no sé qué más no has tenido éxito. Sabes más que yo probablemente, y más que la mayoría, pero no creo que sea tan simple como que la culpa la tiene una conspiración. Ser exitoso, nos guste o no, depende de hacer cosas que a la gente le gusten, salvo ciertas excepciones en que la vuelves dependiente de lo que haces, o incluso media esclava. Por ejemplo yo no creo que el fútbol sea gran cosa, es casi siempre lo mismo ¿es lógico que la gente pague tanto y se apasione tanto por ver más o menos lo mismo una y otra vez? Creo que no, pero lo hacen, y así los que se dedican al negoci del fútbol son exitosos aunque lo que hagan parezca algo bastante común y corriente, date cuenta que no hacen cosas especiales, eventos donde puedas jugar tú contra los profesionales por ejemplo, o al menos yo no sé de eso, lo que muestran en general son partidos, mi padre escucha sobre fútbol a cada rato y siempre es sobre lo más oficial, en fin, y sin embargo alguien que se esfuerce en mejorar algunas cosas puede que no reciba un peso porque no es apreciado, así es la vida, agradece que no te manden a la hoguera o cosas así como hacían antes. Pero quizá lo que has hecho no sea tan grandioso como crees, no sé de eso, me habías dado un link en que al inicio se veían insultos en mayúscula, no presté mucha atención al resto. Si presentas algo bueno así, creo que espantas antes de que llegue a verse lo bueno. La presentación o exposición es importante. La gente no entiende todo lo mismo que tú, una vez una muchacha me dijo "no me lo tires como si fuese un ladrillo", no des una página que cuesta entenderla, o al menos a mí me costó.
El éxito en muchos casos parece cuestión de suerte. Por ejemplo un tío se hizo viral porque cada día subía un video donde mostraba un dibujo de estilo anime, mostrando cómo iba aprendiendo, pero el tipo creo que ya sabía dibujar bien. Supuestamente aprendió muy rápido y además ya era muy conocido, un youtuber que hacía chistes. Pero es como que sólo por esa oavadita de hacer un dibujito al día y mostrarlo ganaba dinero. Yo tengo muchas libretas de muchas hojas llenas y YT no me dió un peso por eso ni me lo darían seguramente aunque las mostrara. Es cuestión de suerte: Si te gusta hacer chistes/dibujitos, ganas, si te gusta entender la realidad, ganarás si logras hacer algo indudablemente útil, sino sólo alégrate de haber avanzado o haber podido intentarlo. Por supuesto habrá gente que se dedica a hacer chistes o dibujar y aún así le va mal (en Japón literalmente los animadores se mueren trabajando), pero me parece que son campos en que es más probable ser apreciado.

Si tanto te interesa ser exitoso para estar económicamente normal en vez de estar tan mal como dices estar, podrías intentar hacer cosas que a la gente le guste, aunque a ti no, o buscar algo que guste suficiente a ellos y a ti. También podrías enfocarte en hacer cosas que gusten a la gente rica que querría pagar por lo que haces, porque tener a un montón de fans pobres piratas no sirve de mucho.
229  Media / Diseño Gráfico / Re: Quitar cosas de una imagen ¿cómo? en: 25 Febrero 2024, 21:53 pm
Los archivos de imagen, video, sonido ¡todos o casi! están escritos en un lenguaje que es difícil de entender por qué lo hicieron tan difícil de entender, no lo entiendo, y ya no tengo mucha esperanza en avanzar en eso, no me meto en eso.

No es para un juego sino una autobiografía que incluye imágenes. En cierto punto en el colegio, volví desde el recreo, vi que mi mochila estaba en el suelo y un tipo sentado en el asiento donde la había dejado, y un amigo suyo estaba sentado al lado. Cuando les pregunté qué pasó, el 1ero que comenté me dijo que cuando ellos llegaron estaba así, y el otro se reía. He aquí la representación, por ahora:

Veo que tiene transparencia, yo la pego en Word así que no lo noté, no importa. Vale decir que no sé ni me gusta dibujar, así que es lo que hay, no esperes mucho detalle en las imágenes o que representen fielmente el hecho xD
230  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?
Páginas: 1 ... 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 35 36 37 38 ... 204
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines