I'd recommend abstracting things first:
- You have three states (two bits are enough to represent that). The output is three LEDs. You can directly infer which LEDs should be on from the state.
- You know about logic gates (AND, OR, NAND and so on). You thus know how to have two inputs (the two bits of the state) and three outputs (LEDs). If that's not clear, draw a truth table, and find the minterms needed to turn on the right LEDs.
- The next state only depends on the current state + one bit (namely, which one of the two buttons was pressed).
So, what you need is a
- two flipflops to store the state
- Logic gates to light up the LEDs corresponding to the two state bits
- Logic gates to determine the next state based on the current state + which button has been pressed
- a "clock" input that says "ok, now evaluate the state transition logic and go into the next state".
Let's roll it up from the bottom:
The clock is easiest. Just use an OR gate on both buttons. When either button has been pressed, the next state transition should be loaded into the fliflops:
+ button \
OR ---> Latch of flipflops
- button /
The LED logic is easy, too: for example, assume the internal stat
00 is your initial state. So you just build a NOR gate on the initial state that lights up center LED. You do that for all LEDs.
The "next state" logic is easy, too: just have the same logic as for the LEDs, but ANDed with the right button to produce the next internal state.