Program to
create a classic hangman game
programtocreateaclassichangmangame.java
// Program to create a classic hangman game
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
public class HangMan10 extends Applet implements ActionListener,ItemListener
{
Button button[];
TextField word,letter;
TextField guess;
Label label1,label2,label3;
String alphabuttons[];
Panel panel1,panel2,panel3,pana,panb,panc;
Font font;
CheckboxGroup group;
Checkbox beg,inte,adv;
String begin[];
String inter[];
String advan[];
int lives,select;
String answer = "
";
String missy;
String buffy = "--------";
StringBuffer store2= new StringBuffer(buffy);
int counta = lives;
public void init()
{
this.setLayout(new BorderLayout());
// sets up the array to produce the alphabet buttons
on the grid
alphabuttons = new String[]{"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
// sets up the arrays with the words to be guessed
in all three stages
begin = new String[]{"CAT","WREN","MOUSE","GERBIL"};
inter = new String[]{"ROSE","GRASS","WILLOW","RAGWORT"};
advan = new String[]{"SHIRT","JACKET","SANDALS","TROUSERS"};
// create and arrange panel 1 which will house
the text fields and the labels
panel1 = new Panel(); // panel 1 will hold the
two labels and text fields at the top of the applet
add("North",panel1);
panel1.setLayout(new BorderLayout());
label1 = new Label("GUESS THE WORD"); // create
the label
font = new Font("TimesRoman",Font.ITALIC,16);
label1.setFont(font); // set the font to the label
pana = new Panel();
panel1.add("North",pana);
pana.add(label1); // add the label to the panel
label1.setAlignment(label1.CENTER); // set the
label to the centre
panb = new Panel();
panel1.add("Center",panb);
word = new TextField(24); // creates the text
field for the word set to 24 chars
word.addActionListener(this);
word.setEditable(true); // allows text to be edited
panb.add(word,"CENTER"); // adds the text field
to the panel
label3 = new Label("Win/Loose");
label3.setFont(font);
panb.add(label3);
label1.setAlignment(label1.RIGHT);
letter = new TextField(10);
letter.addActionListener(this);
panb.add(letter,"RIGHT");
panc = new Panel();
panel1.add("South",panc);
label2 = new Label("GUESSES REMAINING"); // create
the label and intiliase
label2.setFont(font); // sets the font previously
defined for label 1
panc.add(label2);
label2.setAlignment(label2.LEFT); // Sets the
label left
guess = new TextField(3); // initialises the guess
text field to 3 chars
guess.addActionListener(this);
panc.add(guess);
// create and arrange panel 2 which will house
the alphabet grid
panel2 = new Panel();
add("Center",panel2);
// set gridLayout for panel2(int rows , int col,
int hgap, int vgap
panel2.setLayout(new GridLayout(4,7,3,3));
button = new Button[28];
for (int i=0;i<26;i+=1)
{
// set the buttons of the alphabet up using
the array
button[i] = new Button(alphabuttons[i]);
panel2.add(button[i]);
button[i].addActionListener(this);
}
button[26] = new Button("Answer"); // creates the
answer button
button[26].setForeground(Color.green);
button[26].addActionListener(this);
button[27] = new Button("Reset"); // creates the
reset button
button[27].setForeground(Color.yellow);
button[27].addActionListener(this);
// add the remaining buttons to panel 2
panel2.add(button[26]);
panel2.add(button[27]);
// create and arrange panel 3 which will house
the radio buttons for the level
panel3 = new Panel();
add("South",panel3);
group = new CheckboxGroup();
// create the radio buttons
beg = new Checkbox("Beginner",group,false);
beg.addItemListener(this);
inte = new Checkbox("Intermediate",group,false);
inte.addItemListener(this);
adv = new Checkbox("Advanced",group,false);
adv.addItemListener(this);
// add the radio buttons to panel3
panel3.add(beg);
panel3.add(inte);
panel3.add(adv);
}
public void actionPerformed(ActionEvent e)
{
int j=0;
int count=0;
int k=0;
String currentLetter;
String temp="";
StringBuffer Sanswer = new StringBuffer(answer);
Sanswer.setLength(answer.length());
boolean hang = false;
boolean correct=true;
store2.setLength(answer.length());
count = Sanswer.length();
for(k=0;k<=25;k+=1)
{
if (e.getSource()==button[k])
{
currentLetter = (button[k].getLabel());
letter.setText(currentLetter);
for (j=0;j<count;j++)
{
//cycles through the letters
in the word
if (currentLetter.equals(String.valueOf(answer.charAt(j))))
{
// replaces the letter
if it is within the word
store2.replace(j,j+1,currentLetter);
temp=store2.toString();
lives+=1; // does not
decrement the lives
if(temp.equals(word.getText()))
{
letter.setText("YOU
WIN");
letter.setForeground(Color.blue);
}
}
}
lives-=1; // decrements the lives
guess.setText(Integer.toString(lives));
word.setText(store2.toString());
if (lives<1)
{
letter.setText("YOU LOSE");
letter.setForeground(Color.red);
}
}
}
if(e.getSource()==button[26]) // answer button
{
word.setText(answer);
word.setForeground(Color.darkGray);
letter.setText("Unlucky");
}
if(e.getSource()==button[27]);
{
/* word.setText(null);
guess.setText(null);
letter.setText("delete");
for(int x=0;x<9;x++)
{
store2.replace(x,x+1,"-");
}
count = Sanswer.length();
count=answer.length(); */
}
} // ends actionPerformed
// invoked with the radio buttons are selected or
deselected
public void itemStateChanged(ItemEvent e)
{
// checks if the button is pressed
select = (int)(java.lang.Math.random()*4); //
random number generator for the arrays
StringBuffer miss = new StringBuffer(answer);
if (e.getSource()==beg)
{
if(beg.getState()==true)
{
lives = 9;
answer = (begin[select]);
for (int y=0;y<answer.length();y++)
{
miss.replace(y,y+1,"-");
}
word.setText(miss.toString());
missy = miss.toString();
word.setForeground(Color.black);
guess.setText(Integer.toString(lives));
}
}
else if (e.getSource()==inte)
{
if(inte.getState()==true)
{
lives = 8;
answer = (inter[select]);
for (int y=0;y<answer.length();y++)
{
miss.replace(y,y+1,"-");
}
word.setText(miss.toString());
missy = miss.toString();
word.setForeground(Color.black);
guess.setText(Integer.toString(lives));
}
}
else if(e.getSource()==adv)
{
if(adv.getState()==true)
{
lives = 7;
answer = (advan[select]);
for (int y=0;y<answer.length();y++)
{
miss.replace(y,y+1,"-");
}
word.setText(miss.toString());
missy = miss.toString();
word.setForeground(Color.black);
guess.setText(Integer.toString(lives));
}
}
} // ends itemStateChanged for the radio buttons
}//ends the class
Do you have a Java Problem?
Ask It in The Java
Forum
Java Books
Java Certification,
Programming, JavaBean and Object Oriented Reference Books
Return to : Java
Programming Hints and Tips
All the site contents are Copyright © www.erpgreat.com
and the content authors. All rights reserved.
All product names are trademarks of their respective
companies.
The site www.erpgreat.com is not affiliated with or endorsed
by any company listed at this site.
Every effort is made to ensure the content integrity.
Information used on this site is at your own risk.
The content on this site may not be reproduced
or redistributed without the express written permission of
www.erpgreat.com or the content authors.
|