Juego Tic Tac Toe - Indicador del jugador

0

Estoy creando un circuito en Logisim que permite a dos jugadores jugar una partida de Tic Tac Toe. El juego comienza cuando se presiona el botón "Comenzar juego". Cuando se presiona, se selecciona un jugador aleatorio para hacer el primer movimiento. He usado D Flip-Flops en mi circuito.

Aquí está mi circuito D Flip-Flop en la parte superior izquierda, y cómo se ve el juego en el exterior después de presionar el botón "Comenzar juego":

Aquíestáenelinterior(heeliminadoelrestodelcircuitoparacentrarmeeneláreaalaqueserefieremipregunta),ydebajoestáelcircuitoparaelgeneradordejugadoresaleatorios(queincluyeunFlip-FlopDyunazar).Generadordenúmerosque,enestecaso,genera1o2):

Comopuedever,migeneradordereproductoresaleatoriosfuncionacomodebería.Sinembargo,miproblemaahoraesconelcambiodejugadores.Unavezqueunjugadortomasuturno,presionanelbotón"Fin de Turno" y luego las luces de "Turno del Jugador X" deben cambiar. He estado luchando para resolver esto durante bastante tiempo y no he progresado. Agradecería cualquier ayuda sobre cómo lograr esto o cualquier sugerencia sobre cómo puedo implementar esta función de jugador cambiante, así como el generador de reproductor aleatorio inicial en mi circuito de una manera mejor.

    
pregunta KOB

2 respuestas

0

Use un flip flop tipo D 'apropiado' y una fuente de reloj de alta velocidad.

Por 'correcto' me refiero a uno que tiene todos los elementos disponibles; S, R, Qbar y HABILITAR. Un IC flip flop tipo T generalmente solo ofrece CLK, T y Q, al igual que algunos IC tipo D. Un 4013 hará el trabajo muy bien.

Mantener Begin Game habilita los cambios de flip flop y Q en cada flanco ascendente de CLK . Si la fuente del reloj es muy alta (KHz +), el resultado debería ser aleatorio; la salida cambiará cientos de veces en el corto período en que Begin Game se mantiene presionada para.

Los botones End of Turn se conectan directamente a las entradas S y R del flip flop: cambian la salida asincrónicamente y la fuerzan a alto o bajo, dependiendo de qué botón se presiona. En el circuito de arriba, al presionar End of Turn para el Jugador A, ESTABLECERÁ el flip flop a 1, activando así el turno del Jugador B. Presionar End of Turn para el Jugador B RESTAURARÁ el flip flop a 0, esto activará el turno del Jugador A. Presionar el botón repetidamente no tendrá efecto si es el turno de otros jugadores.

CAVEAT : este circuito no proporciona protección para la activación de varios botones. Si cualquiera de los botones End of Turn se mantiene presionado, Begin Game no tendrá efecto ya que las entradas S y R anulan todas las demás. La entrada R tiene prioridad en un flip-flop S-R, por lo tanto, si los dos botones End of Turn se presionan juntos, la salida se mantendrá constantemente en 0, es decir, en el turno del jugador A.

Si se debe eliminar cualquiera de estas condiciones, deberá diseñar algunos circuitos para evitar que tengan un efecto. Si está diseñando una versión simple, entonces puede omitirse.

    
respondido por el CharlieHanson
1

Podrías usar un TFF (Toggle Flip Flop).

Dewikipedia: enlace

  

Si la entrada T es alta, el flip-flop T cambia de estado ("alterna") siempre que la entrada de reloj esté estroboscópica. Si la entrada T es baja, el flip-flop mantiene el valor anterior.

Así es como lo implementaría, puede haber mejores implementaciones.

El TFF mantendrá la información sobre el turno de los jugadores, si conectas "LED A del jugador A" a Q y "LED B del jugador" a Qnot, uno siempre será el opuesto del otro, por lo que solo uno está encendido a la vez, que te dice qué jugador es el turno. Luego, para cambiar entre turnos, debes alternar el flip flop. Para lograr esto, debe mantener la entrada T ALTA y hacer un solo pulso en la entrada del reloj, que invertirá el estado lógico de Q y Qnot, haciendo que cada "jugador gire el LED" cambie su estado.

Para lograr el generador de giros de jugadores aleatorios, puedes mantener presionada la entrada T ALTA mientras el juego está apagado y colocar una señal de reloj en la entrada de reloj. Cuanto mayor sea la frecuencia de reloj, mejor será la aleatoriedad, pero tenga en cuenta las limitaciones de su circuito. Eso hará que tu Q y Qnot se cambien rápido cuando el juego esté apagado. Cuando se presiona el "botón para comenzar el juego", la señal del reloj debe dejar de latir, deteniéndose en un estado lógico "bastante aleatorio", que indica qué jugador está girando. Digo bastante al azar porque es bastante difícil, si no imposible, lograr una aleatoriedad real en eletronics, pero si usa un reloj de alta frecuencia debería ser bastante difícil de controlar, a través de un interruptor mecánico, qué turno de jugador emitirá.

Si aún tienes dificultades para implementar esto, te sugiero que hagas un cambio de opinión en T-Flip Flop, estoy seguro de que hay mucho en Internet. También intentar implementar un TFF discreto en un simulador debería hacer que sea más fácil de entender.

    
respondido por el BloodOnMyBlade

Lea otras preguntas en las etiquetas