From de02377d84064ffd1b201d034f928a0a7d8b7f34 Mon Sep 17 00:00:00 2001 From: Jacob Signorovitch Date: Thu, 7 Nov 2024 15:57:15 -0500 Subject: [PATCH] Mastermind. Added more rendering methods. --- mastermind/src/mastermind/Main.java | 48 ++++++++++++++++++----------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/mastermind/src/mastermind/Main.java b/mastermind/src/mastermind/Main.java index af6f785..be9ff5f 100644 --- a/mastermind/src/mastermind/Main.java +++ b/mastermind/src/mastermind/Main.java @@ -103,10 +103,15 @@ class Examples { WorldCanvas c = new WorldCanvas(1000, 1000); WorldScene s = new WorldScene(1000, 1000); - IncompleteGuess incomplete = new IncompleteGuess(exampleDotsOne); + + + // WorldImage incomplete = new IncompleteGuess(exampleDotsOne).draw(); + + WorldImage guesses = new ConsGuess(new Guess(dotsOne, new Feedback(1, 2)), new ConsGuess(new Guess(dotsTwo, new Feedback(2, 5)), new MtGuess())).draw(); return - c.drawScene(s.placeImageXY(incomplete.draw(), incomplete.getW()/2, 100)) + c.drawScene(s.placeImageXY(guesses, (int)guesses.getWidth()/2, 100)) + //c.drawScene(s.placeImageXY(incomplete, (int) (incomplete.getWidth()/2), 100)) //c.drawScene(s.placeImageXY(exampleFeedback.draw(), 100, 100)) //c.drawScene(s.placeImageXY(redDot.draw(), 100, 100)) //c.drawScene(s.placeImageXY(dotsOne.draw(), 250, 250)) @@ -117,7 +122,7 @@ class Examples { class Util { static int scale = 2; - static int fontSz = 16 * scale; + static int fontSz = 24 * scale; static int gapW = 4 * scale; // The gap between objects. // Drawing methods. @@ -126,6 +131,10 @@ class Util { return new BesideAlignImage(AlignModeY.MIDDLE, img1, gap, img2); } + static WorldImage pairGapAbove(WorldImage img1, WorldImage img2) { + return new AboveAlignImage(AlignModeX.CENTER, img1, gap, img2); + } + static WorldImage strPair(String str1, String str2) { return pairGap(new TextImage(str1, fontSz, Color.black), new TextImage(str2, fontSz, Color.black)); } @@ -182,7 +191,9 @@ class GameConf { } // A list of guesses. -interface ILoGuess {} +interface ILoGuess { + WorldImage draw(); +} class ConsGuess implements ILoGuess { Guess guess; @@ -192,9 +203,17 @@ class ConsGuess implements ILoGuess { this.guess = guess; this.nxt = nxt; } + + public WorldImage draw() { + return Util.pairGapAbove(guess.draw(), this.nxt.draw()); + } } -class MtGuess implements ILoGuess {} +class MtGuess implements ILoGuess { + public WorldImage draw() { + return new EmptyImage(); + } +} class Guess { ILoDot guess; // The dots the user entered. @@ -204,6 +223,10 @@ class Guess { this.guess = guess; this.feedback = feedback; } + + WorldImage draw() { + return Util.pairGap(this.guess.draw(), this.feedback.draw()); + } } class IncompleteGuess { @@ -214,11 +237,7 @@ class IncompleteGuess { } WorldImage draw() { - return Util.pairGap(guessSoFar.draw(), Util.strPair("-", "-")); - } - - int getW() { - return this.guessSoFar.getW() + 2 * Util.gapW + 2 * Util.fontSz; + return guessSoFar.draw(); } } @@ -239,14 +258,7 @@ class Feedback { } WorldImage draw() { - WorldImage exactDigit = new TextImage(String.valueOf(this.exact), 16 * Util.scale, FontStyle.BOLD, Color.BLACK); - WorldImage inexactDigit = new TextImage(String.valueOf(this.inexact), 16 * Util.scale, FontStyle.BOLD, Color.BLACK); - - return new BesideAlignImage(AlignModeY.MIDDLE, exactDigit, Util.gap, inexactDigit); - } - - int getW() { - return 2 * 16 * Util.scale + Util.gapW; + return Util.strPair(String.valueOf(this.exact), String.valueOf(this.exact)); } }