Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a program that plays an interactive game of Hangman with its user. In gene

ID: 3547848 • Letter: W

Question

Write a program that plays an interactive game of Hangman with its user. In general, the

rules of Hangman are as follows:

? The object of the game is for the user to guess a secret word, given the number of

letters in the word. The number of letters is presented as a series of dashes or

underscores, like this: _ _ _ _ _ _

? At each turn, the user guesses one letter. If the guess is correct, the letter is

displayed in the correct position for the user to observe, like this: M _ _ M _ _

? If the guess is incorrect, the user

Explanation / Answer

import java.applet.Applet;

import java.awt.*;

import java.awt.event.*;

import java.util.Random;

import java.lang.reflect.Array;

public class hangman extends Applet implements ActionListener{

  

static final int DEAD=13; // amount of errors till loss

private int errors; // amount of errors

private String message; // error or victorie

private String information; // information of the message

private String rword; // the rword

private StringBuffer gword;// the gword

private Button bStart; // Button "Restart"

private Button bGo; // Button "Go"

private TextField tfLetter; // letter box

private Font fnt; // common font

public void init(){

fnt = new Font( "Monospaced", 0, 12 );

setFont(fnt);

// Create textbox for guess letter

  

tfLetter = new TextField();

// Create buttons and labels

  

bStart = new Button("Restart");

bGo = new Button("Go");

// Add the graphical elements to the applet

  

add(bStart);

add(new Label("Guess a letter:"));

add(tfLetter);

add(bGo);

  

// Buttons are events:

bStart.addActionListener(this);

bGo.addActionListener(this);

  

// Start first game

initGame();

}

  

public void initGame(){

/* Setting the errors to 0 */

errors=0;

/* Enter the wordslist, separated by a | here: */

String str = "computer|radio|calculator|teacher|bureau|police|geometry|president|subject|country|enviroment|classroom|animals|province|month|politics|puzzle|instrument|kitchen|language|vampire|ghost|solution|service|software|virus25|security|phonenumber|expert|website|agreement|support|compatibility|advanced|search|triathlon|immediately|encyclopedia|endurance|distance|nature|history|organization|international|championship|government|popularity|thousand|feature|wetsuit|fitness|legendary|variation|equal|approximately|segment|priority|physics|branche|science|mathematics|lightning|dispersion|accelerator|detector|terminology|design|operation|foundation|application|prediction|reference|measurement|concept|perspective|overview|position|airplane|symmetry|dimension|toxic|algebra|illustration|classic|verification|citation|unusual|resource|analysis|license|comedy|screenplay|production|release|emphasis|director|trademark|vehicle|aircraft|experiment";

String[] temp;

/* delimiter */

String delimiter = "\|";

/* given string will be split by the argument delimiter provided. */

temp = str.split(delimiter);

/* Setting the seed */

Random randomGenerator = new Random();

/* Generating random number */

int randomInt = randomGenerator.nextInt(temp.length);

rword = new String(temp[randomInt]);

char positions[] = new char[rword.length()];

for (int i=0; i<rword.length(); i++) {

positions[i] = '.';

}

String s = new String(positions);

gword = new StringBuffer(s);

tfLetter.setText("");

  

// Delete the messages

message="";

information = "";

repaint();

}

public void paint(Graphics g) {

  

// Draw the hangman

int baseY = 250;

  

if (errors > 0){ // ground

g.drawLine(90, baseY,200,baseY);

}

if (errors > 1){ // bar up

g.drawLine(125,baseY,125,baseY-100);

}

if (errors > 2){

g.drawLine(110,baseY,125,baseY-15);

}

if (errors > 3){

g.drawLine(140,baseY,125,baseY-15);

}

if (errors > 4){ // side bar

g.drawLine(125,baseY-100,175,baseY-100);

}

if (errors > 5){

g.drawLine(125,baseY-85,140,baseY-100);

}

if (errors > 6){ // rope

g.drawLine(175,baseY-100,175,baseY-75);

}

if (errors > 7){ // body

g.drawOval(170,baseY-75,10,12);

}

if (errors > 8){

g.drawOval(170,baseY-65,15,25);

}

if (errors > 9){ // arms

g.drawLine(160,baseY-65,170,baseY-60);

}

if (errors > 10){

g.drawLine(183,baseY-60,193,baseY-65);

}

if (errors > 11){ // legs

g.drawLine(165,baseY-30,170,baseY-45);

}

if (errors > 12){

g.drawLine(183,baseY-45,193,baseY-30);

}

  

// Show the messages

g.drawString( message, 40, baseY+25 );

g.drawString( information, 25, baseY+45 );

g.drawString( new String (gword), 110, 60);

  

}

  

public void actionPerformed(ActionEvent e){

if (e.getSource() == bStart){

initGame();

}

if (e.getSource() == bGo){

processTurn();

// Delete the letter input box

tfLetter.setText("");

repaint();

}

}

private void processTurn(){

String s, t;

char a;

  

s = tfLetter.getText();

a = s.charAt(0);

  

if (!Character.isLetter(a)){

message="Only enter letters!";

return;

}

if (s.length()>1){

message="One letter at a time!";

return;

}

  

// Has the letter been guessed

  

t = new String(gword);

if (t.indexOf(s) != -1){

message="Letter has already been guessed";

return;

}

  

// If the letter doesn't occur in the rword

  

if (rword.indexOf(s) == -1){

message="";

errors++;

if (errors==DEAD){

message="You lost!";

information =

"Click on restart for another chance!";

}

  

return;

}

  

// Replace dots in gword with the found letter.

  

for (int i=0; i<rword.length(); i++){

if (rword.charAt(i) == a){

gword.setCharAt(i, a);

}

}

t = new String(gword);

  

// If all the dots have been filled, you win

  

if (t.indexOf('.') == -1){

message="You win!";

return;

}

  

// Delete message

  

message="";

repaint();

}

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote