Write a program to allow a user to play the game, Hangman. DO NOT USE AN ARRAY The program will generate a random number (between 1 and 4581) to pick a word from the file - this is the word you then have to guess. Note: if the random number you generate is 42, you need the 42nd word - so loop 41 times picking up the word from the file and not doing anything with it, it is the 42nd you need. Here is how you will do this: String word: for (int k=0; k<41; k++) {word=scnr.nextLine(); }//end loop and now pick up the word you want word=scnr.nextLine() //this is the one you want The user will be allowed to guess a letter as many times as it takes - but 10 wrong guesses and they lose!! Eventually either they won or lost. In case they lost print out the answer. Java
Write a program to allow a user to play the game, Hangman. DO NOT USE AN ARRAY
The program will generate a random number (between 1 and 4581) to pick a word from the file - this is the word you then have to guess.
Note: if the random number you generate is 42, you need the 42nd word - so loop 41 times picking up the word from the file and not doing anything with it, it is the 42nd you need. Here is how you will do this:
String word:
for (int k=0; k<41; k++)
{word=scnr.nextLine();
}//end loop and now pick up the word you want
word=scnr.nextLine() //this is the one you want
The user will be allowed to guess a letter as many times as it takes - but 10 wrong guesses and they lose!!
Eventually either they won or lost. In case they lost print out the answer.
Java
The code for the given problem is written below in java-
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Random;
import java.util.Scanner;
public class Main{
/*
* Creating a Scanner class object which is used to get the inputs
* entered by the user
*/
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) throws FileNotFoundException {
int size=0;
char ch;
String word,randWord = null;
//Creating a random Class object
Random r = new Random();
Scanner file=new Scanner(new File("wordList.txt"));
while(file.hasNext())
{
word=file.next();
size++;
}
file.close();
while(true)
{
int num=r.nextInt((size - 1) + 1) + 1;
file=new Scanner(new File("wordList.txt"));
for(int i=1;i<=num;i++)
{
randWord=file.next();
}
file.close();
// calling a Method
guessWord(randWord.toLowerCase());
// Prompting the user to run again
System.out.print("\nDo you Want to play again (Y/N):");
ch = sc.next(".").charAt(0);
if (ch == 'y' || ch == 'Y') {
continue;
} else {
break;
}
}
}
//This method will ask the user to enter characters until user won or lost the game
private static void guessWord(String string) {
final int NO_OF_MISSES = 10;
char ch;
int miss = 0, flag, match = 0;
int len = 0;
char arr[] = new char[string.length()];
for (int i = 0; i < string.length(); i++) {
if ((string.charAt(i) >= 97 && string.charAt(i) <= 122) || (string.charAt(i) >= 65 && string.charAt(i) <= 90)) {
arr[i] = '_';
len++;
} else {
arr[i] = string.charAt(i);
}
}
while (len != 0) {
flag = 0;
match = 0;
System.out.print("Guess:");
for (int i = 0; i < string.length(); i++) {
System.out.print(arr[i] + " ");
}
System.out.print("\nPick a letter:");
ch = sc.next(".").charAt(0);
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
if (Character.isUpperCase(ch)) {
ch = Character.toLowerCase(ch);
}
} else {
System.out.println("** Not a letter **");
continue;
}
for (int i = 0; i < string.length(); i++) {
if (string.charAt(i) == ch) {
if(arr[i]=='_')
{
arr[i] = ch;
len--;
}
flag = 1;
match++;
}
}
if (flag == 0) {
System.out.println("There is no letter " + ch + ".");
miss++;
System.out.println("No of Chances left :"+(NO_OF_MISSES-miss));
if (miss == NO_OF_MISSES) {
System.out.println("You Lost the game.");
System.out.println("The Word is :" + string);
break;
}
} else {
System.out.println("There is " + match + " letter " + ch + ".");
}
}
if (len == 0)
System.out.println("You won the game.");
}
}
Step by step
Solved in 2 steps with 5 images