gedas 0 Junior Poster

hey guys im new to Java programming and im trying to convert the code from an applet application to a application that would have a main method and could run on...lets say net-beans.
here is the link for the applet that i want to change

http://javaboutique.internet.com/Absolute/

and here is the original code(its very long)

// Absolute Space

import java.awt.*;
import java.net.*;
import java.applet.Applet;
import java.applet.AudioClip;

public class Absolute extends Applet implements Runnable
{
  Dimension	d;
  Font 		largefont = new Font("Helvetica", Font.PLAIN, 24);
  Font		smallfont = new Font("Helvetica", Font.PLAIN, 14);

  FontMetrics	fmsmall, fmlarge;
  Graphics	goff;
  Image		ii;
  Thread	thethread;

  boolean	ingame=false;

  int		x, y, mousex, mousey, oldx, oldy, dx=0, dy=0, count, shield=0;
  boolean	showtitle=true;
  Image		ship;
  Image[]	fire;
  int		firecnt=0;

  // Bullet variables
  Image		bullet;
  int[]		bx;
  int[]		by;
  final int	bmy=16, bul_xs=54, bul_ys=8;

  // Meteor variables
  Image		meteor;
  int		maxmet, metcount, mtotal, mrenew, metmy;
  int[]		metx;
  int[]		mety;
  int[]		metf;
  boolean[] 	metr;
  final int	sxmet=80, symet=84;

  // These are for the star field
  public int starsX[];
  public int starsY[];
  public Color starsC[];
  public int numStars = 30;
  public int speed = 6, xSize, ySize;

  // Variables for big boom
  Image[]	boom;
  int		rndbx, rndby, rndcnt=777;
  final int	sxbom=71, sybom=100, bframes=4;

  // Global Variables
  int		distance=0, maxdist=2000;
  int		slevel, blevel, difflev, bosslevel;
  int		smax, bmax;
  int		scur, bcur, renew, rcnt=0, sstretch, txtalign=100;
  long		score;

  // Sounds
  AudioClip	blast, crash, kill;

  // Bosses here
  // Sunbird
  boolean	sunbird, sbefore, safter;
  int		sbx, sby, sbmove, maxtribe, tribe;
  int[]		sbfx, sbfy;

  final int	maxshield=9;
  final int	backcol=0x102040;
  final int	fireframe=2;
  final int	borderwidth=0;
  final int	sxsize=90, sysize=39, sxfire=11, syfire=6;
  final int	movex=10, movey=5;
  final int	scoreheight=45;
  final int	screendelay=300;

  public String getAppletInfo()
  {
    return("Absolute Space - by Aleksey Udovydchenko");
  }

