import java.applet.*; import java.awt.*; import java.util.*; public class AEP2 extends Applet implements Runnable{ private static final String CHARACTORS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxwz"; private static final char EMPTY_CHAR = '_'; private char[] friends; private int[] friendX; private int killed; private boolean death; private AudioClip yahoo; private AudioClip natto; Thread thread; Random random; Image off; Graphics offg; public void init(){ friends = new char[10]; friendX = new int[10]; yahoo = getAudioClip(getDocumentBase(),"yahoo1.au"); natto = getAudioClip(getDocumentBase(),"spacemusic.au"); random = new Random(); off = createImage(100,100); offg = off.getGraphics(); thread = null; } public void start(){ for(int i = 0;i < 10;i++){ friends[i] = EMPTY_CHAR; friendX[i] = -1; } killed = 0; death = false; } public void stop(){ if(thread != null){ thread.stop(); thread = null; } natto.stop(); } public synchronized void run(){ while(true){ try{ if(killed < 950){ wait(1000 - killed); }else{ wait(50); } }catch(InterruptedException e){ System.err.println(e); } for(int i = 9;i > 0;i--){ if(i == 9 && friends[i] != EMPTY_CHAR){ death = true; } friends[i] = friends[i - 1]; int r = Math.abs(random.nextInt() % 3); switch(r){ case 0: friendX[i] = friendX[i - 1] - 1; break; case 1: friendX[i] = friendX[i - 1]; break; case 2: friendX[i] = friendX[i - 1] + 1; } if(friendX[i] < 0){ friendX[i] = 0; }else if(friendX[i] > 9){ friendX[i] = 9; } } friends[0] = CHARACTORS.charAt(Math.abs(random.nextInt() % CHARACTORS.length())); friendX[0] = Math.abs(random.nextInt() % 10); repaint(); } } public void update(Graphics g){ paint(g); } public void paint(Graphics g){ offg.setColor(Color.black); offg.fillRect(0,0,100,100); offg.setColor(Color.white); offg.setFont(new Font("TimesRoman",Font.PLAIN,10)); if(thread == null){ offg.drawString("Avage Enemy Park 2",0,50); offg.drawString("Click Start",35,70); }else{ if(death){ offg.drawString("You Died! Point:" + new Integer(killed).toString(),0,50); }else{ offg.drawString("Killed:" + new Integer(killed).toString(),0,50); } offg.setColor(Color.red); for(int i = 0;i < 10;i++){ if(friends[i] != EMPTY_CHAR){ offg.drawString(String.valueOf(friends[i]),friendX[i] * 10,i * 10 + 10); } } } g.drawImage(off,0,0,this); } public synchronized boolean keyDown(Event e,int k){ if(!death){ for(int i = 9;i > -1;i--){ if(friends[i] != EMPTY_CHAR){ if(friends[i] == (char)k){ friends[i] = EMPTY_CHAR; friendX[i] = -1; killed++; yahoo.play(); repaint(); return true; }else{ notify(); return true; } } } } return false; } public boolean mouseUp(Event e,int x,int y){ if(thread == null){ thread = new Thread(this); thread.start(); natto.loop(); repaint(); return true; }else if(death){ stop(); start(); repaint(); return true; } return false; } }