Nice go! I like it. But I feel the method is a little too calculated, and a little too random. Actual locks have a tendancy to bind and pick in specific patterns, rather than truely random.
Also consider using a MACS of 4~7, or allow the user to select the brand of lock they are working on (this determines MACS, spools, tension needed, smooth functioning, and over-all ease or difficulty).
When playing, I felt a desire to click and drag. A more intuitive design would be nice, where one actually interacts with the picking instruments and not some arbitrary boxes. Here are my thoughts.
Use a diagonal profile of the lock, so the lock face, pick and wrench can all be seen.
Allow tension to be increased and decreased by dragging a dot or finger to various stops along the parameter of the tensioner handle. You might even allow the tensioner to show flex as greater tension is applied.
Allow the pick handle to be manipulated directly. One would drag the pick handle up, making the entire pick lift, or drag the handle down, allowing it to pivot or rock. These two methods of lift could affect neighboring pins accordingly. The pick will stop pivoting when being dragged, when it hits a set pin, or when it reaches the maximum lift, or when it bumps into a low pin befor it (time to use a deeper hook). If the pick handle springs back when released, the pin is not set (has spring). If the handle doesn't spring back, this indicates a set (or false set or over set) pin.
Allow the cylinder to rotate slightly as pins are set or false-set. This will give a greater visual appeal and realism for the setting of pins, and for correcting false-sets or indicating over-sets. Allow pins to "drop back down" on an over-set, you might even add sound like mettle clinks.
I understand these are pretty advanced ideas, and will certainly increase your code 10-fold. But I believe such a game would be very entertaining and realistic.
