|
111
|
Foros Generales / Dudas Generales / DVDs VS Pendrives, dudas.
|
en: 21 Agosto 2024, 07:30 am
|
Sé que hace tiempo hice una pregunta similar pero creo que me faltaron cosas.
El único sitio que conocía donde vendían DVDs, ya no vende, aunque la última vez que compré la vendedora le preguntó a otra si eran para "el cliente", y le respondió "No, él quería poquitos", o sea que yo no era el único comprador. Además un vendedor me había dicho que tenían muchos, que se conseguían fácil.
No encuentro sitio donde vendan, aquél ni siquiera era una cada de Informática sino una papelería.
Vivo en Montevideo Uruguay.
Por todo eso, probablemente deba empezar a usar Pendrives.
Yo lo que quiero es respaldar cosas cada cierto tiempo, algunas de las cuales no cambio.
Al ponerlas en un DVD diferente cada cierto tiempo, si por algún motivo se cambiaran cosas (hackers, malware, no sé), podría recuperar algún estado correcto anterior usando DVDs antiguos. En cambio, si lo que hago es sustituir lo del Pendrive por cosas más recientes, se puede complicar.
En cuanto a Malwares, no tengo idea, pero los DVDs no se pueden modificar, tengo entendido, en cambio un Pendrive ¿puede que un Malware modifique/borre/desordene los archivos cuando se conecte al PC? ¿o que haga algo de eso cuando se conecta a partir de cierta fecha?
¿Alguien sabe dónde puedo comprar DVDs aquí? ¿o en el exterior sin ir? El problema con eso es que no tengo tarjeta y si bien me gustaría tener muchos, no puedo comprar tantos.
|
|
|
112
|
Media / Diseño Gráfico / ¿Sugerencias sobre hacer/encontrar íconos?
|
en: 20 Agosto 2024, 03:54 am
|
Decidí tener distintos íconos porque no veo bien las letras y en definitiva así podría distinguir mejor qué es cada acceso directo, el problema es que muchas veces el resultado me resulta como una mancha digamos, no distingo qué es, es demasiado pequeño. Ahora necesito uno que sea un medidor. Busqué imágenes y al achicarlas ya no veo la aguja ni casi nada. ¿Sugerencias en ese caso y en general? Aquí se ven algunos de mis íconos:  Sólo me gusta el de la lupa y el de los cuadros negros, los demás son lo que quedó por ahora. Uno es un caballo de ajedrez, un trofeo y un tubo de ensayo. Antes estaba en un fondo con una cascada así que el caballo se veía bien. Mejoraré alguna calidad cuando pueda. Otro es una hoja con un burro delante. Le puse un borde blanco y otro negro al burro para que se vea mejor, originalmente lo hice transparente pero en el fondo que tenía no lo veía bien. La idea sería mejor un libro que en la tapa tenga al burro, pero me pareció imposible que pueda ver eso. El de abajo es muchos libros y una mano, pero yo nada veo digamos, debo arreglarlo, poner sólo 1 pila de libros, la mano no, yo que sé. Al billete le puse fondo amarillo porque transparente no lo veía en el fondo que tenía antes. Aún no probé ponerle muchos bordes, pero igual el signo de $ no lo veo bien. El martillo, lo veo, pero el fondo que le puse no tiene mucho sentido, debo probarlo con transparencia y más contorno. El robot pensando, no lo veo ni a palos. El fondo tampoco tiene mucho sentido. Con el de Química Flash no publicaba la letra, así que después de luchar quedó pero así, igual no sé bien cómo mejorarlo, algunos detalles que le puse no se ven, bah. Al de Cíclope debo ver cómo queda sin su fondo. EDIT: Bueno, ya tengo un medidor. He aquí algunas claves, unas menos obvias que otras: - Agregar ícono en la palabra a buscar puede ayudar. - Reducir el zoom del navegador ayuda mucho ya que, de ese modo las imágenes se verán como se verían achicadas así que no hay que copiarlas, pegarlas, etc. Además ves muchas más imágenes enseguida. Las cosas suelen ser más difíciles de lo que pensé, aunque luego parezca que no.
|
|
|
113
|
Programación / Programación General / Muchos loops, ayuda.
|
en: 19 Agosto 2024, 07:10 am
|
El programa genera dibujos en varios cuadros, separados con verde:  Hay 4x4 dibujos. Luego, cuando el usuario cliquea un dibujo, se transmite a los demás pero con algunas mutaciones. Los de arriba-izquierda mutan menos y los de abajo-derecha mutan más (el cálculo para determinar cuántos mutan en cada dibujo me lo dijeron matemáticos, no lo entiendo bien, pero no importa aquí). Creo que funciona bien, aquí está el código del clic: Nota: Es importante diferenciar cuadro de cuadradito: Los cuadros son los dibujos separados con verde, los cuadraditos son digamos los píxeles (pero más grandes que un pixel) que contiene cada dibujo. on (release) { // Los dibujos serán como el de encima de este botón: Dibujo = 1; ModificacionesRequeridas = 1; // Repetir para el dibujo 1, 2, etc: while (Dibujo < _level0.MaxCuadro+1) { // Este if es porque el dibujo a copiar no necesita... // ser modificado, eso sería como sustituirse por él mismo: if (Dibujo != _parent.ID) { Cuadradito = 0; // Repetir hasta que todo cuadradito se haya copiado: do { Cuadradito++; ColoraCopiar = new Color("_parent.Cuadradito"+Cuadradito); ColoraSustituirse = new Color("_level0.Dibujo"+Dibujo+".Cuadradito"+Cuadradito); ColoraSustituirse.setRGB(ColoraCopiar.getRGB()); } while (Cuadradito<_level0.MaxCuadradito); // Los dibujos mutarán: // De cada dibujo copia, variar cuadraditos al azar, // de 1 hasta CuadraditosPorFila, // aumentando por dibujo hacia derecha y abajo: // Repetir hasta que se haya variado esa cantidad... // de cuadraditos: CuadraditosModificados = 0; do { // Para evitar que se modifique uno ya modificado, // los modificados se guardan en una lista, // y cuando se va a modificar uno se mira... // que no esté en la lista, sino se elige otro: do { trace("Se modificará un cuadradito del dibujo "+Dibujo); Repetido = "No"; NroDeCuadraditoaCambiar = random(_level0.MaxCuadradito)+1; trace("El nro: "+NroDeCuadraditoaCambiar); trace("Se verá si ya fue modificado."); PunteroParaLista = 1; // Ver si NroDeCuadraditoaCambiar está en la lista de modificados: while (PunteroParaLista <= CuadraditosModificados) { trace("Comparando con el nro "+PunteroParaLista+" de la lista de modificados."); if (NroDeCuadraditoaCambiar == eval("CuadraditoModificado"+PunteroParaLista)) { Repetido = "Sí"; PunteroParaLista = CuadraditosModificados+1; trace("Ya fue modificado, se elegirá otro."); } PunteroParaLista++; } } while (Repetido == "Sí"); CuadraditoaCambiar = "_level0.Dibujo"+Dibujo+".Cuadradito"+NroDeCuadraditoaCambiar; trace("Ya se eligió uno no modificado, es: "+CuadraditoaCambiar); ColoraSustituirse = new Color(CuadraditoaCambiar); // A esto lo convierto a String porque... // lo debo comparar con un string y es más fácil así. SavedeColoraSustituirse = ""+(ColoraSustituirse.getRGB()); // trace ("SavedeColoraSustituirse: "+SavedeColoraSustituirse); // Repetir mientras el color no cambie: do { NuevoColor = _parent.PosiblesColores[random(_parent.PosiblesColores.length)]; } while (NuevoColor == SavedeColoraSustituirse); ColoraSustituirse.setRGB(NuevoColor); // trace ("NuevoColor: "+NuevoColor); CuadraditosModificados++; // Agregar el cuadradito a la lista de modificados: set("CuadraditoModificado"+CuadraditosModificados, NroDeCuadraditoaCambiar); } while (CuadraditosModificados<ModificacionesRequeridas); } Dibujo++; if (ModificacionesRequeridas <= _level0.Resto) { ModificacionesRequeridas = Math.floor((Dibujo-1)/(_level0.DistintasMutaciones+1))+1; } else { ModificacionesRequeridas = Math.floor((Dibujo-1-_level0.Resto*(_level0.DistintasMutaciones+1))/(_level0.DistintasMutaciones))+1+_level0.Resto } } }
Quiero agregar que cada dibujo resultante deba tener cierta cantidad de colores (3 en este caso), ni más ni menos. Eso implica que si los cuadraditos elegidos a modificarse son los únicos que tienen cierto color, deben elegirse otros (porque si cambian de color, habría menos colores, por ser los únicos que tenían ese color). Y eso, creo, implica que ya no conviene modificarlos a penas se seleccionan, porque si no son una elección válida entonces habría que volverlos al color anterior y eso parece más complicado y menos eficiente que irlos guardando en una lista y modificarlos recién cuando esté completa. Tengo más o menos la idea de cómo hacerlo pero son tantos while (o no sé evitarlos) que me lié. El pseudocódigo yo diría que es: Repetir Si el dibujo (de turno, D) a sustituirse no es el que se está copiando, sustituirlo por el que se está copiando ("pegárselo" encima). Repetir Repetir Seleccionar un cuadradito del dibujo D. Si ese ya fue elegido, volver a elegir un cuadradito de D (contador--). hasta que se haya elegido la cantidad requerida. Si los elegidos no son válidos, elegirlos de nuevo (indicar que este loop reinicie ¿resetar contador?). hasta que se haya elegido un grupo válido. Repetir Repetir Modificar el color de uno de los cuadraditos elegidos y llevar la cuenta de cuántos colores tiene el dibujo. hasta que se haya modificado el color de todos los elegidos. Si el dibujo no tiene la cantidad requerida de colores, modificar los colores de nuevo (indicar que este loop reinicie). hasta que el dibujo tenga la cantidad requerida de colores. hasta que se haya aplicado a todo dibujo. Bueno, creo que está bien, hacer pseudocódigos puede simplificar la tarea veo, yo me había quedado así: on (release) { // Los dibujos serán como el de encima de este botón: Dibujo = 1; ModificacionesRequeridas = 1; // Repetir para el dibujo 1, 2, etc: while (Dibujo < _level0.MaxCuadro+1) { // Este if es porque el dibujo a copiar no necesita... // ser modificado, eso sería como sustituirse por él mismo: if (Dibujo != _parent.ID) { Cuadradito = 0; // Repetir hasta que todo cuadradito se haya copiado: do { Cuadradito++; ColoraCopiar = new Color("_parent.Cuadradito"+Cuadradito); ColoraSustituirse = new Color("_level0.Dibujo"+Dibujo+".Cuadradito"+Cuadradito); ColoraSustituirse.setRGB(ColoraCopiar.getRGB()); } while (Cuadradito<_level0.MaxCuadradito); // Los dibujos mutarán: // De cada dibujo copia, variarán cuadraditos al azar, // de 1 hasta CuadraditosPorFila, // aumentando por dibujo hacia derecha y abajo, // pero 1ero elegir cuales, // porque puede que la elección no sea válida, // en cuyo caso habría que resetearlos. // La elección no es válida si los elegidos tienen el mismo color y son los únicos con ese. // A continuación se eligen para 1 dibujo, pero esto se está repitiendo en un loop mayor: CuadraditosElegidos = 0; do { Repetir = "No"; // Para evitar que se elija uno ya elegido, // los elegidos se guardan en una lista, // y cuando se va a elegir uno se mira... // que no esté en la lista, sino se elige otro: do { trace("Se elegirá un cuadradito del dibujo "+Dibujo); Repetido = "No"; CuadraditoElegido = random(_level0.MaxCuadradito)+1; trace("El nro: "+CuadraditoElegido); trace("Se verá si ya fue elegido:"); PunteroParaLista = 1; // Ver si CuadraditoElegido está en la lista de elegidos: while (PunteroParaLista <= CuadraditosElegidos) { trace("Comparando con el nro "+PunteroParaLista+" de la lista de elegidos."); if (CuadraditoElegido == eval("CuadraditoElegido"+PunteroParaLista)) { Repetido = "Sí"; // Esto es para que ya no mire la lista: PunteroParaLista = CuadraditosElegidos; trace("Ya fue elegido antes, se elegirá otro."); } PunteroParaLista++; } } while (Repetido == "Sí"); CuadraditosElegidos++; // Repetir hasta que se haya variado esa cantidad... // de cuadraditos: CuadraditosaModificarse = 0; do { // Para evitar que se modifique uno ya modificado, // los modificados se guardan en una lista, // y cuando se va a modificar uno se mira... // que no esté en la lista, sino se elige otro: do { trace("Se modificará un cuadradito del dibujo "+Dibujo); Repetido = "No"; NroDeCuadraditoaCambiar = random(_level0.MaxCuadradito)+1; trace("El nro: "+NroDeCuadraditoaCambiar); trace("Se verá si ya fue modificado."); PunteroParaLista = 1; // Ver si NroDeCuadraditoaCambiar está en la lista de modificados: while (PunteroParaLista <= CuadraditosaModificarse) { trace("Comparando con el nro "+PunteroParaLista+" de la lista de modificados."); if (NroDeCuadraditoaCambiar == eval("CuadraditoModificado"+PunteroParaLista)) { Repetido = "Sí"; PunteroParaLista = CuadraditosaModificarse+1; trace("Ya fue modificado, se elegirá otro."); } PunteroParaLista++; } } while (Repetido == "Sí");
Un lío. Nótese que estoy cambiando algunos nombres por lo de que debe eligirse un grupo y chequearse que sirvan en vez de modificar colores enseguida. Intentaré transformar el pseudocódigo en código, pero ¿se puede simplificar? ¿consejos?
|
|
|
115
|
Programación / Programación General / ¿Cómo crear una función a la que se le de un parámetro y usarlo?
|
en: 15 Agosto 2024, 06:58 am
|
Tengo estas funciones: function FaceRight () { if (Player.Facing == -1) { Player.Facing = 1; Player._xscale = 100; } } function FaceLeft () { if (Player.Facing == 1) { Player.Facing = -1; Player._xscale = -100; } }
Sirven para que el personaje manejado por el jugador quede mirando hacia un lado u otro. Quisiera que esa función se pueda usar también para los enemigos. Ahora me doy cuenta de que no tendría problema, creo, en hacerlo como se me ocurrió, pero no parece la mejor forma. Sería algo así: function FaceRight () { if (eval(Character+".Facing") == 1) { set(Character+".Facing", 1); set(Character+"._xscale", 100); } } // Cambios similares a FaceLeft. // Antes de llamar a la función, definir Character para indicar a qué personaje se aplicará.
Lo que pasa que pensé que los códigos se podrían ejecutar en un mismo momento y entonces la variable Character podría cambiar en medio del proceso y generar lío, por eso pensé que sería mejor que cada función tenga una variable independiente, un parámetro. Aunque tal vez no lo necesito, quiero saber cómo sería, no lo sé. Sé que el parámetro va entre el paréntesis, por ejemplo: FaceRight ("Player") La idea es que la función se aplique a lo que indique el parámetro ¿pero cómo hago referencia al parámetro luego? No puedo decir: if (eval(Parametro+".Facing") == 1) { no sé cómo se dice. EDIT: Ya vi, era fácil, el nombre se pone en el paréntesis al definir la función: function FaceRight (Character)
Para hacer referencia al parámetro se pone eso que se haya escrito. Sorry por preguntar algo tan fácil, nunca había usado parámetros. EDIT2: Igual el scale no funciona así xP function FaceRight (Character) { if (eval(Character+".Facing") == -1) { set(Character+".Facing", 1); set(Character+"._xscale", 100); } }
Ya me había pasado algo similar pero quise arriesgarme. No sé cómo se resuelve, intento decir que la propiedad xscale del objeto Player sea 100, pero Flash crea una variable llamada Player._xscale, es como que lo anterior a _ no puede ser variable o sino se enreda... ¿alguna solución, para que no tenga que usar ifs ni similares? GPT me dijo: eval(Character)._xscale = 100; Yo había probado eval pero de otras maneras 
|
|
|
116
|
Programación / Programación General / Lograr que el pasto quede bien.
|
en: 12 Agosto 2024, 17:42 pm
|
El pasto que se ve arriba, se coloca con código repetidamente, con distinta posición, tamaño y reflejo, según dónde esté, y tiene algo de random, pero hay un punto en que hay un gran cambio (aunque a la vista quizá no se note) y es lo que quiero mejorar.  Lo que está a la derecha de la línea no se verá en la imagen que necesito, y tampoco la parte de más arriba (empieza poco después que empieza el pasto del horizonte). // Pastos grandes al costado: Pastos = 0; do { Pastos++; attachMovie("mPasto", "Pasto"+Pastos, Pastos); setProperty ("Pasto"+Pastos, _x, 225+Pastos/6+random(Pastos/3)); setProperty ("Pasto"+Pastos, _y, 10+Pastos); setProperty ("Pasto"+Pastos, _xscale, 1+Pastos/2.5*(1-2*random(2))); setProperty ("Pasto"+Pastos, _yscale, 1+Pastos/2.5); } while (Pastos<207); // Delante: do { Pastos++; attachMovie("mPastos", "Pasto"+Pastos, Pastos); setProperty ("Pasto"+Pastos, _x, Pastos/6+random(Pastos/3)); setProperty ("Pasto"+Pastos, _y, Pastos); setProperty ("Pasto"+Pastos, _xscale, 1+Pastos/2.5*(1-2*random(2))); setProperty ("Pasto"+Pastos, _yscale, 1+Pastos/10); } while (Pastos<250);
O sea, se colocan pastos al costado del muro, y quedan por delante pero, como están al costado, no se nota (para que queden más parejos, vuelvo a generar la imagen, para mí está bien en esto). Luego, se precisa que los pastos queden delante del muro, pero esos deben ser más cortos delante, y del tamaño de antes en la derecha, así digamos: muro::: .......::: donde los puntos son la altura que deben tener los pastos. ¿Cómo lo logro? Se me acaba de ocurrir crear otro símbolo, con un pasto acorde, es decir, si el que se inserta en el 1er while es así ::: este sería ...::: pero me gustaría por curiosidad saber la solución mediante código. El problema es que el tamaño se basa en la cantidad de pastos colocados, algo así: Muro, pasto1 de tamaño1 Muro, pasto2 de tamaño2 etc, nro de pasto = tamaño digamos. Pero cuando ya no hay muro habría que hacer (PARECE): Pasto200 de tamaño 20, pasto201 de tamaño 200 Pasto202 de tamaño 21, pasto203 de tamaño 201 etc, y se pierde la fórmula y no sé cómo sería. Quizá usando más contadores... EDIT: He creado la otra imagen. He tenido que moverlas porque estaban centradas y en ese caso al agrandarlas se agrandan hacia arriba y abajo, lo cual causa que cada línea de pastos queden así: Creo que ya arreglé eso. Pero tengo problemas para entender cuánto debo mover las imágenes, o no sé qué está pasando, porque me quedó así:  ¿Por qué esa imagen diferente se está insertando ahí si su posición en su película es la misma que las demás y la fórmula que uso también? // Pastos grandes al costado del muro: Pastos = 0; do { Pastos++; attachMovie("mPasto", "Pasto"+Pastos, Pastos); setProperty ("Pasto"+Pastos, _x, 230+Pastos/6+random(Pastos/3)); setProperty ("Pasto"+Pastos, _y, -10+Pastos); setProperty ("Pasto"+Pastos, _xscale, 1+Pastos/2.5*(1-2*random(2))); setProperty ("Pasto"+Pastos, _yscale, 1+Pastos/2.5); } while (Pastos<193); // Delante: Pastos++; attachMovie("mPastos2", "Pasto"+Pastos, Pastos); setProperty ("Pasto"+Pastos, _x, 193+random(Pastos)); setProperty ("Pasto"+Pastos, _y, -10+Pastos); setProperty ("Pasto"+Pastos, _xscale, 1+Pastos/2.5); setProperty ("Pasto"+Pastos, _yscale, 1+Pastos/2.5);
Edit2: Ya arreglé eso, es que tenía una película Pasto, otra Pastos que no usaba, e hice Pastos2 y edité Pastos pero esa no la usaba, por eso el lío. Se me rompió la PC hace unos días y con tanto lío que tengo ya de por sí, peor aún xD Va mejorando, pero va a tardar porque no le dedico tanto tiempo.
|
|
|
117
|
Sistemas Operativos / Windows / ¿Algo que abra una carpeta y además un archivo?
|
en: 12 Agosto 2024, 02:37 am
|
Un acceso directo es, según he visto, abrir una cosa o la otra, no ambas.
Se puede abrir una carpeta, que el archivo esté dentro o un acceso directo a él y entonces abrirlo, pero quiero que se abran ambas cosas con un par de clics.
¿Es posible? ¿con un bat, un exe, cómo los hago?
|
|
|
118
|
Sistemas Operativos / Windows / Hacer ícono con transparencia en W7 ¿qué estoy haciendo mal?
|
en: 10 Agosto 2024, 13:24 pm
|
Tengo el dibujo en Flash, mide 32x32 px.
Lo publico como png y gif.
Si les cambio la extensión a ico, no se reconocen como tales, dice que no hay ícono ahí.
Abro el png con paint y lo guardo como bmp. Luego lo cambio a ico, funciona pero no es transparente.
Abro el png con paint y lo guardo como gif. Luego lo cambio a ico, no funciona.
Tal vez hago algo distinto pero es lo que recuerdo y no volveré a probar por ahora porque el frío me está congelando las manos.
|
|
|
119
|
Foros Generales / Foro Libre / Adivinar característica que puede tener un número.
|
en: 9 Agosto 2024, 23:46 pm
|
Conocen juegos donde se debe adivinar una película, frase, etc, diciendo letras. Las 1eras letras que dices son las que en general están en más palabras. No empiezas diciendo la x, sino la a por ejemplo. No quiero hacer un juego de esto, o no era mi intención, pero me interesa esto: Supongamos que elijo una característica que puede tener un número (por ejemplo ser divisible entre 11), y debes adivinar cual es, diciendo números, hasta que digas uno que la cumpla ¿qué números dirías 1ero? Puede haber pistas: - Un "rango", por ejemplo "Entre 0 y 50 hay números que la cumplen". - Qué tipo de números es necesario decir, por ejemplo "Tendrás que decir decimales", o "Basta conque digas enteros positivos". No se vale elegir una que no la cumplan los números normales (enteros/decimales, positivos/negativos/0). Bue, GPT no entendió: Entiendo que estás interesado en un juego de adivinanzas que implique identificar números que cumplen con una característica particular, como ser divisible entre 11. En este caso, si te doy pistas como un rango o el tipo de números que se deben decir, ¿cuáles serían los números que dirías primero?
Para abordar el desafío de adivinar un número que cumple con una característica específica, como ser divisible entre 11, es útil seguir una estrategia que maximice las posibilidades de identificar el número correcto lo más rápido posible.
Dado que estamos tratando con números enteros y decimales normales, y no se permiten trucos o excepciones inusuales, la estrategia más eficaz sería comenzar con números que sean múltiplos de 11, ya que estos son los números que cumplen con la característica de ser divisibles entre 11.
(...) No tiene sentido comenzar por los divisibles entre 11 porque lo que debes adivinar es que son divisibles entre 11, lo que tiene sentido es empezar por un número que probablemente cumpla la característica elegida por tu rival, que tú no sabes, es decir, empezar ppor números que cumplan la mayor cantidad posible de características. ¿Cuales son esos números? Mira, vamos a jugarlo. Yo elijo una característica que tienen algunos números, y tú diciendo números debes adivinar cual característica elegí. Pistas: Del 0 al 1000 hay números que la cumplen. Los números enteros la cumplen. (sólo para uds: Elegí capicúa que tiene algún 9). ¡Entendido! Vamos a jugar. Dado que debemos identificar una característica que algunos números comparten y que se encuentran en el rango del 0 al 1000 y que los números enteros la cumplen, empezaré nombrando números que cumplen con múltiples características para aumentar la probabilidad de acertar.
Aquí están los números que nombraría primero:
1. **100**: Es un número redondo y alto que podría cumplir con varias características. 2. **500**: Otro número central que podría tener múltiples propiedades. 3. **250**: Un número intermedio que podría cumplir con diferentes criterios. 4. **750**: Otro número alto y redondo que podría tener las características requeridas. 5. **333**: Un número impar que podría cumplir con ciertas condiciones. 6. **666**: Un número especial por su composición de dígitos. 7. **888**: Otro número especial que destaca por su estructura.
Estos números son seleccionados con la idea de cubrir una amplia gama de posibles características que podrías haber elegido. ¿Cuál es la característica específica que tengo que adivinar? Es claro que puede ser difícil, pero probablemente no es casualidad que haya fallado, no son los mejores números a decir. Espero que se entienda el tema y espero respuestas.
|
|
|
|
|
|
|