// Natuke nostalgiat.. Knight Rider 2002 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Kitt extends Applet implements Runnable { private Thread th; Image pilt; Graphics g2; Color varv; int[] kl; // värvide massiiv int pos[] = new int[15]; // ringide massiiv int dir = 0; int var = 1; public void init() { pilt = createImage(getSize().width,getSize().height); g2 = pilt.getGraphics(); setBackground(Color.black); varv = new Color(20,0,0); for(int i=0; i<15; i++) { //massiivi yhik i võrdub nulliga, i-le liidetakse pidevalt yhik otsa kuni 15-ni } kl = new int[15]; for(int i=0; i<15; i++) { kl[i] = 0; } } public void start() { //lõim alustab tööd if(th == null) { th = new Thread(this); th.start(); } } public void stop() { //lõime lõpp if(th != null) { th.interrupt(); } } //lõim public void run() { while(true) { try { th.sleep(150); //sagedus ülevärvimiseks } catch(InterruptedException e) {}; //pyyab katkestust repaint(); pos[0]+=var; // jooksvale algposistsioonile liidetakse üks "ühik" if(pos[0] == 14) { var = -1; // kui positsiooni pointer on lõpus muudetakse ühik negatiivseks } if(pos[0] == 0) { // ja kui pointer on alguses, siis muudetakse "ühik" positiivseks. var = 1; } int[] posB = new int[15]; //uus massiiv posB for(int i=0; i<15; i++) { posB[i] = pos[i]; } for(int i=1; i<15; i++) { //elementide nihutamine massiivi sees yhe elemendi võrra nihkega posB[i] = pos[i-1]; } for(int i=1; i<15; i++) { //elementide nihutamine tagasi positsioonile massiivi sees pos[i] = posB[i]; } for(int i=0; i<15; i++) { //värvimassiivi andmed yhildatakse positsiooni massiivi andmetega kl[pos[14-i]] = i * 15; } } } public void update(Graphics g) { //kustutab olemasoleva pildi ja kutsub uuesti paint funktsiooni välja g2.setColor(getBackground()); g2.fillRect(0,0,getSize().width,getSize().height); paint(g); } public void paint(Graphics g) { g2.setColor(Color.red); //raami värv g2.drawRect(10,10,300,20); //joonistab ristkylik raami for(int i=0; i<15; i++) { varv = new Color(kl[i],0,0); //värv millega yle joonistataxe g2.setColor(varv); //määratakse see värv g2.fillOval(15+(i*20),15,10,10); //joonistab asukoha ringi } g.drawImage(pilt,0,0,this); //joonistatakse pilt alusele } public void destroy() { // lõime lõpp g2.dispose(); } }