!7 static int polys = 2, corners = 4; !include #1015048 // AI Game & API p-autorestart { newImageText = "New Letter!"; gameTitle = "A. I. Game 8.3"; reproZoom = 1; makeInstruction(); pGame(); swing { final JSpinner spinner = jSpinner(polys, 1, 100); addToWindowPack_keepWidth(is, withMargin(jRightAligned(withLabel("Number of polys to use:", spinner)))); onChange(spinner, r { polys = intFromSpinner(spinner); makeInstruction(); restartAIs(); }); final JSpinner spinner2 = jSpinner(corners, 3, 100); addToWindowPack_keepWidth(is, withMargin(jRightAligned(withLabel("Number of corners for each polygon:", spinner2)))); onChange(spinner2, r { corners = intFromSpinner(spinner2); makeInstruction(); restartAIs(); }); clickButton(last(aiButtons)); // Start the winner AI! } } svoid makeInstruction { setInstruction("Reproduce this image with " + n2(polys, "poly") + ", each having " + corners + " corners:"); } sclass Submission extends BackgroundPlus { *() {} *(BackgroundPlus b) { copyFields(b, this); check(); } void check { assertEqualsQuick(polys, l(things)); for (PolygonWithColor p : things) assertEqualsQuick(corners, l(p.points)); } } !include #1014964 // Random letter puzzle maker /////////////// // RENDERERS // /////////////// static BufferedImage renderImage1(Submission s) { ret renderBackgroundPlusPolys(w, h, s); } static BufferedImage renderWithHints(Submission s) { ret renderBackgroundPlusPolys_withHints(w, h, s); } ///////////////////////////////// // AIs. Just add your own here // ///////////////////////////////// AI_Random_abstract > AI_Random { Submission guess() { ret Submission(randomBackgroundPlusPolys(w, h, polys, corners)); } } AI_RandomWithVariation_abstract > AI_RandomWithVariation { AI_RandomWithVariation() { super(new AI_Random); } Submission vary(Submission s) { ret varyBackgroundPlusPolys(s, w, h); } } !include #1014957 // AI_Racer