Last active
February 20, 2016 10:36
-
-
Save umuturan/931aedea3db02ae19a37 to your computer and use it in GitHub Desktop.
Hangman
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
*HW01-HANGMAN | |
*HANGMAN CLASS | |
*Author: | |
*@Umut Can Turan | |
*21401929 | |
*/ | |
public class Hangman { | |
// Properties | |
StringBuffer secretWord; | |
StringBuffer allLetters; | |
StringBuffer usedLetters; | |
int numberOfIncorrectTries; | |
int maxAllowedIncorrectTries; | |
StringBuffer knownSoFar; | |
final int MAXTRIES = 6; | |
// Constructor | |
public Hangman() { | |
numberOfIncorrectTries = 0; | |
maxAllowedIncorrectTries = MAXTRIES; | |
allLetters = new StringBuffer("abcdefghijklmnopqrstuvwxyz"); | |
usedLetters = new StringBuffer(""); | |
secretWord = chooseSecretWord(); | |
knownSoFar = new StringBuffer(""); | |
for (int count = 0; count < secretWord.length(); count++) { | |
knownSoFar.append("*"); | |
} | |
} | |
// Methods | |
public StringBuffer chooseSecretWord() { | |
final int NUMBER_OF_WORDS; | |
int counter; | |
int wordIndex; | |
NUMBER_OF_WORDS = 5; | |
StringBuffer[] words = new StringBuffer[NUMBER_OF_WORDS]; | |
words[0] = new StringBuffer("Sea"); | |
words[1] = new StringBuffer("Saint"); | |
words[2] = new StringBuffer("Leftie"); | |
words[3] = new StringBuffer("Abraham"); | |
words[4] = new StringBuffer("Pine"); | |
// Find a random integer to get random index of array | |
wordIndex = (int) (Math.random() * NUMBER_OF_WORDS-1); | |
return words[wordIndex]; | |
} | |
public int tryThis(char letter) { | |
int returnnum = 0; | |
int counter = 0; | |
if ((letter > 64 && letter < 91) || (letter > 96 && letter < 123)) { | |
if (!hasLost()) { | |
String used = getUsedLetters(); | |
char[] usedletters = used.toLowerCase().toCharArray(); | |
String all = getAllLetters(); | |
char[] allletters = all.toLowerCase().toCharArray(); | |
String secret = secretWord.toString(); | |
char[] secretW = secret.toLowerCase().toCharArray(); | |
int lengthused = usedletters.length; | |
int lengthall = allletters.length; | |
int lengthSec = secretW.length; | |
int knownCount = 0; | |
for (int i = 0; i < lengthused; i++) | |
if (letter == usedletters[i]) | |
counter++; | |
if (counter > 0) | |
returnnum = -2; // Letter is already used! | |
else { | |
for (int i = 0; i < lengthSec; i++) { | |
if (secretW[i] == letter) { | |
knownCount++; | |
knownSoFar.replace(i, i + 1, String.valueOf(letter)); | |
usedLetters.append(letter); | |
for(int count=0; count<lengthall;count++){ | |
if(letter==allletters[count]){ | |
allLetters.delete(count,count+1); | |
} | |
} | |
/* | |
* BURADA ALL LETTERSDAN BU HARFİ SİLMEM GEREKİYOR | |
* Kİ KULLANICI KULLANILMAMIŞ KALAN HARFLERİ | |
* GÖREBİLSİN | |
*/ | |
} | |
returnnum = knownCount; | |
} | |
if (knownCount == 0) { | |
numberOfIncorrectTries++; | |
usedLetters.append(letter); | |
returnnum = knownCount; | |
} | |
} | |
} | |
else | |
returnnum = -3; // The Game is OVER! | |
} | |
else | |
returnnum = -1; // The input is invalid!! | |
return returnnum; | |
} | |
public String getAllLetters() { | |
return allLetters.toString(); | |
} | |
public String getUsedLetters() { | |
return usedLetters.toString(); | |
} | |
public int getNumOfIncorrectTries() { | |
return numberOfIncorrectTries; | |
} | |
public int getMaxAllowedIncorrectTries() { | |
return maxAllowedIncorrectTries; | |
} | |
public String getKnownSoFar() { | |
return knownSoFar.toString(); | |
} | |
public boolean isGameOver() { | |
boolean result; | |
result = false; | |
if ((numberOfIncorrectTries >= maxAllowedIncorrectTries) | |
|| (knownSoFar.toString().toLowerCase().equals(secretWord.toString().toLowerCase()))) { | |
result = true; | |
} | |
return result; | |
} | |
public boolean hasLost() { | |
return (numberOfIncorrectTries >= maxAllowedIncorrectTries); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
*HW01-HANGMAN | |
*TEST CLASS | |
*Author: | |
*@Umut Can Turan | |
*21401929 | |
*/ | |
import java.util.Scanner; | |
public class Test { | |
public static void main(String[] args) { | |
Scanner scan = new Scanner(System.in); | |
// variables | |
Hangman hangman = new Hangman(); | |
String letter; | |
int result; | |
// displaying the secret word | |
do { | |
System.out.println(); | |
System.out.println("--------------------HANGMAN-----------------"); | |
System.out.println(); | |
System.out.println("Secret Word is :" + hangman.getKnownSoFar()); | |
System.out.println("Unused letters are :" + hangman.getAllLetters()); | |
System.out.println("Used letters so far:" + hangman.getUsedLetters()); | |
System.out.println((6 - hangman.getNumOfIncorrectTries()) + " TRIES LEFT,PLEASE BE CAREFUL!"); | |
// to take the input from the user | |
System.out.print("Enter a letter :"); | |
letter = scan.next(); | |
if (letter.length() != 1) { | |
System.out.println("You have to enter a single letter!"); | |
} else { | |
result = hangman.tryThis(letter.charAt(0)); | |
// to check the correction of inputs | |
if (result == -1) | |
System.out.println("\n"+"Invalid input: " + letter.toUpperCase()); | |
else if (result == -2) { | |
System.out.println("\n"+"Letter " + letter.toUpperCase() + " is already used!"); | |
System.out.println("Please try another letter!"); | |
} | |
else if (result == -3) | |
System.out.println("Game Over..."); | |
// if the letter is not in the secret word | |
else if (result == 0) { | |
System.out.println("\n"+"Letter " + letter.toUpperCase() + " is not in the secretWord."); | |
} | |
// if the letter is in the secret word | |
else if (result > 0) { | |
hangman.getKnownSoFar(); | |
System.out.println("\n"+"Congratulations! " + letter.toUpperCase() + " is succesful!"); | |
} | |
} | |
} while (!hangman.isGameOver()); | |
// when the player won the game | |
if (hangman.knownSoFar.toString().toLowerCase().equals(hangman.secretWord.toString().toLowerCase())) | |
System.out.println(" You Win! attaboy! :)) "); | |
else | |
System.out.println(" You Lost! :(("); | |
System.out.println("The Secret Word was " + hangman.secretWord.toString().toUpperCase()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment