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);
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));
}
}