Mastermind.

Added more rendering methods.
This commit is contained in:
Jacob Signorovitch
2024-11-07 15:57:15 -05:00
parent f9e94fb7a0
commit de02377d84

View File

@@ -103,10 +103,15 @@ class Examples {
WorldCanvas c = new WorldCanvas(1000, 1000); WorldCanvas c = new WorldCanvas(1000, 1000);
WorldScene s = new WorldScene(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 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(exampleFeedback.draw(), 100, 100))
//c.drawScene(s.placeImageXY(redDot.draw(), 100, 100)) //c.drawScene(s.placeImageXY(redDot.draw(), 100, 100))
//c.drawScene(s.placeImageXY(dotsOne.draw(), 250, 250)) //c.drawScene(s.placeImageXY(dotsOne.draw(), 250, 250))
@@ -117,7 +122,7 @@ class Examples {
class Util { class Util {
static int scale = 2; static int scale = 2;
static int fontSz = 16 * scale; static int fontSz = 24 * scale;
static int gapW = 4 * scale; // The gap between objects. static int gapW = 4 * scale; // The gap between objects.
// Drawing methods. // Drawing methods.
@@ -126,6 +131,10 @@ class Util {
return new BesideAlignImage(AlignModeY.MIDDLE, img1, gap, img2); 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) { static WorldImage strPair(String str1, String str2) {
return pairGap(new TextImage(str1, fontSz, Color.black), new TextImage(str2, fontSz, Color.black)); return pairGap(new TextImage(str1, fontSz, Color.black), new TextImage(str2, fontSz, Color.black));
} }
@@ -182,7 +191,9 @@ class GameConf {
} }
// A list of guesses. // A list of guesses.
interface ILoGuess {} interface ILoGuess {
WorldImage draw();
}
class ConsGuess implements ILoGuess { class ConsGuess implements ILoGuess {
Guess guess; Guess guess;
@@ -192,9 +203,17 @@ class ConsGuess implements ILoGuess {
this.guess = guess; this.guess = guess;
this.nxt = nxt; 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 { class Guess {
ILoDot guess; // The dots the user entered. ILoDot guess; // The dots the user entered.
@@ -204,6 +223,10 @@ class Guess {
this.guess = guess; this.guess = guess;
this.feedback = feedback; this.feedback = feedback;
} }
WorldImage draw() {
return Util.pairGap(this.guess.draw(), this.feedback.draw());
}
} }
class IncompleteGuess { class IncompleteGuess {
@@ -214,11 +237,7 @@ class IncompleteGuess {
} }
WorldImage draw() { WorldImage draw() {
return Util.pairGap(guessSoFar.draw(), Util.strPair("-", "-")); return guessSoFar.draw();
}
int getW() {
return this.guessSoFar.getW() + 2 * Util.gapW + 2 * Util.fontSz;
} }
} }
@@ -239,14 +258,7 @@ class Feedback {
} }
WorldImage draw() { WorldImage draw() {
WorldImage exactDigit = new TextImage(String.valueOf(this.exact), 16 * Util.scale, FontStyle.BOLD, Color.BLACK); return Util.strPair(String.valueOf(this.exact), String.valueOf(this.exact));
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;
} }
} }