ahorcado en applet de java

katya
02 de Mayo del 2006
necesito ayuda con el codigo del juego del ahorcado, en un applet para java. cualquier ayuda es bienvenida

benito
02 de Mayo del 2006
// Ah7.java: Juego del Ahorcado v0.7, [email protected], 00/11/08
// keywords: applets, gráficos, imagenes, eventos, ratón, BitSet

import java.applet.Applet;
import java.util.BitSet;
import java.awt.*;
import java.awt.event.*;
import Ah5; // reutiliza Ah5

public class Ah7 extends Applet {

static final int pix_letra=14;
static final char letras[]="ABCDEFGHIJKLMNÑOPQRSTUVWXYZ".toCharArray();
static final int tot_letras=letras.length;
static final int intentos=8;

protected Ah5 alib=new Ah5();
protected BitSet entradas; // bit=on, si letra-usada
protected char letra;
protected int veces;

protected Image abc;
protected Image mono[]=new Image[6];

public void init() {
abc=getImage(getDocumentBase(),"abc.gif");
for (int i=0; i<mono.length; i++)
mono[i]=getImage(getDocumentBase(),"duke"+(i+3)+".gif");
enableEvents(AWTEvent.MOUSE_EVENT_MASK);
nvo_juego();
}

public void processMouseEvent(MouseEvent event) { //processMouseEvent
if ( event.getID() == MouseEvent.MOUSE_PRESSED ) {
if ( gano() || perdio() ) {
nvo_juego();
return;
}
letra=\'?\';
if ( event.getY() > 20 )
return;
int indice=(event.getX()/pix_letra)%tot_letras;
if ( entradas.get(indice) ) // letra previa/ seleccionada
return;
entradas.set(indice);
letra=letras[indice];
alib.add_letra(letra);
if ( alib.error() )
++veces; // fallo!
repaint();
}
}

public void paint(Graphics g) {
g.drawImage(abc,0,0,this);
// if ( letra!=\'?\' ) g.drawString(("Letra: "+letra),32,130);
g.setColor(Color.white); // deselect
for (int i=0, x=0; i<letras.length; i++, x+=pix_letra)
if ( entradas.get(i) )
g.fillRect(x,0,pix_letra,20); // borra-letra
if ( veces > 0 ) {
final int x1=220, y1=28;
g.setColor(new Color(150,50,0)); // horca
g.fillRect(x1,y1,10,130);
g.fillRect(x1+10,y1,60,10);
g.fillRect(x1+55,y1+10,7,20);
if ( veces == 2 ) { // soga
g.fillOval(x1+43,y1+30,30,30);
g.setColor(getBackground());
g.fillOval(x1+50,y1+38,15,15);
} else if ( veces > 2 ) // mono
g.drawImage(mono[veces-3],x1+20,y1+20,this);
}
if ( gano() )
anuncio("G A N A S T E !!",alib.magica,"Un click para volver a jugar");
else if ( perdio() )
anuncio("TE AHORQUE!!",alib.magica,"Un click para volver a jugar");
else
anuncio("¿Cuál letra?",alib.pista,"Alberto Pacheco ([email protected])");
}

void nvo_juego() {
alib.genera_palabra();
veces=0; letra=\'?\';
entradas=new BitSet(letras.length); // all-false
repaint();
}

boolean gano() { return alib.cmpTxt()==true; }

boolean perdio() { return veces >= intentos; }

void anuncio(String msj, String palabra, String pie) {
Graphics g=getGraphics();
g.setColor(new Color(150,50,0));
g.setFont(new Font("Courier",Font.BOLD,18));
g.drawString(palabra,16,95);
g.setFont(new Font("Fantasy",Font.BOLD,20));
g.drawString(msj,16,145);
g.setColor(Color.black);
g.setFont(new Font("Courier",Font.ITALIC,12));
g.drawString(pie,75,186);
}

} // Ah7