This study presents a system for automatically producing puzzles for use in game design. The system incorporates an evolutionary algorithm that optimizes the puzzle to a specified level of difficulty. The fitness function uses dynamic programming to compute the minimum number of moves required to solve a puzzle. Two types of puzzle are explored, one is a maze based on chess pieces and the other uses colors as related by the color wheel to create an implicit maze. The evolutionary algorithm is able to produce a wide variety of puzzles at specified levels of difficulty. The algorithm can thus be used to provides a library for game design or for variable game content. The technique is flexible and can be generalized to puzzles of remarkable complexity by simply upgrading the dynamic programming algorithm used in the fitness function. It is found that puzzles requiring a maximum number of moves to solve are, potentially, less difficult because such puzzles present the player with few choices. This problem is addressed by modifying the algorithm to search for puzzles with a smaller minimum number of moves required, leaving more room in the puzzle for choice and its attendant confusion.