Couple of things I’ve noticed in my first quick glance, if you press a wrong button and hit the power button as if to reset, it will wait a second and make a first move as if is starting a new game, but no button presses by the user will register (which it shouldnt anyway, as it is supposed to be in the off state).
You also have a problem similar to one I had, if a button comes up twice in a row, it may flash and/or only play the sound the first time. The sound issue might be due to the speed of playback being shorter than the time to play the sound itself. I’m not sure offhand what would make the flash not occur, without diving into your code.
Ill play around a lil more and see if I notice anything else.