¿Cómo implemento el juego Lights-Out usando puertas lógicas o chanclas?

9

Primero, para aquellos que no están familiarizados con el juego, así es como funciona el juego,

Elobjetivodeljuegoesapagartodaslasluces,porlotantollamadas"Lights Out", y cada vez que presione el botón / luz invierte su estado, así como sus vecinos adyacentes norte / sur / este / oeste, y eso es más o menos.

Ahora, lo que se me ocurre es usar chanclas SR o chanclas JK. Esto se debe a su capacidad para actuar como elemento de almacenamiento (el estado inicial y el estado siguiente). Pero parece que no puedo pensar en formas de implementarlas realmente.

Otra idea es que cada conjunto de botones y sus botones / luces adyacentes (NSEW) tendrán su propia tabla de verdad, como esta:

pero, ¿es posible que las variables de entrada sean las mismas que las variables de salida? ¿Hay alguna otra manera de hacer esto?

    
pregunta Julienn

3 respuestas

9

El enfoque obvio sería utilizar un procesador y hacer todo esto en el firmware.

Sin embargo, si realmente tuviera que hacer esto con cuchillos de piedra y pieles de oso por alguna razón, me gustaría dedicar un flip-flop de alternancia a cada casilla. El flip-flop de cada cuadrado se alternaría presionando su botón o cualquiera de los cuatro botones vecinos. Por supuesto, esas pulsaciones de botones deben ser rebotadas. Nuevamente, esto sería más fácil en el firmware.

Una solución de hardware no sería tan compleja, pero todo se replicaría 25 veces, por lo que es grande y tedioso de construir.

Añadido:

Al parecer, la descripción anterior no es lo suficientemente clara. Aquí hay un diagrama de lo que hay en cada celda:

Las otras 4 entradas a la puerta NAND se controlan a partir de las señales de rebote de los 4 botones circundantes que también se supone que cambian el estado de este cuadrado. Del mismo modo, la señal de rebote de este botón también va a una de las entradas de la puerta NAND de cada una de las 4 celdas circundantes.

    
respondido por el Olin Lathrop
0

Yo diría que las chancletas T probablemente sean las más fáciles, ya que puedes cambiar su estado de salida con una sola entrada. Podría usar un solo flip flop para cada LED y con la entrada vinculada a su botón y la salida vinculada a su LED. Luego, podría hacer que cada botón esté vinculado a las entradas de los 4 flip flops adyacentes para cambiar su estado también.

Si quisieras usar los flip flops JK, puedes hacer T flops con ellos pasando tu entrada a ambas entradas (J y K)

    
respondido por el Anonymous
0

Si uno quisiera construir un juego de este tipo hasta un tamaño 7x7 fuera de lógica discreta, el diseño más práctico probablemente sería usar un registro de desplazamiento circulante para mantener el estado del tablero, y un contador de seis bits para realizar un seguimiento de la posición de desplazamiento de los datos dentro del registro. Desplace los datos a través de la palanca de cambios en grupos de 8 bits para controlar una pantalla multiplexada y escanee un teclado multiplexado. Tenga un contador de "flip light" de siete bits que se ejecute cada vez que los seis bits inferiores no sean cero, o cuando el estado del bit superior coincida con el estado del botón actualmente decodificado. Cambia el estado de la luz actual siempre que se aplique todo lo siguiente:

6-bit counter isn't  xxx111
6-bit counter isn't  111xxx
7-bit counter isn't xxxxx00
7-bit counter isn't xx00xxx
7-bit counter is    00xx0xx

Tenga en cuenta que si bien se requeriría una cantidad significativa de lógica para decodificar esos estados contrarios, sería trivial en comparación con la cantidad de chips necesarios para implementar cada luz por separado.

    
respondido por el supercat

Lea otras preguntas en las etiquetas