  public void init()
  {
    Graphics g;
    int n;
    d = size();
    setBackground(Color.black);
    g=getGraphics();
    g.setFont(smallfont);
    fmsmall = g.getFontMetrics();
    g.setFont(largefont);
    fmlarge = g.getFontMetrics();
    ship = getImage(getCodeBase(), "ship.gif");
    bullet = getImage(getCodeBase(), "bullet.gif");
    fire = new Image[fireframe];
    for (n=0; n<fireframe; n++) {
	fire[n] = getImage(getCodeBase(), "fire"+n+".gif");
    }
    boom = new Image[bframes+1];
    for (n=0; n<=bframes; n++) {
	boom[n] = getImage(getCodeBase(), "boom"+n+".gif");
    }

    xSize = d.width - borderwidth*2;
    ySize = d.height - borderwidth*2 - scoreheight;

    x = (xSize - sxsize) / 2;
    y = ySize - sysize - scoreheight - borderwidth;
    mousex = -1;

    // will be override by command line parameters
    blevel = 3;
    slevel = 3;

    bx = new int[blevel*10];
    by = new int[blevel*10];

    for (n=0; n<blevel*10; n++) {
	bx[n] = -1;
    }

    // Meteor initiliaze
    meteor = getImage(getCodeBase(), "meteor.gif");
    maxmet = d.height / symet + 1;
    maxmet = maxmet * 10;
    metx = new int[maxmet];
    mety = new int[maxmet];
    metf = new int[maxmet];
    metr = new boolean[maxmet];

    // Audio
    try {
      blast = getAudioClip(new URL(getDocumentBase(), "blast.au"));
      crash = getAudioClip(new URL(getDocumentBase(), "collisn.au"));
      kill = getAudioClip(new URL(getDocumentBase(), "mdestr.au"));
    }
    catch (MalformedURLException e) {}

    blast.play();  blast.stop();
    crash.play();  crash.stop();
    kill.play();   kill.stop();

    initStars();

    rndcnt = 777;

    // Bosses
    // Sunbird
    sbfx = new int[11];
    sbfy = new int[11];
    sbfx[0] = 10;
    sbfy[0] = 0;
    sbfx[1] = 15;
    sbfy[1] = 10;
    sbfx[2] = 0;
    sbfy[2] = 10;
    sbfx[3] = 3;
    sbfy[3] = 15;
    sbfx[4] = 17;
    sbfy[4] = 15;
    sbfx[5] = 20;
    sbfy[5] = 20;
    sbfx[6] = 23;
    sbfy[6] = 15;
    sbfx[7] = 37;
    sbfy[7] = 15;
    sbfx[8] = 40;
    sbfy[8] = 10;
    sbfx[9] = 25;
    sbfy[9] = 10;
    sbfx[10] = 30;
    sbfy[10] = 0;

  }

// This creates the starfield in the background
        public void initStars () {
         starsX = new int[numStars];
         starsY = new int[numStars];
	 starsC = new Color[numStars];
          for (int i = 0; i < numStars; i++) {
           starsX[i] = (int) ((Math.random() * xSize - 1) + 1);
           starsY[i] = (int) ((Math.random() * ySize - 1) + 1);
	   starsC[i] = NewColor();
          }
        }

  public boolean keyDown(Event e, int key)
  {
    if (ingame)
    {
      mousex = -1;
      if (key == Event.LEFT)
          dx=-1;
      if (key == Event.RIGHT)
        dx=1;
      if (key == Event.UP)
          dy=-1;
      if (key == Event.DOWN)
        dy=1;
      if (key == ' ')
	if (bcur>0) FireGun();
      if (key == Event.ESCAPE)
        ingame=false;
    }
    else
    {
      if (key == 's' || key == 'S')
      {
        ingame=true;
	GameStart();
      }
    }
    return true;
  }

  public boolean keyUp(Event e, int key)
  {
    System.out.println("Key: "+key);
    if (key == Event.LEFT || key == Event.RIGHT)
       dx=0;
    if (key == Event.UP || key == Event.DOWN)
       dy=0;
    return true;
  }

  public void paint(Graphics g)
  {
    String s;
    Graphics gg;

    if (goff==null && d.width>0 && d.height>0)
    {
      ii = createImage(d.width, d.height);
      goff = ii.getGraphics();
    }
    if (goff==null || ii==null)
      return;

    goff.setColor(Color.black);
    goff.fillRect(0, 0, d.width, d.height);

    if (ingame)
      PlayGame();
    else
      ShowIntroScreen();
    g.drawImage(ii, 0, 0, this);
  }


  public void PlayGame()
  {
    NewMeteor();
    MoveShip();
    DrawPlayField();

    // Big bosses here
    if (sunbird) SunBird();

    ShowScore();
    distance++;
    score+=100;
    if (distance % maxdist == 0) {
	difflev++;
	if (difflev>2 & difflev<10) {
	  renew-=20;
	  bmax+=1;
	  smax+=1;
	  metmy++;
	  mrenew--;
	}
	if (difflev>3 & difflev<11) {
	  maxtribe++;
	  sbmove++;
	}
	if (difflev>3) {
	  sunbird = true;
	  tribe = maxtribe;
	}
    }

    // Renew Ship Energy
    rcnt++;
    if (rcnt % (renew / blevel) == 0) {
	bcur++;
	if (bcur>bmax) bcur=bmax;
    }
    if (distance % 500 == 0) {
	scur++;
	if (scur>smax) scur=smax;
    }
    if (rcnt>renew) rcnt=0;
  }

  public void ShowIntroScreen()
  {
    String s;

    DrawPlayField();
    goff.setFont(largefont);

    if (rndcnt > bframes) {
	rndbx = (int) (Math.random() * (xSize - sxbom) + 1);
	rndby = (int) (Math.random() * (ySize - sybom) + 1);
	rndcnt = 0;
    }

    goff.drawImage(boom[rndcnt], rndbx, rndby, this);
    rndcnt++;
    for (int i=0; i<xSize/bul_xs; i++) {
	goff.drawImage(bullet, i*bul_xs, 0, this);
	goff.drawImage(bullet, i*bul_xs, ySize-bul_ys, this);
    }

    if (showtitle)
    {
      goff.setColor(new Color(0xff0000));
      s="Absolute Space";
      goff.drawString(s,(d.width-fmlarge.stringWidth(s)) / 2, (d.height-scoreheight-borderwidth)/2 - 20);
      goff.setColor(new Color(0xff00ff));
      s="(c)2000 by Aleksey Udovydchenko";
      goff.setFont(smallfont);
      goff.drawString(s,(d.width-fmsmall.stringWidth(s))/2,(d.height-scoreheight-borderwidth)/2 + 10);
      s="freewebdesign@crosswinds.net";
      goff.drawString(s,(d.width-fmsmall.stringWidth(s))/2,(d.height-scoreheight-borderwidth)/2 + 30);
    }
    else
    {
      goff.setFont(smallfont);
      goff.setColor(new Color(0xffff00));
      s="Leftclick to start game";
      goff.drawString(s,(d.width-fmsmall.stringWidth(s))/2,(d.height-scoreheight-borderwidth)/2 - 10);
      goff.setColor(new Color(0x00ff00));
      s="Use cursor keys move, click or press SPACE to fire";
      goff.drawString(s,(d.width-fmsmall.stringWidth(s))/2,(d.height-scoreheight-borderwidth)/2 + 20);
      goff.setFont(largefont);
      goff.setColor(new Color(0xff00ff));
      s="LAST SCORE: "+score;
      goff.drawString(s,(d.width-fmlarge.stringWidth(s))/2,(d.height-scoreheight-borderwidth)/2 + 120);
    }
    count--;
    if (count<=0)
    { count=screendelay; showtitle=!showtitle; }
  }

  public void DrawPlayField()
  {

    // Show stars
    moveStars();
    for (int a = 0; a < numStars; a++) {
      goff.setColor(starsC[a]);
      goff.drawRect(starsX[a], starsY[a], 1, 1);
    }

    ShowMeteors();
    KillEmAll();
    goff.drawImage(ship, x, y, this); // paint ship
    if (firecnt != 0) {
      goff.drawImage(fire[firecnt-1], x+( (sxsize-sxfire) / 2 ), y+sysize, this); // engine fire
    }
    firecnt++;
    if (firecnt > 2) firecnt=0;
    Collisions();

    if (shield>0) {
	goff.setColor(new Color(0x00ffff));
	goff.drawOval(x-shield, y-shield, sxsize+shield*2, sysize+shield*2);
	shield--;
    }

  }

  public void ShowScore()
  {
    String s;
    int my;
    sstretch = (xSize-txtalign*2)/Math.max(bmax,smax);
    // Laser bar
    my = d.height-scoreheight+10;
    goff.setColor(new Color(0x00ff96));
    goff.drawRect(txtalign, my-10, bmax*sstretch, 10);
    goff.setFont(smallfont);
    s="laser: "+bcur+"/"+bmax;
    goff.fillRect(txtalign, my-10, bcur*sstretch, 10);
    goff.drawString(s,10,my);
    // Shield bar
    my += 15;
    goff.setColor(new Color(0x00ffff));
    goff.drawRect(txtalign, my-10, smax*sstretch, 10);
    goff.setFont(smallfont);
    s="shield: "+scur+"/"+smax;
    goff.fillRect(txtalign, my-10, scur*sstretch, 10);
    goff.drawString(s,10,my);
    // Score
    my += 20;
    goff.setColor(new Color(0xffffff));
    goff.setFont(largefont);
    s="score: "+score;
    goff.drawString(s,10,my);
  }

  public void MoveShip()
  {
    int xx, yy;
    oldx = x;
    oldy = y;

    xx = mousex;
    if (xx>0) {
	yy = mousey;
	if (xx<x) dx=-1;
	if (xx>x+sxsize) dx=1;
	if (yy<y) dy=-1;
	if (yy>y+sysize) dy=1;
	if (xx>x & xx<x+sxsize & yy>y & yy<y+sysize) {
	  dx = 0;
	  dy = 0;
	  mousex = -1;
	}
    }

    x+=dx*movex;
    y+=dy*movey;

    if (y<=borderwidth || y>=(d.height-sysize-scoreheight))
    {
      dy=0;
      y=oldy;
    }
    if (x>=(d.width-borderwidth-sxsize) || x<=borderwidth)
    {
      dx=0;
      x=oldx;
    }
  }

  public void FireGun()
  {
    int n=0, f=-1;
    while (n<blevel*10 && bx[n]>=0) n++;
    if (n<blevel*10) f = n;
    if (f>=0) {
	bx[f] = x+( (sxsize-bul_xs) / 2);
	by[f] = y;
	bcur--;
	blast.play();
    }
  }

  public void KillEmAll()
  {
    int f;
    for (int n=0; n<blevel*10; n++) {
      if (bx[n]>0) {
	by[n] -= bmy;
	if ( by[n] < borderwidth | MetHit(n) | BirdHit(bx[n], by[n]) ) {
	  bx[n] = -1;
	} else {
	  goff.drawImage(bullet, bx[n], by[n], this); // paint bullet
	}
      }
    }
  }

  public boolean MetHit(int f)
  {
    for (int n=0; n<maxmet; n++) {
      if (metx[n]>=0) {
	if (metr[n] & bx[f]+bul_xs>metx[n] & bx[f]<metx[n]+sxmet & by[f]+bul_ys>mety[n] & by[f]<mety[n]+symet) {
	  DelMeteor(n);
	  kill.play();
	  return true;
	} 
      }
    }
    return false;
  }

  public void ShowMeteors()
  {
    int n;
    mtotal = 0;
    for (n=0; n<maxmet; n++) {
      if (metx[n]>=0) {
	mtotal++;
	mety[n] += metmy;
	if (mety[n] > d.height-borderwidth-scoreheight) {
	  DelMeteor(n);
	} else {
	  if (metr[n]) {
		goff.drawImage(meteor, metx[n], mety[n], this); // paint meteor
	  } else {
		goff.drawImage(boom[bframes-metf[n]], metx[n]+(sxmet-sxbom)/2, mety[n]+(symet-sybom)/2, this); // paint boom
		metf[n]--;
		if (metf[n]<0) DelMeteor(n);
	  }
	}
      }
    }
  }

  public void NewMeteor()
  {
    int n=0, f=-1;
    metcount++;
    if (metcount > mrenew/metmy) {
	metcount = 0;
	while (n<maxmet & metx[n]>=0) n++;
	if (n<maxmet) f = n;
	if (f>=0) {
		metx[f] = (int) (Math.random() * (xSize - sxmet) + 1);
		mety[f] = borderwidth-symet;
		metr[f] = true;
		metf[f] = bframes;
	}
    }
  }

// If a star in the background reaches the bottome then it will go back to the top
        public void moveStars () {
         for (int i = 0; i < numStars; i++) {
          if (starsY[i] + 1 > ySize - (speed * 2 )) {
           starsY[i] = 0;
           starsX[i] = (int) ((Math.random() * xSize - 1) + 1);
	   starsC[i] = NewColor();
          }
          else {
           starsY[i] += speed;
          }
         }
        }

