Primero, para aquellos que no están familiarizados con el juego, así es como funciona el juego,
El objetivo del juego es apagar todas las luces, por eso se llama "Lights Out", y cada vez que se presiona el botón / luz se 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 sandalias SR o sandalias JK. Esto se debe a su capacidad de actuar como elemento de almacenamiento (el estado inicial y el siguiente). Pero parece que no puedo pensar en formas de implementarlos 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 forma de hacer esto?
fuente
Diría que los flip flops T probablemente serían los más fáciles, ya que puedes alternar su estado de salida con una sola entrada. Puede usar un solo flip flop para cada LED y con la entrada vinculada a su botón y la salida vinculada a su LED. Entonces podría tener cada botón atado a las entradas de los 4 flip flops adyacentes para alternar también su estado.
Si desea utilizar los flip flops JK, puede hacer que los flip flops T pasen su entrada a ambas entradas (J y K)
fuente
Si uno quisiera construir un juego de este tipo hasta 7x7 por lógica discreta, el diseño más práctico probablemente sería usar un registro de turno circulante para mantener el estado del tablero y un contador de seis bits para realizar un seguimiento del turno posición de los datos dentro del registro. Cambie los datos a través de la palanca de cambios en grupos de 8 bits para manejar una pantalla multiplexada y escanee un teclado multiplexado. Tenga un contador de "flip light" de siete bits que se ejecutará 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. Cambie el estado de la luz actual cuando se aplique todo lo siguiente:
Tenga en cuenta que si bien se necesitaría una cantidad significativa de lógica para decodificar esos estados de contador, sería trivial en comparación con la cantidad de chips necesarios para implementar cada luz por separado.
fuente