TL;DR: Yeah, making a control flowchart is really effective for your problem. It lets you easily visualize what things fit together and once you got that picture you can code the missing pieces into place after you got the stubs.
For the problem you specified, a control flow document written by hand iterated a couple of times will be the "best"(nothings truly the best) choice. Since you're having trouble deciding how you want to piece things together, it's good to figure out how it will all "fit" together at a larger level.
Answer the big questions, put them into some sort of logical flow and then, if necessary, do it again but trying to piece together the smaller details. Don't get too descriptive in your flow chart though, you will soon realize that the smaller details are something you're going to have to answer by writing the code itself. Say you write a high-level flow chart, you could make a flow-chart for each complicated piece on its own!
A good flow chart should answer. . . The start, the middle, the end, and logical branching.
Note: And again, nothing will ever really be faster than doing it on paper where you can just keep jotting things down.
Note2: Also when you're facing problems with your code, the best practice is to see what part of the composition is holding you back and rewrite that piece/module to make it more composable. When rewriting, make sure anything that's being used by multiple things is as decoupled as possible. Anything that's mission-specific should be used sparingly; ideally used in only one area of the code.
Tip: Make sure your charts on paper are organized. IE: Descriptive title, page details, concise bubbles.
__________________________
Edit
An important addition I just want to finish adding is that, all together, I would do it like this:
GDD( Design Of Game): Just a whole bunch of notes, drawings, sketches, ideas all thrown into a folder stapled in relevant pairs.
Flow Charts( Logic of Game): As described above, used to help define interactions and workflows and lay it all out
Flowchart + Drawings( Gui ): This has always been my sore spot when it comes to design because I never have a solid proof GUI choice. Knowing the capabilities of your GUI framework and how it works really helps here. First describe what you want your GUIS to do and how they interface with your game VIA a flowchart. Should be relatively high level. Then, draw a literal ton of iterations how you want them to look. If you don't have a physical visualization on paper it's really hard to imagine how it would look like in code.