Autor Tema: Juegos para ser programados

0 Usuarios y 1 Visitante están viendo este tema.

03 Diciembre, 2023, 06:24 am
Leído 61 veces

Tachikomaia

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 601
  • País: uy
  • Karma: +0/-0
  • Sexo: Masculino
¿Qué piensan respecto a cuales son los posibles juegos que pueden hacerse, o los tipos de dudas que un programa puede intentar resolver?

Yo prefiero pensar en esas cosas e intentar hacerlas.

Lo que plantean ahí parecen problemas randoms y muy adornado o desviado, cuando se podría plantear el problema directamente, aunque supongo que los problemas están conectados y parte de la gracia es seguir la historia, bue...

Acá va lo mío por si alguien le interesa:
Juegos:
Spoiler
Juego 1: El jugador gana si durante 3 segundos no hace cambios en el juego; mover el mouse, hacer clic o presionar una tecla antes de tiempo es game over.
Tratando de hacer una animación para este estuve luchando contra algo que no veo que sea mi culpa, un bug del programa que uso (Macromedia Flash 5): Poner muchas cosas transparentes encima de otras, hace que todas se vuelvan invisibles, o más transparentes de lo que deben.
https://foro.elhacker.net/programacion_general/iquestcomo_programo_una_luz_expandiendose-t519005.0.html
Luego de resolverlo me puse a pensar qué situación podría ejemplificar ese juego (o su lógica o reglas), porque inicialmente mi idea fue que sea similar al juego Semáforo (es uno en que alguien dice rojo y los demás deben detenerse, amarillo y deben caminar, verde y deben correr), pero luego quise poner algo más complejo.
Lo mejor que se me ocurrió en mi opinión es un camaleón que debe permanecer camuflado hasta que un bicho se le acerque suficiente; mover el mouse, hacer clic o presionar una tecla quitaría el camuflaje y sería game over. Anduve averiguando juegos en que haya camaleones, porque yo no quiero dibujarlos. GPT me recomendó uno, vi un Speedrun sobre él pero ahí no hay, me dijo el jugador.
Lo que decidí fue tomar una lagartija del juego Evo: Search of the Eden, y ponerle la lengua de Yoshi de Super Mario World, pero no lo hice, y creo que no lo haré, no quiero dibujar ni editar dibujos, por ahora al menos. Y decidí hacer 1ero los otros juegos, que, contrario a lo que creí, son más fáciles de programar que este.

Juego 2: El jugador gana si mueve el mouse.
También para este pensé contextos, para todos, pero al final decidí no aplicarlos por ahora.
Es sencillo, pero en MF5 por algún motivo al inicio se asume que el mouse se mueve, así que tuve que poner un parche, una repetición hasta que se capte que no se movió.
Código: [Seleccionar]
Escena 1
   actions for fotograma 1
      // Guardar posición del mouse.
      MousePosX = _xmouse;
      MousePosY = _ymouse;
   actions for fotograma 2
      // ¿El mouse se mantuvo quieto?
      if (MousePosX == _xmouse && MousePosY == _ymouse) {
         // Sí, empezar el juego.
         gotoAndPlay (3);
      } else {
         // No, ir al fotograma 1 a guardar su posición y se volverá a este.
         gotoAndPlay (1);
      }
   actions for fotograma 3
      // ¿El mouse se movió?
      if (MousePosX != _xmouse or MousePosY != _ymouse) {
         // Sí, mostrar mensaje de que se ganó el juego.
         gotoAndStop (5);
      }
   actions for fotograma 4
      if (MousePosX != _xmouse or MousePosY != _ymouse) {
         // Sí, mostrar mensaje de que se ganó el juego.
         gotoAndStop (5);
      } else {
         // No, volver a analizar.
         gotoAndPlay (3);
      }

Juego 3: El jugador gana si se hace clic.
Anduve averiguando si se puede hacer sin usar un botón, y por lo visto no.
Código: [Seleccionar]
Escena 1
   actions for fotograma 1
      stop ();
   actions for Fondo
      on (press) {
         gotoAndStop (2);
      }

Juego 4: El jugador gana si se presiona una tecla.
Anduve leyendo y probando distintas formas de hacerlo. Si el jugador entró al juego usando Enter, creo que el juego capta que se presionó esa tecla, y se gana sin siquiera empezar. Para evitar eso, y dentro de las opciones que creí posibles, lo mejor que se me ocurrió creo que fue:
Código: [Seleccionar]
Escena 1
   actions for fotograma 2
      // Esto está en un objeto:
      onClipEvent (keyDown) {
         // Cuando se presiona una tecla, el juego reinicia. Se asume que se inició el juego y aún no se soltó la tecla con la que se inició, entonces se reinicia hasta que se suelta.
         _level0.gotoAndPlay (1);
      }
   actions for fotograma 3
      // Esto está en un objeto:
      onClipEvent (keyDown) {
            // Cuando se presiona una tecla, se muestra el mensaje "Ganaste".
         _level0.gotoAndStop (5);
      }
   actions for fotograma 4
      gotoAndPlay (3);
Algunas teclas no hacen el efecto, no sé si es posible que lo hagan.

Juego 5: He dicho 4 formas en que se puede ganar un juego. Podría ser también por emitir un sonido, o por otra cosa, pero en MF5 creo que no se puede e igual no tengo micrófono. El siguiente juego debe ser uno de los anteriores agregándole o complicándole algo. ¿Qué puede ser? ¡Responder esto es parte del reto!
[cerrar]

Dudas y programas que las resuelven:
Spoiler
Sobre esto pensaba hace años, ahora sólo estoy copiando dudas sobre juegos de rol e intentando hacer que los códigos sean muy prolijos y el programa genere grafos de lo que está haciendo. Por ahora tengo esto:

En la 1er columna está la duda más simple: El enemigo se puede vencer mediante 1 ataque, sólo hay que elegir el ataque indicado y listo. Lo que está en las celdas no puede verse todo en la imagen, claro, para eso tienes que verlo en Excel o en Flash, yo los podría copiar aquí también pero no te pierdes de mucho.
En la 3er columna está una duda más compleja: El enemigo no puede vencerse medianate sólo 1 acción, se requieren varias, hay que buscar "el camino más corto".
En la 2nda columna está la duda más simple pero "alineada" con la duda de la siguiente columna.
En la 4ta está la duda 2 o de la 3era columna pero alineada a la duda 3, de la 5ta columna.
En la 5ta columna está la duda 3, que aún no la copié toda. Aquí se consideran los puntos de vida de quien ataca, pero no cambian.

Proximamente será atacado, tendrán defensa, velocidad... en fin, esa era la idea, pero en realidad nunca fui bueno haciendo juegos de rol, los quiero realistas pero no sé suficiente.

¿Qué tipos de dudas hay? Esa es la cuestión de fondo.

Las más simples, como di a entender, son las que pueden resolverse con una sola acción, cuya consecuencia puede analizarse inmediatamente. Adivinar un número, un texto, exceder un número, etc.

Hay otra que se puede plantear como una acción: ¿Qué serie de números logra el objetivo (o cumple la condición)? Pero en realidad son varias, y creo que es más fácil considerarlas así.

¿Qué más? Dudas en que las acciones no dan siempre el mismo resultado (hay azar), en fin, piensa tú...

¿Qué pasa si no sabes cuales son las acciones posibles? Puedes intentar hacer un programa que las averigue. ¿Cómo? No llegué a tanto.

¿Y si no sabes describir las condiciones que quieres que se cumplan? Lo mismo. Intenté hacer un programa que generara listas de posibles condiciones, pero era mucho para mí y lo dejé.

¿Y si no sabes las consecuencias de las acciones? Lo mismo.

Hay un tipo de duda que me resulta problemático: Deducir en base a datos. El juego Mastermind, en realidad. No sirve buscar el camino más corto, porque eso es elegir el número a adivinar, pero no se sabe cual es, se debe deducir. Creo que la solución para esto es hacer un programa que genere... ¡programas! Bueno, sólo qué número decir en cada pista. Luego probarlos con cada número posible, a ver cual programa tarda más en promedio, y cual es el que no tiene tan buen promedio pero nunca tarda demasiado.

En fin, la duda más grande es cómo mejorar al universo, digo, cómo evitar que las mujeres se enojen, asusten, asqueen, etc, de que uno respire.
[cerrar]

Este mensaje ha sido separado de este otro hilo, que tiene una motivación muy específica.