Skip to content

Commit

Permalink
Extracted interface
Browse files Browse the repository at this point in the history
  • Loading branch information
yadavvi91 committed Sep 9, 2023
1 parent 315ba99 commit fed1a8a
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 20 deletions.
18 changes: 12 additions & 6 deletions src/main/java/org/yadavvi/ConsoleUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,34 @@
import java.io.PrintStream;
import java.util.Scanner;

public class ConsoleUI {
public class ConsoleUI implements UI {

void showNextGuessPrompt(PrintStream out) {
@Override
public void showNextGuessPrompt(PrintStream out) {
out.println("Your guess? ");
}

char getGuess(InputStream in) {
@Override
public char getGuess(InputStream in) {
return new Scanner(in).nextLine().charAt(0);
}

void showAlreadyGuessed(String guesses, PrintStream out) {
@Override
public void showAlreadyGuessed(String guesses, PrintStream out) {
out.println("You've already guessed '" + guesses + "', try another letter.");
}

void showYouWon(PrintStream out) {
@Override
public void showYouWon(PrintStream out) {
out.println("YOU WON!");
}

void showGuesses(String guesses, PrintStream out) {
@Override
public void showGuesses(String guesses, PrintStream out) {
out.println("Guesses: " + guesses);
}

@Override
public void showGallows(int errorCount, PrintStream out) {
switch (errorCount) {
case 0:
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/org/yadavvi/Dictionary.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package org.yadavvi;

public interface Dictionary {
String selectWord();
}
5 changes: 3 additions & 2 deletions src/main/java/org/yadavvi/FixedDictionary.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package org.yadavvi;

public class FixedDictionary {
String selectWord() {
public class FixedDictionary implements Dictionary {
@Override
public String selectWord() {
return "meatball";
}
}
24 changes: 12 additions & 12 deletions src/main/java/org/yadavvi/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,22 @@ public static void main(String[] args) {
InputStream in = System.in;
PrintStream out = System.out;

FixedDictionary fixedDictionary = new FixedDictionary();
ConsoleUI consoleUi = new ConsoleUI();
Dictionary dictionary = new FixedDictionary();
UI ui = new ConsoleUI();

String word = fixedDictionary.selectWord();
String word = dictionary.selectWord();
String matched = word;
String lettersUsed = "";
String guesses = repeat("_ ", word.length());
int badGuessCount = 0;
while (badGuessCount < 6 && !matched.equals(repeat("_", word.length()))) {
consoleUi.showGallows(badGuessCount, out);
consoleUi.showGuesses(guesses, out);
consoleUi.showNextGuessPrompt(out);
char guess = consoleUi.getGuess(in);
ui.showGallows(badGuessCount, out);
ui.showGuesses(guesses, out);
ui.showNextGuessPrompt(out);
char guess = ui.getGuess(in);

if (lettersUsed.indexOf(guess) >= 0) {
consoleUi.showAlreadyGuessed(guesses, out);
ui.showAlreadyGuessed(guesses, out);
} else {
lettersUsed += guess;
if (matched.indexOf(guess) >= 0) {
Expand All @@ -49,15 +49,15 @@ public static void main(String[] args) {
} else {
++badGuessCount;
if (badGuessCount == 6) {
consoleUi.showGallows(badGuessCount, out);
ui.showGallows(badGuessCount, out);
break;
}
}
}
if (matched.equals(repeat("_", word.length()))) {
consoleUi.showGallows(badGuessCount, out);
consoleUi.showGuesses(guesses, out);
consoleUi.showYouWon(out);
ui.showGallows(badGuessCount, out);
ui.showGuesses(guesses, out);
ui.showYouWon(out);
}
}
}
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/org/yadavvi/UI.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.yadavvi;

import java.io.InputStream;
import java.io.PrintStream;

public interface UI {
void showNextGuessPrompt(PrintStream out);

char getGuess(InputStream in);

void showAlreadyGuessed(String guesses, PrintStream out);

void showYouWon(PrintStream out);

void showGuesses(String guesses, PrintStream out);

void showGallows(int errorCount, PrintStream out);
}

0 comments on commit fed1a8a

Please sign in to comment.