!7 static int circles = 1; !include #1015048 // AI Game & API p-autorestart { newImageText = "New Letter!"; gameTitle = "A. I. Game 8.4"; mixReproWithImage = true; makeInstruction(); pGame(); swing { loadImageSnippet(#1101188); // Instagram logo final JSpinner spinner = jSpinner(circles, 1, 100); addToWindowPack_keepWidth(is, withMargin(jRightAligned(withLabel("Number of circles to use:", spinner)))); onChange(spinner, r { circles = intFromSpinner(spinner); makeInstruction(); restartAIs(); }); clickButton(last(aiButtons)); // Start the winner AI! } } svoid makeInstruction { setInstruction("Reproduce this image with " + n2(circles, "circle") + ":"); } sclass Submission extends BackgroundPlus { *() {} *(BackgroundPlus b) { copyFields(b, this); check(); } void check { assertEqualsQuick(circles, l(things)); } } !include #1014964 // Random letter puzzle maker /////////////// // RENDERERS // /////////////// static BufferedImage renderImage1(Submission s) { ret renderBackgroundPlusCircles(w, h, s); } static BufferedImage renderWithHints(Submission s) { ret renderBackgroundPlusCircles_withHints(w, h, s); } ///////////////////////////////// // AIs. Just add your own here // ///////////////////////////////// AI_Random_abstract > AI_Random { Submission guess() { ret Submission(randomBackgroundPlusCircles(w, h, circles)); } } AI_RandomWithVariation_abstract > AI_RandomWithVariation { AI_RandomWithVariation() { super(new AI_Random); } Submission vary(Submission s) { ret varyBackgroundPlusCircles(s, w, h); } } !include #1014957 // AI_Racer