//******************************************************************** // Direction.java Author: Lewis and Loftus // // Eventi legati ai tasti e uso delle classi interne per // listener di eventi. //******************************************************************** import java.applet.*; import java.awt.*; import java.awt.event.*; public class Direction extends Applet { private final int APPLET_WIDTH = 200; private final int APPLET_HEIGHT = 200; private final int JUMP = 5; // passo per simulare il movimento dell'immagine private final int IMAGE_SIZE = 31; private Image up, down, right, left, currentImage; private AudioClip bonk; private int x, y; //----------------------------------------------------------------- // Inizializza l'applet creando l'oggetto listener, caricando le immagini, etc. //----------------------------------------------------------------- public void init() { requestFocus(); // l'applet deve avere il fuoco sulla tastiera addKeyListener (new DirectionKeyListener()); x = y = 0; up = getImage (getCodeBase(), "cyanUp.gif"); down = getImage (getCodeBase(), "cyanDown.gif"); left = getImage (getCodeBase(), "cyanLeft.gif"); right = getImage (getCodeBase(), "cyanRight.gif"); currentImage = right; bonk = getAudioClip (getCodeBase(), "bonk.au"); setBackground (Color.black); setSize (APPLET_WIDTH, APPLET_HEIGHT); } //----------------------------------------------------------------- // Disegna l'immagine corrente nella locazione corrente. //----------------------------------------------------------------- public void paint (Graphics page) { page.drawImage (currentImage, x, y, this); } //***************************************************************** // Rappresenta un oggetto listener per l'attivitą della tastiera. //***************************************************************** private class DirectionKeyListener implements KeyListener { //-------------------------------------------------------------- // Risponde all'utente che usa i tasti freccia manipolando l'immagine // di conseguenza. //-------------------------------------------------------------- public void keyPressed (KeyEvent event) { switch (event.getKeyCode()) { case KeyEvent.VK_UP: currentImage = up; if (y > 0) y -= JUMP; break; case KeyEvent.VK_DOWN: currentImage = down; if (y < APPLET_HEIGHT-IMAGE_SIZE) y += JUMP; break; case KeyEvent.VK_LEFT: currentImage = left; if (x > 0) x -= JUMP; break; case KeyEvent.VK_RIGHT: currentImage = right; if (x < APPLET_WIDTH-IMAGE_SIZE) x += JUMP; break; default: bonk.play(); } repaint(); } //-------------------------------------------------------------- // Fornisce definizioni vuote per i metodi evento che non vengono usati. //-------------------------------------------------------------- public void keyTyped (KeyEvent event) {} public void keyReleased (KeyEvent event) {} } }