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();
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.