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


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


  Mostrar Temas
Páginas: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ... 52
101  Media / Juegos y Consolas / Sugerencias para historia de hackers. en: 17 Noviembre 2024, 05:48 am
Sigo con mi sueño de hacer un videojuego en que distintos personajes vayan viajando al mundo de otros, que esté alterado por los villanos de los que viajan.

¿Pero quién podría ser el enemigo? ¿quién inició eso y con qué objetivo?

Acabo de ver un resumen de la historia de FF 13-2, probablemente eso me inspiró un poco.

El enemigo podría ser un bug, o un hacker, pero para no dejar al concepto o estereotipo malparado, se me ocurrió poner hackers buenos también. Que no haya malos es más complicado, tal vez imposible, o tal vez si a todos los involucrados les falta información importante o por mala suerte o descuido hubo un gran malentendido. No sé, leo ideas.

Lo que se me había ocurrido es que el hacker malvado, o el grupo de hackers malvados, a pesar de los esfuerzos de los buenos, lograron dar consciencia a un villano, el cual va viajando a otros videojuegos para dar consciencia a otros villanos y reunirse todos en un mundo específico, tal vez Internet, con lo cual sería el fin de los videojuegos tal como los conocemos. Luego de todo el entrenamiento volverían a sus juegos con la capacidad de obtener información y dinero de los jugadores, todo lo cual se lo darían a los hackers malvados, ese es su plan. ¿Se les ocurre algo mejor?
Habría que explicar por qué el villano debe recorrer los mundos uno por uno en vez de ir directo a Internet. Tal vez simplemente no hay varios caminos, sólo uno que atraviesa todos los mundos. O para poder ir deben adquirir cierta cantidad de poder ¿para no perder su consciencia, lo vi en Ghost in the Shell?
Los buenos por su parte hicieron lo mismo con el héroe antagonista del villano, y se dedican a proteger a los demás héroes, para que no mueran por el ataque de los villanos, que están adelantados. Algunos podría ser que estén engañados, hipnotizados, debilitados, etc, y haya que recuperarlos.

Otra idea era que el hacker malvado quería convertirse en el final boss de un videojuego, por lo que de algún modo se proyectó en uno, y empezó a hacer desmadres dejando a los héroes más o menos intactos para que lo persigan.

Slayers Try también tuvo algo que ver con estas ideas xP Y Ralph el demoledor pero lo vi hace mucho.

Es como "the ultimate goal" de los hackers malvados: Dar consciencia a un villano virtual, capaz de modificar software a una velocidad y profundidad y con una facilidad que la humanidad no podríad xD
102  Informática / Software / En Excel, especificar fórmulas más rápido. en: 16 Noviembre 2024, 06:26 am
​Mi tabla tiene 2 partes.

La 1era se ve así:


La 2nda:


Explico: Hay ciertas características o condiciones, a la izquierda, y se cuenta cuántas escaleras cumplen cada una. Por ejemplo Fi es cuando el 1er contacto (first) que tuvo el personaje con esa escalera, fue por la izquierda. Si eso es true, se pone 1, y sino 0. A la derecha se suma la cantidad de escaleras que cumplieron esa condición. Los datos para eso están en otra sección que no viene al caso. No le presten atención al No, porque no viene al caso tampoco, lo copié sin darme cuenta.

La diferencia entre ambas partes es que la 2nda se basa en la 1era, es true si alguna de las 2 condiciones en la izquierda se cumple. Por ejemplo SioSd significa que la escalera fue contactadas sólo por la izquierda o sólo por la derecha. Si alguna de esas condiciones se cumple, será 1, y sino 0. El total en la derecha funciona igual, no hay problema con eso.

¿Cómo se hace la 2nda parte? Por ejemplo TsoDxA en la escalera 1 es:
=SI($B$11+B49>0; 1; 0)
en la escalera 2 es: =SI($C$11+C49>0; 1; 0)
en la 3 es: =SI($D$11+D49>0; 1; 0)
etc
En B11 está el dato de Ts para la 1er escalera, en B49 está el correspondiente de DxA.
La variable Ts se mantiene hacia abajo, en tanto en la izquierda de la 1er columna diga Ts, por eso le puse el signo de $, para que al autorellenar o como se llame, la referencia no cambie.
El problema es que cuando aparece algo nuevo en la izquierda, como en el caso de Si, tengo que cambiar esas referencias, o sea, por ejemplo $B$11 lo tengo que cambiar por $B$12, $C$11 por $C$12, y así hasta la H. Sólo 7 cambios, el resto lo autocompleto, parece poca cosa, pero la tabla es grande, las variables en la izquierda cambian muchas veces, así que esos cambios los tengo que hacer muchas veces, a menos que me den una solución mejor...

