Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Applet: Muovi cerchio Left-Right

Precedente
SUPERIORE
Successiva

Il movimento continuo provocato dal Timer ma con i tasti direzione possibile far cambiare direzione al cerchio (rendi prima attivo il pannello con il mouse...)

Nella barra di stato possibile seguire gli eventi della tastiera

Codice Html

<APPLET CODE="MuoviCerchioLR.class" WIDTH="300" HEIGHT="100">
    <PARAM name=Raggio   value="30">
    <PARAM name=Velocita value="10">
</APPLET>

Codice Java

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.Timer;

public class MuoviCerchioLR extends Applet implements ActionListener, KeyListener
{
  final int xMin=0; 
  int       xMax,      // limiti sinistro e destro 
            xC,        // coordinate dell'angolo in alto
            yC;        // del cerchio

  int raggio,
  diametro;

  int ms;              // ogni quanti millisecondi si muove
  Timer t;             // per regolare l'animazione
  boolean versoDestra; // da che parte va

  public void init()
  {
     try                { raggio=Integer.parseInt(getParameter("Raggio")); }
     catch(Exception e) { raggio=25;                                       }
     try                { ms=Integer.parseInt(getParameter("Velocita"));   }
     catch(Exception e) { ms=10;                                           }

     diametro=2*raggio; 

     Dimension d = getSize(); 
     xMax=d.width-diametro;
     yC =d.height/2-raggio; 
     xC = 0;              // parte da destra
     versoDestra = true;  // verso destra

     t=new Timer(ms, this);
     t.start();

     setBackground(Color.black);
     setForeground(Color.gray);

     addKeyListener(this);
  }

  public void paint(Graphics g)
  { 
     g.drawOval(xC, yC, diametro, diametro);
  }

  public void actionPerformed(ActionEvent e)
  { 
     if(versoDestra)
     { 
        if (xC > xMax)  { versoDestra = false;
                          xC=xMax;
                        }
        else            xC++;
     }
     else
     {
        if (xC <= xMin) { versoDestra = true;
                          xC=xMin;
                        }
        else            xC--;
     }
     repaint();
  }

  public void keyPressed(KeyEvent e)
  { 
     int tasto =e.getKeyCode();
     showStatus("Pressed --> "+tasto); 

     switch(tasto)
     {
        case KeyEvent.VK_LEFT : versoDestra=false; break;
        case KeyEvent.VK_RIGHT: versoDestra=true ; break;
     } 
     repaint();
  }

  public void keyReleased(KeyEvent e)
  {
     int tasto =e.getKeyCode();
     showStatus("Released --> "+tasto); 
  }

  public void keyTyped(KeyEvent e)
  {
     int tasto =e.getKeyCode();
     showStatus("Typed --> "+tasto); 
  }

}//class

Applet: Muovi cerchio Left-Right - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva