Galgje2.java
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Galgje2 extends Applet implements ActionListener{
 
     static final int DOOD=13; // dodelijk aantal missers
     private int missers; // actueel aantal missers
     private String meldTekst; // melding fout of victorie
     private String toelichting; // toelichting bij melding
     private String rwoord; // het te raden woord
     private StringBuffer gwoord;// het geraden woord
     private Label lblGwoord; // label voor gwoord
     private Button bStart; // (her)start het spel!
     private Button bGo; // raad de letter!
     private TextField tfLetter; // vakje voor letter
     private Font fnt; // algemeen lettertype
    
     public void init(){

         fnt = new Font( "Monospaced", 0, 12 );

         // Maak een tekstvak voor de raadletter.
        
         tfLetter = new TextField();

         // Maak buttons en labels.
        
         bStart = new Button("Herstart");
         bGo = new Button("Go");
         lblGwoord = new Label();
         lblGwoord.setFont(fnt);

         // Voeg alle grafische elementen aan de applet toe.
        
         add(bStart);
         add(new Label("Raad een letter: "));
         add(tfLetter);
         add(bGo);
         add(lblGwoord);
 
         // Meld de buttons aan als bronnen van events.

         bStart.addActionListener(this);
         bGo.addActionListener(this);
 
         // Start het eerste spel.

         initGame();
     }
    
     public void initGame(){

         missers=0;
         // missers=12; // Activeer voor testen

         rwoord = new String("bitoperaties");

         char posities[] = new char[rwoord.length()];
         for (int i=0; i<rwoord.length(); i++) {
             posities[i] = '.';
         }
         String s = new String(posities);
         gwoord = new StringBuffer(s);

         tfLetter.setText("");
         lblGwoord.setText(new String(gwoord));
 
         // Wis de meldingen.

         meldTekst="";
         toelichting = "";
         repaint();
     }

     public void paint(Graphics g) {
        
         // Teken het galgje.
         int baseY = 250;
        
         if (missers > 0){ // grond
             g.drawLine(90, baseY,200,baseY);
         }
         if (missers > 1){ // balk omhoog
             g.drawLine(125,baseY,125,baseY-100);
         }
         if (missers > 2){
             g.drawLine(110,baseY,125,baseY-15);
         }
         if (missers > 3){
             g.drawLine(140,baseY,125,baseY-15);
         }
         if (missers > 4){ // zijbalk
             g.drawLine(125,baseY-100,175,baseY-100);
         }
         if (missers > 5){
             g.drawLine(125,baseY-85,140,baseY-100);
         }
         if (missers > 6){ // het touw
             g.drawLine(175,baseY-100,175,baseY-75);
         }
         if (missers > 7){ // uw lijk
             g.drawOval(170,baseY-75,10,12);
         }
         if (missers > 8){
             g.drawOval(170,baseY-65,15,25);
         }
         if (missers > 9){ // armen
             g.drawLine(160,baseY-65,170,baseY-60);
         }
         if (missers > 10){
             g.drawLine(183,baseY-60,193,baseY-65);
         }
         if (missers > 11){ // benen
             g.drawLine(165,baseY-30,170,baseY-45);
         }
         if (missers > 12){
             g.drawLine(183,baseY-45,193,baseY-30);
         }
        
         // Toon de meldingen.
         g.drawString( meldTekst, 50, baseY+25 );
         g.drawString( toelichting, 25, baseY+45 );
    
     }
    
     public void actionPerformed(ActionEvent e){

         if (e.getSource() == bStart){
             initGame();
         }

         if (e.getSource() == bGo){

             verwerkBeurt();

             // Wis het vakje met de letter.

             tfLetter.setText("");
             repaint();
         }
     }

     private void verwerkBeurt(){
         String s, t;
         char a;
        
         s = tfLetter.getText();
         a = s.charAt(0);
        
         if (!Character.isLetter(a)){
              meldTekst="U mag alleen een letter invullen!";
              return;
         }
         if (s.length()>1){
              meldTekst="Een letter tegelijk, svp!";
              return;
         }
    
         // Is letter al geraden?
  
         t = new String(gwoord);
         if (t.indexOf(s) != -1){
             meldTekst="Letter is al geraden";
             return;
         }
    
         // Komt letter in rwoord niet voor?
    
         if (rwoord.indexOf(s) == -1){
             meldTekst="";
             missers++;
             if (missers==DOOD){
                 meldTekst="U hangt!";
                 toelichting =
                    "Klik op herstart voor een nieuwe kans";
             }
            
             return;
         }
    
         // Vervang punten in gwoord door gevonden letter.
    
         for (int i=0; i<rwoord.length(); i++){
             if (rwoord.charAt(i) == a){
                 gwoord.setCharAt(i, a);
             }
         }
         t = new String(gwoord);
         lblGwoord.setText(t);
    
         // Als alle punten ingevuld zijn
         // heeft de speler gewonnen.
    
         if (t.indexOf('.') == -1){
             meldTekst="U wint!";
             return;
         }
       
         // Wis melding.
        
         meldTekst="";
     }
}