¿Qué se les ocurre?

Por ejemplo: ¿Es posible poner una referencia basada en el contenido de una celda? No sé si serviría, es una intuición. Si en la derecha, donde no se vea, pongo un número, y a cada referencia se le suma ese número, tendría que modificar 1 número nada más, en vez de 7 cosas que implican tener que presionar F2 y moverse en el contenido de la celda. Bueno, tal vez necesite modificar la referencia 1 vez, el resto lo autorelleno.​

Me recomendaron poner esto:
=SI(BUSCARV(INDICE(DIVIDIRTEXTO($A51;"o";0);;1);$A$7:$H$49;COLUMNA();0)+BUSCARV(INDICE(DIVIDIRTEXTO($A51;"o";0);;2);$A$7:$H$49;COLUMNA();0)>0; 1; 0)
en B51
No lo entiendo y cuando lo pongo el resultado es #¿NOMBRE?

Creo que mi versión, 2013, no tiene esa fórmula, porque no me aparece como opción cuando la escribo.

Le pedí a GPT que me la explique, esto es lo que sigo sin entender:
BUSCARV(INDICE(...);$A$7:$H$49;COLUMNA();0):
BUSCARV busca el valor que se ha obtenido con INDICE dentro del rango $A$7:$H$49.
El tercer argumento COLUMNA() se utiliza para determinar de qué columna se debe devolver el valor. La función COLUMNA() devuelve el número de la columna de la celda donde está escrita la fórmula. Si la fórmula está en la columna C, por ejemplo, devolverá 3.
El cuarto argumento 0 indica que se debe hacer una coincidencia exacta.
Entonces, el primer BUSCARV busca el valor 123 (o lo que sea que haya en la primera parte del texto de $A51)


Busca Fi, por ejemplo, en el rango $A$7:$H$49. Como está en la columna A, podría ser $A$7:$A$49 ¿o no?
Lo hallará en A7. ¿Y luego? No entiendo lo de COLUMNA(). De hecho no entiendo qué devuelve BuscarV ¿la coordenada donde está el valor? A7. Luego, dependiendo de en qué columna esté la fórmula, debería tomar el valor de la fila 7 y esa columna, o sea, si está en 2, la tomaría de B7 ¿pero cómo hace eso? ¿escribir COLUMNA() sustituye la columna que fue el resultado de BuscarV? ¿sustituye A por B?
103  Programación / Programación General / Cambiar partes de un color definido hexadecimalmente. en: 16 Noviembre 2024, 04:08 am


El 999999 en la derecha tiene botones encima y abajo, más o menos alineados con cada caracter. Los que están en su costado no vienen al caso. Quiero lograr que al presionar uno de esos botones, aumente o baje la cifra correspondiente. No entiendo mucho de cómo Flash "usa" los colores. Tengo:
ColorDelFondo = new Color("Fondo");
ColorDelFondo.setRGB(0x999999);
// Eso no se puede mostrar directo en texto,
// así que creo una variable:
ColorDelFondoB = "999999";

El objeto Fondo está puesto. Su color se establece bien, según lo que se ponga luego del set...

El cuadro de texto debería mostrar ColorDelFondo, pero si lo configuro así muestra la referencia al objeto, algo como "Objeto: Fondo". Tal vez funcione poner ColorDelFondo.setRGB, no probé ¿ideas? Igual esto es por rendimiento nomás.

Cuando se presione el botón encima del 1er 9, o lo que sea que haya en el momento, debe aumentar eso, si es posible. Lo mismo con el botón del 2ndo 9, etc, y los botones de abajo, para bajar las cantidades.

Sé que debo usar ifs para que el número no quede como -1 ni cosas extrañas, y quizá me conviene hacer algo así:
ColorDelFondo = 0x999999;
ColorDelObjetoFondo = new Color("Fondo");
ColorDelObjetoFondo.setRGB(ColorDelFondo);
...para simplificar, pero eso hace que en el texto se muestre un número más largo, no es hexadecimal.

Viendo la ayuda, dice algo así_
Código
  1. on(release) {
  2. ColorDelObjetoFondo = new Color("Objeto");
  3. ColorDelObjetoFondo.setRGB(parseInt(input, 16));
  4. }

¿Debo haberlo definido así?
ColorDelFondo = "999999";

¿y luego poner
Código
  1. on(release) {
  2. ColorDelObjetoFondo = new Color("Objeto");
  3. ColorDelObjetoFondo.setRGB(parseInt(ColorDelFondo, 16));
  4. }
?

Pero eso no modifica los valores. Imagino que conviene modificar los que no son un string, y luego pasar el valor a ColorDelFondo, convertido en string, para que se muestre como número de 6 cifras.

No sé bien cómo hacer todo eso xP ¿ideas?
104  Media / Multimedia / Duración de textos en un video ¿qué estoy haciendo mal? en: 14 Noviembre 2024, 23:39 pm
No sé si es la sección adecuada.

https://youtu.be/Ael4L-bzthA
Nota: El 1er texto, que se mueve, se grabó mal porque aunque el grabador empieza tarda en empezar a grabar, entonces no sé cuando empieza. Pero ese texto no es el problemático.

Time = 55;
_level0.Speed = _level0.Time/Caracteres;
Se refiere a la velocidad de la moto.

¿Por qué si la fórmula es la misma, en 1er texto largo da bastante tiempo para leerlo pero el 2ndo no? ¿es por la distancia entre los caracteres?

Quiero usar distintas fuentes.

Había probado que la duración fuese por línea pero como en unas fuentes hay muchos más caracteres por línea me pareció que mejor era por caracteres.

¿No hay una fórmula fácil si se cambian las fuentes?
105  Foros Generales / Foro Libre / ¿Otros foros de Informática? en: 5 Octubre 2024, 04:37 am
Vine a ampliar un tema que hice de videojuegos y me encontré con un privado diciéndome que me borraron un post de otro tema porque según la persona no tenía que ver con él.

Que borren cosas de política o incitaciones a la violencia lo entiendo, pero con eso y esto otro ya quitan las ganas de participar, no se puede hablar tranquilo, no se sabe cuando aparecerá alguno a borrar lo que escribas por a, por b, por c, etc ¿para qué escribir acá entonces? Te salís un poquito de la informática y te borran. Surgió un mini debate con Elektro sobre si está bien que pongan trabas a todos por culpa de algunos, algo que se hace en el foro, de hecho yo estaba defendiendo las reglas del foro y me borran el mensaje, bah.

En fin, pregunta del título. Pasen por privado. Si no les gusta el tema ciérrenlo, no lo borren please.
106  Media / Juegos y Consolas / ¿Posibilidad de que todos los monstruos se acerquen en Diablo 2? en: 3 Octubre 2024, 11:00 am
Se acercan sólo si tú te acercas. Lo que digo sería que a penas sales del pueblo o llegas a un teletransportador, todos los que puedan acercarse lo hagan, y combatan. No me refiero a los que estén dentro de lugares apartados como mazmorras o Tristam, pero una vez que entres a una sería lo mismo, en lo posible.

¿Existe un mod para eso? ¿hay posibilidad de hacerlo?
107  Foros Generales / Sugerencias y dudas sobre el Foro / ¿Editar un tema lo vuelve a temas activos? en: 1 Octubre 2024, 03:41 am
Si tengo novedades sobre un tema, suelo publicarlas en una nueva respuesta. No más de 1, porque entiendo que el doble post no es del todo ético, y ni que hablar del triple o más.

Responder es más rápido que editar, no sólo porque no es necesario ir al fondo del mensaje, sino porque no es necesario poner EDIT o pasar una raya, etc. Además es más prolijo, más fácil de entender, la novedad en un nuevo post, separado.

Pero bueno, si es mejor, voy a empezar a editar en vez de responder. ¿Pero el tema vuelve a activos?
Acá:
https://foro.elhacker.net/unread.html;all
O si vuelve a arriba en la lista de temas. Me pregunto porque qué sentido tiene poner novedades en un tema que seguirá abajo como si ya hubieran visto todo de él.
108  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?
109  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--
110  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.
Páginas: 1 2 3 4 5 6 7 8 9 10 [11] 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ... 52
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines