Els applets són una de les particularitats de Java que contribueixen al seu gran èxit. Permeten carregar a través de la xarxa una aplicació portable que s'executarà al seu navegador (no a la màquina servidora de pàgines web).
Diferències entre applet i aplicació:
Els applets són cridats a partir d'una font html llegida a distància
pel seu navegador. El codi html que indica que ha de carregar-se un applet
és el següent:
<APPLET CODE="nom.class" WIDTH=200 HEIGHT=200
ALIGN=MIDDLE>
<PARAM NAME=elNom VALUE="Un exemple"> </APPLET> |
CODE: Dóna el nom de la classe que s'ha de carregar per
a arrencar l'applet.
WIDTH HEIGHT: Indiquen sobre quin espai es visualitzarà
l'applet.
ALIGN: Indica el tipus d'alineació.
PARAM NAME: Permet precisar tants paràmetres com es vulgui
a l'applet. Aquests paràmetres es recuperen al cos de l'applet amb
el mètode getParameter(String s).
Els applets no tenen mètode main. Quan el navegador arrenca un
applet, busca la classe amb el nom que s'indica a la font html. Aquesta
ha d'eheretar de la classe Applet. No es necessari definir un mètode
main(), pel contrari, el navegador cridarà automàticament
alguns dels mètodes de la classe Applet:
Quan creem el nostre applet, hem de redefinir tot o part d'aquests mètodes. paint(), especialment, proporciona el seu aspecte a l'applet. Aquest mètode és cridat passant-li com a paràmetre un objecte Graphics. Aquest és proporciona pel sistema, i el podem utilitzar sense preocupar-nos del seu origen.
Si desitgem cridar a paint() des d'un altre mètode de l'applet, podem fer-ho gràcies al mètode repaint(), que crida a paint() proporcionant-li el paràmetre idoni.
Un exemple senzill.
L'exemple consisteix a redefinir els mètodes citats anteriorment
fent que per a cadascún d'ells afegeixi el seu nom en una taula
d'String, que així conservarà la memòria de les crides
efectuades.
import java.applet.*;
import java.awt.*; import java.util.*; public class cicle extends Applet
public void paint(Graphics g)
public cicle()//constructor
public void init()
public void start()
public void destroy()
public void stop()
|
La plana html que ens permet carregar l'applet, contindrà:
<APPLET CODE="cicle.class" WIDTH=400 HEIGHT=200 ALIGN=MIDDLE> </APPLET> |
Per a depurar un applet, podem utilitzar l'eina appletviewer que ens
ofereix jdk. Per a utilitzar-a utilitzarem:
Appletviewer cicle.html. (suposant que la plana html creada que conté
la crida a l'applet es diu cicle.html).
exercici: fixa't en els exemples dels jocs TicTacToe i Mastermind, per a crear el teu propi joc. Pots utilitzar les mateixes imatgesi sons que s'han utilitzat en els exemples.
Hem d'utilitzar dues variables Image que continguin els fitxers on tenim les images:
Image notImage;
Image crossImage;
Inicialitzem l'applet.
public void init()
{
notImage = getImage(getCodeBase(),
"images/not.gif");
crossImage = getImage(getCodeBase(),
"images/cross.gif");
}
Per dibuixar l'aplet utilitzem el mètode paint.
public void paint(Graphics g)
{
li hem d'indicar que dibuixarem (les linies
de les nou caselles, imatges segons l'estat del joc,...)
}
Hem de controlar que fer quan es detecta un clic dins l'applet
public boolean mouseUp(Event evt, int x, int y)
{
}
Quan volguem utilitzar un so, utilitzarem:
play(getCodeBase(), "audio/beep.au");
Per col.locar una imatge, utilitzarem:
g.drawImage(notImage, x, y, this);
g.drawImage(crossImage, x, y, this);
Mastermind
En aquest cas les imatges es creen amb les funcions apropiades.
g.fillOval(x,y,r,r), g.setColor(c), g.drawOval(x,y,r,r), fixDisc(g,x+3,y+3,6,Color.white),
g.drawArc(x+4,y+4,9,9,-135,180)
public final class mastermind extends java.applet.Applet
{
public void init()
{
Creem les imatges (es pot optar per carregar els fitxers amb
les imatges ja creades)
}
public void clearBoard() // Reset all variables and prepare
for game
{
Reiniciem les variables i les figures amb repaint()
}
public boolean mouseDown(java.awt.Event evt, int x, int y)
{
A partir del events del mouse, realitzem les accions adequades
}
public void paint(Graphics g)
{
Dibuixem els elements del joc
}
}