Click here to Skip to main content
15,885,546 members

simple hangman java code

Haneen K. asked:

Open original thread
Hi, I'm trying to write a simple hangman game code everything was going will except for two things: 1) the message text is not showing
2) after restarting, the buttons won't be disabled !! I tried using toggle buttons but nothing is changed.
Any ideas ??

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.lang.*;
import javax.swing.*;
import java.awt.geom.*;
public class HangMan extends JApplet implements ActionListener {
    
    public static void main(String[] args){
    	JFrame frame =new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("Hangman");
        frame.setLocation(300,50);
        HangMan applet = new HangMan();
        applet.init();
        frame.getContentPane().add(applet);
        frame.pack(); 
        frame.setVisible(true);    }
        
      static final int MAX=10; 	// max number of trying till loss
      public int errors;			//amount of error trial
      public String msg;			// to show a message to the user 
      public String ranWord;	    // get a random word in it
      public StringBuffer gWord;   // gussed word
      public JToggleButton A;	
      public JToggleButton B;
      public JButton C;
      public JButton D;
      public JButton E;    //..... rest of the letters      
      
      public Font font= new Font("Monospaced",Font.BOLD,16);
      HMpanel panel = new HMpanel();
    public void init(){
    	JPanel p = new JPanel();
    	JPanel m = new JPanel();
    	p.setLayout(new GridLayout(3,10,0,1));
    	 A = new JToggleButton("A"); 		p.add(A);
    	 B = new JToggleButton("B");		p.add(B);
    	 C = new JButton ("C");				p.add(C);
    	 D = new JButton ("D");				p.add(D);
    	 E = new JButton ("E");				p.add(E);    	 // ... the rest
    	  	
    	  A.addActionListener(this);
    	  B.addActionListener(this);
    	  C.addActionListener(this);
    	  D.addActionListener(this);
    	  E.addActionListener(this);
    	  // ...    	
    	JMenuBar menubar =new JMenuBar();
    	JMenu gameMenu =new JMenu("Game");
    	JMenuItem restart =new JMenuItem("Restart");
    	JMenuItem help =new JMenuItem("Help");
    	JMenuItem about =new JMenuItem("About");
    	JMenuItem quit =new JMenuItem("Quit");
    	
    	menubar.add(gameMenu);
    	gameMenu.add(restart);
    	gameMenu.addSeparator();
    	gameMenu.add(help);
    	gameMenu.add(about);
    	gameMenu.addSeparator();
    	gameMenu.add(quit);
    	
    	restart.addActionListener(this);
    	help.addActionListener(this);
    	about.addActionListener(this);
    	quit.addActionListener(this);
    	m.setLayout(new BorderLayout());
    	m.add(menubar,BorderLayout.WEST);
    	
    	this.getContentPane().setLayout(new BorderLayout());
    	this.getContentPane().add(p,BorderLayout.SOUTH);
    	this.getContentPane().add(m,BorderLayout.NORTH);
    	this.getContentPane().add(panel,BorderLayout.CENTER);
    	
    	initGame();
    }
    
