Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,4 +0,0 @@
language: java
jdk: openjdk8
after_success:
- mvn coveralls:report
4 changes: 4 additions & 0 deletions java/.vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"java.project.sourcePaths": ["src/main/java"],
"java.project.outputPath": "target/classes"
}
34 changes: 9 additions & 25 deletions java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,70 +11,54 @@
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<jupiter.version>5.7.0</jupiter.version>
<jackson.version>2.12.3</jackson.version>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<version>3.8.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- JUnit 4 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>

<dependencies>
<!-- Junit5 Dependency -->
<!-- JUnit 5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${jupiter.version}</version>
<scope>test</scope>
</dependency>

<!-- JUnit3 and Junit4 Adapter Dependency for Legacy Testing -->
<!-- JUnit 4 adapter for JUnit 5 -->
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>${jupiter.version}</version>
<scope>test</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>

</dependencies>


</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
package main.java.com.github.zipcodewilmington;
180 changes: 174 additions & 6 deletions java/src/main/java/com/github/zipcodewilmington/WordGuess.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,176 @@
package com.github.zipcodewilmington;

/**
* @author xt0fer
* @version 1.0.0
* @date 5/27/21 11:02 AM
*/
public class WordGuess {}
// @author mahala
// @version 2.0.0

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class WordGuess {

private static final int MAX_TRIES = 6;

// instance variables
private String[] words = loadWords();
private char[] secretWord;
private char[] guesses;
private int triesLeft;
private boolean wordGuessed;

private Scanner scanner = new Scanner(System.in);
private Random random = new Random();

private String[] loadWords() {
try {
InputStream is = getClass().getClassLoader().getResourceAsStream("words.txt");
if (is == null) throw new RuntimeException("words.txt not found");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
List<String> list = new ArrayList<>();
String line;
while ((line = reader.readLine()) != null) {
line = line.trim();
if (!line.isEmpty()) list.add(line);
}
return list.toArray(new String[0]);
} catch (Exception e) {
return new String[]{"cat", "dog", "bog", "cut", "hat", "run", "fun", "sun", "big", "dig"};
}
}

public WordGuess() {}

public static void main(String[] args) {
WordGuess game = new WordGuess();
game.runGame();
}

public void runGame() {
announceGame();
boolean playAgain = true;
while (playAgain) {
initializeGameState();
wordGuessed = false;

while (triesLeft > 0 && !wordGuessed) {
printCurrentState();
char guess = getNextGuess();

if (guess == '-') {
System.out.println("Quitting game.");
return;
}

process(guess);

if (isWordGuessed()) {
wordGuessed = true;
playerWon();
} else {
triesLeft--;
}
}

if (!wordGuessed) {
playerLost();
}

playAgain = askToPlayAgain();
}
gameOver();
}

public void announceGame() {
System.out.println("Let's Play Wordguess version 2.0");
}

public void gameOver() {
System.out.println("Game Over.");
}

public void initializeGameState() {
String word = words[random.nextInt(words.length)];
secretWord = word.toCharArray();
guesses = new char[secretWord.length];
for (int i = 0; i < guesses.length; i++) {
guesses[i] = '_';
}
triesLeft = MAX_TRIES;
}

public char getNextGuess() {
System.out.println("Enter a single character: ");
String input = scanner.nextLine().trim();
if (input.isEmpty()) return ' ';
return input.charAt(0);
}

public boolean isWordGuessed() {
for (char c : guesses) {
if (c == '_') return false;
}
return true;
}

public boolean askToPlayAgain() {
System.out.println("Would you like to play again? (yes/no) ");
String answer = scanner.nextLine().trim().toLowerCase();
return answer.equals("yes");
}

public void printCurrentState() {
drawHangman(MAX_TRIES - triesLeft);
System.out.println("Current Guesses: ");
printArray(guesses);
System.out.println("You have " + triesLeft + " tries left.");
}

public void drawHangman(int wrong) {
String head = wrong >= 1 ? "O" : " ";
String body = wrong >= 2 ? "|" : " ";
String lArm = wrong >= 3 ? "/" : " ";
String rArm = wrong >= 4 ? "\\" : " ";
String lLeg = wrong >= 5 ? "/" : " ";
String rLeg = wrong >= 6 ? "\\" : " ";

System.out.println(" _____");
System.out.println(" | |");
System.out.println(" | " + head);
System.out.println(" | " + lArm + body + rArm);
System.out.println(" | " + lLeg + " " + rLeg);
System.out.println(" |");
System.out.println("_|_");
}

public void printArray(char[] a) {
for (char c : a) {
System.out.print(c + " ");
}
System.out.println();
}

public void process(char guess) {
for (int i = 0; i < secretWord.length; i++) {
if (secretWord[i] == guess) {
guesses[i] = guess;
}
}
}

public void playerWon() {
System.out.println("**** ****");
printArray(guesses);
System.out.println("Congratulations, You Won!");
}

public void playerLost() {
drawHangman(MAX_TRIES);
System.out.println(":-( :-( :-(");
System.out.println("You Lost! You ran out of guesses.");
System.out.println("The Word is: " + new String(secretWord));
}
}
49 changes: 47 additions & 2 deletions java/src/main/java/com/github/zipcodewilmington/sample/Person.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,49 @@
package com.github.zipcodewilmington.sample;

public class Person {
}
public class Person implements PersonInterface {

private String firstName;
private String lastName;
private Integer age;

public Person() {
this.firstName = "";
this.lastName = "";
this.age = 0;
}

@Override
public String getFirstName() {
return firstName;
}

@Override
public void setFirstName(String firstName) {
this.firstName = firstName;
}

@Override
public String getLastName() {
return lastName;
}

@Override
public void setLastName(String lastName) {
this.lastName = lastName;
}

@Override
public Integer getAge() {
return age;
}

@Override
public void setAge(Integer age) {
this.age = age;
}

@Override
public String toString() {
return firstName + " " + lastName + ", age " + age;
}
}
Loading
Loading