Mastermind.
Added more rendering methods.
This commit is contained in:
@@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user