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

Code should be written in Java using the java.awt and java.swing packages. *HAS

ID: 3633758 • Letter: C

Question

Code should be written in Java using the java.awt and java.swing packages.

*HAS TO BE DONE USING MODEL VIEW CONTROLLER*

Hangman
Minimum requirements: Implement a 1-player version of hangman, where the human user guesses letters and the computer either displays the letters, or adds an additional part of the hangman.

*cannot be copied from any other source.*

also i need to be able to get the text from a word document rather than a URL. Can you explain this and i will make and name my own text file.”

here is what i have so far



//Header file declarations

import javax.swing.*;

import java.awt.*;

//Class declaration

class Hangman extends JFrame

{

   // Constructor

   public Hangman( )

   {

      add(new HangManPanel());

   }

  

   //main function

      public static void main(String[] args)

     {

         Hangman g = new Hangman();

     

         //Set the title

         g.setTitle("Hangman Game");

        

         //Set the width and height

         g.setSize(300, 400);

        

         //Set close operation

         g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         g.setVisible(true);

      }

   }

      // To display the hangman.

      class HangManPanel extends JPanel

      {

            protected void paintComponent(Graphics g)

            {

                  int x = getWidth();  

                  int y = getHeight();

     

    //paint method

    super.paintComponent(g);

    g.drawArc((int)(x * 0.10),(int)(y * 0.9),(int)(x * 0.35),(int)(y*0.16), 0, 180);

    g.drawLine((int)(x * 0.275),(int)(y * 0.1), (int)(x * 0.275), (int)(y * 0.9));

    g.drawLine((int)(x * 0.275), (int)(y * 0.1),(int)(x * 0.75), (int)(y * 0.1));

    g.drawLine((int)(x * 0.75), (int)(y * 0.1), (int)(x * 0.75), (int)(y * 0.18));

    g.drawOval((int)(x * 0.67), (int)(y * 0.18), (int)(x * 0.16), (int)(y * 0.18));

    g.drawLine((int)(x * 0.70), (int)(y * 0.34),(int)(x * 0.53), (int)(y * 0.55));

    g.drawLine((int)(x * 0.80), (int)(y * 0.34), (int)(x * 0.97), (int)(y * 0.55));

    g.drawLine((int)(x * 0.75), (int)(y * 0.36), (int)(x * 0.75), (int)(y * 0.62));

    g.drawLine((int)(x * 0.75), (int)(y * 0.62), (int)(x * 0.62), (int)(y * 0.76));

    g.drawLine((int)(x * 0.75), (int)(y * 0.62), (int)(x * 0.88), (int)(y * 0.76));

}

}

Explanation / Answer

Dear,

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();
    }
}