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
Return to : Java Programming Hints
and Tips