  public void Collisions()
  {

    for (int n=0; n<maxmet; n++) {
      if (metx[n]>=0) {
	if (metr[n] & x+sxsize>metx[n] & x<metx[n]+sxmet & y+sysize>mety[n] & y<mety[n]+symet) {
	  HitShip();
	  DelMeteor(n);
	} 
      }
    }

  }

  public void HitShip()
  {
    crash.play();
    shield=maxshield;
    scur--;
    if (scur<0) GameOver();
  }

  public void DelMeteor(int n)
  {
    if (metr[n]) {
	  metr[n] = false;
	  metf[n] = bframes;
    } else {
          metx[n] = -1;
	  metr[n] = true;
	  metf[n] = 0;
    }
  }

  public Color NewColor()
  {
   int[] rgb;
   int t;
   rgb = new int[3];
   for (int i=0; i<3; i++) rgb[i] = 0;
   t = (int) (Math.random()*3);
   rgb[t] = (int) (Math.random()*128 + 1) + 127;
   return new Color(rgb[0], rgb[1], rgb[2]);
  }

  public void run()
  {
    long  starttime;
    Graphics g;

    Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
    g=getGraphics();

    while(true)
    {
      starttime=System.currentTimeMillis();
      try
      {
        paint(g);
        starttime += 30;
        Thread.sleep(Math.max(0, starttime-System.currentTimeMillis()));
      }
      catch (InterruptedException e)
      {
        break;
      }
    }
  }

  public void start()
  {
    if (thethread == null) {
      thethread = new Thread(this);
      thethread.start();
    }
  }

  public void stop()
  {
    if (thethread != null) {
      thethread.stop();
      thethread = null;
    }
  }

// This class handles mouse clicking
	public boolean mouseDown(Event e,int xx,int yy)
	{
          if (ingame) {
	    mousex = xx;
	    mousey = yy;
	    keyDown(e, 32);
	  } else {
	    keyDown(e, 'S');
	  }
	  return true;
	}

  // Game Start
  public void GameStart()
  {
    // Set Up Ship variables
    bmax = blevel*blevel;
    bcur = bmax;
    smax = slevel*slevel;
    scur = smax;
    difflev = 3;
    distance=0;
    score=0;
    renew=250;
    for (int n=0; n<maxmet; n++) {
	metx[n] = -1;
	metf[n] = 0;
	metr[n] = true;
    }
    metcount=0;
    metmy=2;
    mrenew=60;

    // Bosses init
    // #1 - SunBird;
    sbx = -1;
    sbmove = 2;
    maxtribe = 1;
    sunbird=false;
    sbefore = true;
    safter = false;
  }

  // Game Over
  public void GameOver()
  {
	ingame=false;
  }

  // Boss #1 - Sunbird's pack
  public void SunBird()
  {
    int[] xcur, ycur;
    xcur = new int[11];
    ycur = new int[11];
    if (sbx<0) {
	sbx = (int) ((Math.random() * xSize - 40) + 1);
	sby = -5;
	sbefore = true;
	safter = false;
    }
    sby += sbmove;
    if (y+sysize/2<sby) safter = true;
    goff.setColor(new Color(0xffff00));
    if (sbefore & safter) {
	// hit ship
	goff.fillRect(0, sby+15, xSize, 2);
	HitShip();
    }
    for (int i=0; i<11; i++) {
	xcur[i] = sbfx[i] + sbx;
	ycur[i] = sbfy[i] + sby;
    }
    goff.fillPolygon(xcur, ycur, 11);
    if (sby>xSize+20) {
	sbx=-1;
	sbefore = true;
	safter = false;
    }
    sbefore=false;
    if (y+sysize/2>sby) sbefore = true;
  }

  public boolean BirdHit(int blx, int bly) {
    if (sunbird) {
 	if (blx+bul_xs>sbx & blx<sbx+40 & bly+bul_ys>sby & bly<sby+20) {
	  tribe--;
	  if (tribe<0) sunbird=false;
	  sbx=-1;
	  sbefore = true;
	  safter = false;
	  return true;
	}
    }
    return false;
  }

}

i hope that someone can tell me how can i change this so it runs on netbeans instead of on a browser
thanks a lot