WordGuesser program getRules() method not working
Hello. Here is my TwoPlayerGame class
package com.org.wordguessing;
publicabstractclass TwoPlayerGame{
publicstaticfinalint PLAYER_ONE = 1;
publicstaticfinalint PLAYER_TWO = 2;
protectedboolean onePlaysNext =true;
publicvoid setPlayer(int starter){
if (starter == PLAYER_TWO)
onePlaysNext =false;
else onePlaysNext =true;
}
publicint getPlayer(){
if (onePlaysNext)
return PLAYER_ONE;
elsereturn PLAYER_TWO;
}
publicvoid changePlayer(){
onePlaysNext = !onePlaysNext;
}
public String getRules(){
return"The rules of this game are: ";
}
publicabstractboolean gameOver();
publicabstract String getWinner();
}
And here is my WordGuesser class
package com.org.wordguessing;
import java.util.Scanner;
publicclass WordGuesserextends TwoPlayerGame{
private String secretWord;
private StringBuffer currentWord;
private StringBuffer previousGuesses;
privateint unguessedLetters;
private Scanner s;
publicstaticvoid main(String[] args){
WordGuesser g =new WordGuesser();
g.play();
}
public WordGuesser(){
s =new Scanner(System.in);
secretWord = getSecretWord();
currentWord =new StringBuffer(secretWord);
previousGuesses =new StringBuffer();
for (int k = 0; k < secretWord.length(); k++)
currentWord.setCharAt(k,'*');
unguessedLetters = secretWord.length();
}
public String getPreviousGuesses(){
return previousGuesses.toString();
}
public String getCurrentWord(){
return currentWord.toString();
}
private String getSecretWord(){
int num = (int)(Math.random()*10);
switch (num)
{case 0:return"SOFTWARE";
case 1:return"SOLUTION";
case 2:return"CONSTANT";
case 3:return"COMPILER";
case 4:return"ABSTRACT";
case 5:return"ABNORMAL";
case 6:return"ARGUMENT";
case 7:return"QUESTION";
case 8:return"UTILIZES";
case 9:return"VARIABLE";
default:return"MISTAKES";
}
}
privateboolean guessLetter(char letter){
previousGuesses.append(letter);
if (secretWord.indexOf(letter) == -1)
returnfalse;
{for (int k = 0; k < secretWord.length(); k++)
{if (secretWord.charAt(k) == letter)
{if (currentWord.charAt(k) == letter)
returnfalse;
currentWord.setCharAt(k,letter);
unguessedLetters--;
}
}
returntrue;
}
}
public String getRules(){
return"\n*** The Rules of Word Guess ***\n" +
"(1) The game generates a secret word.\n" +
"(2) Two players alternate taking moves.\n" +
"(3) A move consists of guessing a letter in the word.\n" +
"(4) A player continues guessing until a letter is wrong.\n" +
"(5) The game is over when all letters of the word are guessed\n" +
"(6) The player guessing the last letter of the word wins.\n";
}
publicboolean gameOver(){
return (unguessedLetters <= 0);
}
public String getWinner(){
if (gameOver())
return"Player " + getPlayer();
elsereturn"The game is not over.";
}
public String reportGameState(){
if (!gameOver())
return"\nCurrent word " + currentWord.toString()
+" Previous guesses " + previousGuesses
+"\nPlayer " + getPlayer() +" guesses next.";
else
return"\nThe game is now over! The secret word is " + secretWord
+"\n" + getWinner() +" has won!\n";
}
public String getGamePrompt(){
return"\nGuess a letter that you think is in the secret word: ";
}
public String move(String s){
char letter = s.toUpperCase().charAt(0);
if (guessLetter(letter)){
return"Yes, the letter " + letter +
" IS in the secret word\n";
}else{
changePlayer();
return"Sorry, " + letter +" is NOT a " +
"new letter in the secret word\n";
}
}
publicvoid makeAMove(){
System.out.println("Guess a letter");
String guess = s.next();
char c = guess.charAt(0);
guessLetter(c);
move(guess);
}
publicvoid play(){
getRules();
String player1;
String player2;
while(!gameOver()){
reportGameState();
switch(getPlayer()){
case PLAYER_ONE:
player1 ="Player1";
break;
case PLAYER_TWO:
player2 ="Player2";
break;
}
getGamePrompt();
makeAMove();
}
reportGameState();
}
}
Never mind i got it.
Message was edited by:
schumacher