    public void initGame(){
      	errors=0;
      	
      	msg=new String("you have NO mistakes..Good Luck");
        String [] str={"computer","calculator"};
                       
                       Random ran = new Random();
                       int intRan = (int) (Math.floor(Math.random()*(str.length-0+1))+1);
                       ranWord= new String(str[intRan]);
                       System.out.println(ranWord);
                       char pos[]=new char[ranWord.length()];
                       for(int i= 0; i <ranword.length()>                           {pos[i]='*'; }
                         String s= new String(pos);
                      gWord= new StringBuffer(s);
                                               
      }
      
 
    
    
    
     public void actionPerformed (ActionEvent e){
     	     String action = e.getActionCommand();
     	     char EL ;  			//entered letter
             if (action.equals("A")) {
                       	EL = 'a';
                       	entLetter(EL);
                       	A.setEnabled(false); 		
                       	}
           	if (action.equals("B")) {
                       	EL = 'b';
                       	entLetter(EL);
                       	B.setEnabled(false);}                      	
            if(action.equals("C")){
            	        EL='c';
            	        entLetter(EL);
            	       C.setEnabled(false);}           	        
            if (action.equals("D")) {
                       	EL = 'd';
                       	entLetter(EL);
                       	D.setEnabled(false);}            if (action.equals("E")) {
                       	EL = 'e';
                       	entLetter(EL);
                       	E.setEnabled(false);}             // ....                       		
                       		
                     JFrame fmsg = new JFrame();
                     fmsg.setBackground(Color.WHITE);
                     JTextArea ta = new JTextArea();
                     ta.setRows(7);
                     ta.setEditable(false);
                     fmsg.setLocation(500,300);
                     
                       		           	
            if (action.equals("Help")) {
                  fmsg.setTitle("HELP");
                  String textToApper = "To win the hangman you must correctly guess the letters of the hidden word.";
            	  ta.append(textToApper);
            	  fmsg.getContentPane().add(ta);
            	  fmsg.pack();
            	  fmsg.setVisible(true);
                   } 
                   	
           if (action.equals("About")) {
                 fmsg.setTitle("About Hang-Man");
                  String textToApper = "developed by:" + ta.append(textToApper);
            	  fmsg.getContentPane().add(ta);
            	  fmsg.pack();
            	  fmsg.setVisible(true);
                   }
             if (action.equals("Quit")) {
                 System.exit(0);
                   }
                   
           if (action.equals("Restart")) {
                 int response = JOptionPane.showConfirmDialog(null,
                 "Are You Sure You Want To Restart", "Restart", 1, -1);
           switch(response) { 
             case JOptionPane.YES_OPTION: 
               restartGame();              break;
             case JOptionPane.NO_OPTION: break;
             case JOptionPane.CANCEL_OPTION: break; 
             case JOptionPane.CLOSED_OPTION: break;
         }      } 
     }
     
         public void restartGame()
         {
         	A.setEnabled(true);	 		A.setSelected(false);
         	B.setEnabled(true);			B.setSelected(false);
         	C.setEnabled(true);			C.setSelected(false);
         	D.setEnabled(true);
         	E.setSelected(false);
         	init();
         }   	          	
                       	
                       
         
      	                 
                       
      private void entLetter(char en)		
      	{  	if(ranWord.indexOf(en)==-1){
                       		msg="";
                       		errors++;	
                       	    msg="you  have "+errors+" mistake/s";}
                       	          
      		if(errors==MAX){
                       		msg=" You Lose.. Better Luck Next Time";
                         	return;
                         	}
            
      		for (int i=0;i<ranword.length();i++){>
                       	if(ranWord.charAt(i)==en){
                       		gWord.setCharAt(i,en);
                       		System.out.println(gWord);
                       	}}
                       	
                       	
                       String s=new String (gWord);
                       
                       if(s.indexOf('*')==-1){
                       	msg="Congrats,You Win";
                       	return;
                       }}
                  
                	

  class HMpanel extends JPanel{
  	public HMpanel(){
  		
  		setPreferredSize(new Dimension(800,500));
  		setBackground(Color.white);
  			}
  	
  	public void paintComponent(Graphics g){
  		super.paintComponent(g);
  		Graphics2D g2 = (Graphics2D)g;
  		
  		Stroke stroke = new BasicStroke(5,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);
  		g2.setStroke(stroke);
  		
  		Ellipse2D elp=new Ellipse2D.Double(530,250,40,35);
  		Line2D line1 = new Line2D.Double(380,450,700,450);	
  		// ... the drawing  		
  		
  		repaint();
  		
  		if(errors>0)
  			{g2.setColor(new Color(153,204,0));	
  			 g2.draw(line1);}	
  		if(errors>1)
  			{g2.setColor(new Color(99,44,3));	
  			 g2.draw(line2);}		
  		if(errors>2)
  			{g2.draw(line3);}	
  		if(errors>3)
  			{g2.setColor(new Color(255,153,0));	
  			 g2.draw(line4);}		
  		if(errors>4)
  			{g2.setColor(Color.black);
  			 g2.draw(elp);}	
  		if(errors>5)
  			{g2.draw(line5);}		
  		if(errors>6)
  			{g2.draw(line6);}								
  		if(errors>7)
  		{g2.draw(line7);}
  		if(errors>8)
  		{g2.draw(line8);}
  		if(errors>9)
  		{g2.draw(line9);}	
  		
  		//show msg
  		setFont(font);
  		g2.setColor(new Color(0,102,153));
 		g2.drawString(msg,30,275);
 		g2.setColor(Color.black);
  		g2.drawString(new String(gWord),110,80);
  	
  		
  	}}}
Tags: Java, Game Development

Plain Text
ASM
ASP
ASP.NET
BASIC
BAT
C#
C++
COBOL
CoffeeScript
CSS
Dart
dbase
F#
FORTRAN
HTML
Java
Javascript
Kotlin
Lua
MIDL
MSIL
ObjectiveC
Pascal
PERL
PHP
PowerShell
Python
Razor
Ruby
Scala
Shell
SLN
SQL
Swift
T4
Terminal
TypeScript
VB
VBScript
XML
YAML

Preview



When answering a question please:
  1. Read the question carefully.
  2. Understand that English isn't everyone's first language so be lenient of bad spelling and grammar.
  3. If a question is poorly phrased then either ask for clarification, ignore it, or edit the question and fix the problem. Insults are not welcome.
  4. Don't tell someone to read the manual. Chances are they have and don't get it. Provide an answer or move on to the next question.
Let's work to help developers, not make them feel stupid.
Please note that all posts will be submitted under the http://www.codeproject.com/info/cpol10.aspx.



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900