Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import java.util.Arrays;
- /***********************************************************
- * WordGuess game is a Hangman like game for two (or more)
- * players. This is a two player version
- *
- * @author Nancy Harris & <<<< >>>>
- * @version V1 Shell to get you started
- ***********************************************************/
- public class WordGuess
- {
- private static int arrayNumber;
- private static boolean roundOver;
- private Scanner kb; // use for all keyboard entry
- private Player player1; // first player
- private Player player2; // second player
- private WordBank wordList; // the dictionary to use
- /* alternate instance variable for the players
- deactivate the individual players if you choose to
- use this version. */
- // private Player[] players;
- /*********************************************************
- * Explicit value constructor that builds a random dictioinary
- *
- * @param player1 The name of player1
- * @param player2 The name of player2
- ********************************************************/
- public WordGuess(String player1, String player2)
- {
- System.out.printf("Welcome to Word Guess %s and %s\n\n", player1, player2);
- this.player1 = new Player(player1);
- this.player2 = new Player(player2);
- wordList = new WordBank();
- }
- /*********************************************************
- * Explicit value constructor that builds a seeded dictioinary
- *
- * @param player1 The name of player1
- * @param player2 The name of player2
- * @param seed The seed to pass to WordBank constructor
- ********************************************************/
- public WordGuess(String player1, String player2, long seed)
- {
- System.out.printf("Welcome to Word Guess %s and %s\n\n", player1, player2);
- this.player1 = new Player(player1);
- this.player2 = new Player(player2);
- wordList = new WordBank(seed);
- }
- /*********************************************************
- * play game plays the game until one player reaches 10 wins
- *********************************************************/
- public void playGame()
- {
- boolean player1Playing;
- boolean player2Playing;
- boolean round;
- boolean roundOver;
- String chosenWord;
- String hyphenWord;
- String input;
- String lastTurn;
- char[] letters;
- int arrayNumber;
- int turn;
- turn = 0;
- arrayNumber = 0;
- letters = new char[26];
- chosenWord = wordList.getWord();
- hyphenWord = wordHyphen(chosenWord);
- lastTurn = "ERROR";
- kb = new Scanner(System.in);
- round = true;
- while(round == true)
- {
- do
- {
- lastTurn = hyphenWord;
- hyphenWord = fillBlank(hyphenWord, chosenWord, letters);
- System.out.println(hyphenWord);
- printLetters(letters);
- letters = fillLetter (player1, kb, letters);
- lastTurn = hyphenWord;
- hyphenWord = fillBlank(hyphenWord, chosenWord, letters);
- player1Playing = displayOutput(player1, lastTurn, hyphenWord, chosenWord);
- } while(player1Playing == true);
- if(this.roundOver == false)
- {
- do
- {
- lastTurn = hyphenWord;
- hyphenWord = fillBlank(hyphenWord, chosenWord, letters);
- System.out.println(hyphenWord);
- printLetters(letters);
- letters = fillLetter (player2, kb, letters);
- lastTurn = hyphenWord;
- hyphenWord = fillBlank(hyphenWord, chosenWord, letters);
- player2Playing = displayOutput(player2, lastTurn, hyphenWord, chosenWord);
- } while(player2Playing == true);
- }
- else
- {
- player1.toString();
- player2.toString();
- }
- }
- }
- // You may (and should) add additional methods below. They should
- // all be private to this game
- private String wordHyphen(String chosenWord)
- {
- String hyphen;
- hyphen = "";
- for(int i = 0; i < chosenWord.length(); i++)
- {
- hyphen += '-';
- }
- return hyphen;
- }
- private String fillBlank(String hyphen, String chosenWord, char[] guessedLetters)
- {
- String filledWord;
- boolean foundMatch;
- int numberGuessed;
- filledWord = "";
- numberGuessed = guessedLetters.length;
- foundMatch = false;
- for(int i = 0; i < chosenWord.length(); i++)
- {
- if(hyphen.charAt(i) == '-') //Seeing if there is a blank that can be filled
- {
- for(int n = 0; n < numberGuessed; n++) //Loops through the String of letters guessed
- {
- if(chosenWord.charAt(i) == guessedLetters[n]) //If the word at the same place as the hyphen
- //then it adds that character to the String
- {
- filledWord = filledWord + guessedLetters[n];
- foundMatch = true;
- }
- }
- if(foundMatch == false)
- {
- filledWord = filledWord + hyphen.charAt(i);
- }
- else
- {
- foundMatch = false;
- }
- }
- else //If there is already a letter
- {
- for(int n = 0; n < numberGuessed; n++)
- {
- if(hyphen.charAt(i) == guessedLetters[n])
- {
- filledWord = filledWord + guessedLetters[n];
- }
- }
- }
- }
- return filledWord;
- }
- private void listLetters(char[] letters)
- {
- for(int i = 0; i < letters.length; i++)
- {
- if(letters[i] != '\u0000')
- {
- System.out.print(letters[i] + " ");
- }
- }
- }
- private char[] fillLetter (Player player1, Scanner kb, char[] letters)
- {
- String input;
- boolean correctInput;
- System.out.println();
- System.out.println();
- System.out.printf("%s, guess a letter. ", player1.getName());
- correctInput = kb.hasNext("[A-Za-z]+");
- System.out.println();
- input = kb.next();
- for(int i = 0; i < letters.length; i++)
- {
- if(letters[i] == (input.charAt(0)))
- {
- correctInput = false;
- }
- }
- if(correctInput == true)
- {
- letters[arrayNumber] = input.charAt(0);
- arrayNumber++;
- }
- return letters;
- }
- private boolean displayOutput (Player player1, String lastTurn, String hyphenWord, String chosenWord)
- {
- boolean playing;
- playing = true;
- if(lastTurn.equals(hyphenWord))
- {
- System.out.printf("Incorrect. %s, you lose your turn.\n", player1.getName());
- playing = false;
- }
- else if(hyphenWord.equals(chosenWord))
- {
- System.out.printf("Correct. %s you win a point!\n", player1.getName());
- playing = false;
- roundOver = true;
- }
- else if(lastTurn != hyphenWord)
- {
- System.out.printf("Correct: %s go again.\n", player1.getName());
- }
- return playing;
- }
- private void printLetters(char[] letters)
- {
- Arrays.sort(letters);
- System.out.print("Used letters: ");
- for(int i = 0; i < letters.length; i++)
- {
- if(letters[i] != '\u0000')
- {
- System.out.print(letters[i] + " ");
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment