Ponizej przedstawiam kod apletu(gry) w ktorej leci sie balonem i omija chmurki ;)
Wszystko działa spoko, tylko chciałbym aby kazde zdezenie z chmurą było liczone(od 3 do 0) i po osiągnięciu 0 wyswietlal napis Game Over!!!
Jezeli znajdzie sie ktos kto pomoze to bede wdzieczny!!! Nie chodzi mi o to zeby ktos podal gotowy kod ale przyklad jak to zrobic.

Dzieki z góry

import java.awt.;
import java.awt.Color;
import java.awt.event.
;
import java.applet.*;
import java.awt.Graphics;

public class balon extends Applet implements Runnable {

Image im, im1, im2, im3; //to jest obiekt image
Graphics buf; //to jest bufor
Thread ruch; //wątek
Thread zycie;
String punkty = "Stan Gry: ";
int xo, xo1, xo2, xo3, xo4, yo, yo1, yo2, yo3, yo4, yp, sleep = 30, mx, my, p ;

//po kolei: x-chmurka,y-chmurka, yp balon, prędkość chmurki, czas spania, x myszki, y myszki
boolean gra = false; // zatrzymana jeśli false

//incjalizacja
public void init() {
xo = -100; //przypisanie wartości do zmiannych |
yo = 10;
xo1 = -370;
yo1 = 70;
xo2 = -160;
yo2 = 130;
xo3 = -500;
yo3 = 190;
xo4 = -280;
yo4 = 255;
yp = 150;

im = createImage(530, 400); //stwórz obrazek o wymiarach x , y
buf = im.getGraphics(); // przypisanie obrazku do bufora
im1 = getImage(getCodeBase(), "chmurka.gif");
im2 = getImage(getCodeBase(), "balon.gif");
im3 = getImage(getCodeBase(), "chmura2.gif");

}

//rysowanie
public void paint(Graphics g) {
buf.setColor(new Color(63, 150, 208)); //ustawienie koloru tła
buf.fillRect(0, 0, 530, 400); //czyszczenie bufora
buf.setColor(Color.red); //kolor ramki
buf.drawRect(5, 1, 520, 320); //pole do gry
buf.drawImage(im1, xo, yo, this); // chmurka
buf.drawImage(im1, xo1, yo1, this); // chmurka
buf.drawImage(im1, xo2, yo2, this); // chmurka
buf.drawImage(im1, xo3, yo3, this); // chmurka
buf.drawImage(im1, xo4, yo4, this); // chmurka
buf.drawImage(im2, 340, yp, this); // BALON
buf.drawRoundRect(30, 340, 60, 20, 5, 5); //przycisk START
buf.drawString("START", 38, 355);
buf.drawRoundRect(110, 340, 60, 20, 5, 5); //przycisk STOP
buf.drawString("STOP", 118, 355);
buf.drawRoundRect(190, 340, 60, 20, 5, 5);
buf.drawString("PAUSE", 198, 355); //przycisk PAUSE
buf.drawString(punkty, 360 , 355);
buf.drawString(karne, 360 , 375);

if (xo > 300 && yp < 53 && xo < 350) {

  buf.drawImage(im3, xo, yo, this);
   gra=false;
 }

if (xo1 > 300 && yp > 50 && yp < 112 && xo1 < 350) {
  buf.drawImage(im3, xo1, yo1, this);
  gra=false;

}
if (xo2 > 300 && yp > 105 && yp < 172 && xo2 < 350) {
  buf.drawImage(im3, xo2, yo2, this);
   gra=false;

}
if (xo3 > 300 && yp > 163 && yp < 235 && xo3 < 350) {
  buf.drawImage(im3, xo3, yo3, this);
  gra=false;

}
if (xo4 > 300 && yp > 235 && yp < 314 && xo4 < 350) {
  buf.drawImage(im3, xo4, yo4, this);
   gra=false;

}

g.drawImage(im, 0, 0, this); //wyświetlenie klatki

}

public void update(Graphics g) { //ta metoda jest wywolywana po repaint();
paint(g);

}

//start
public void start() {
addMouseListener( // obsługa myszki
new MouseAdapter() {
public void mousePressed(MouseEvent evt) {

    //pobranie współrzędnych kliknięcia
    mx = evt.getX();
    my = evt.getY();

    if (mx < 90 && my < 360 && mx > 30 && my > 340) { //sprawdzanie współrzędnych(obsługa przycisków).
      System.out.println(">>START<<");
      gra = true;
      punkty = "Stan Gry: " + p;
      repaint();
    }
    if (mx < 170 && my < 360 && mx > 110 && my > 340) {
      System.out.println(">>STOP<<");
      punkty = "KONIEC zdobyłeś: " + p;
      gra = false;
      xo = -100;
      xo1 = -370;
      xo2 = -170;
      xo3 = -500;
      xo4 = -280;
      yo = 10;
      yo1 = 70;
      yo2 = 130;
      yo3 = 190;
      yo4 = 255;
      yp = 150;
      repaint();

    }
    if (mx < 250 && my < 360 && mx > 190 && my > 340) {
      System.out.println(">>PAUSE<<");
      gra = false;
      repaint();
    }
  }
}
);
addKeyListener(new KeyAdapter() { //obsługa klawiszy

  public void keyPressed(KeyEvent ke) {

    if (ke.getKeyCode() == 40 && yp < 290 && gra) { // strzałka w górę

      yp = yp + 9;
      repaint();
    }
    if (ke.getKeyCode() == 38 && yp > 0 && gra) { // strzałka w dół

      yp = yp - 9;
      repaint();
    }

  }
});
ruch = new Thread(this); //utworz wątek
if (ruch != null) { //takie zabezpieczemie przed wystartowamem drugi raz tego wątku
  ruch.start();
  
}

}

void sleep() {
try {
Thread.sleep(sleep); //zatrztmanie programu na 100 milisekund
}
catch (InterruptedException e) {}
}

void p() {
p = p+1;
punkty = "Stan Gry: " +p;

}

void move() {
if (gra) {

  if (xo > 540) {
  p();
  xo = -400;
  }
  xo = xo + 7;
  yo = 10;


  if (xo1 > 570) {
    xo1 = -70;
    p();
  }
  xo1 = xo1 + 9;
  yo1 = 70;

  if (xo2 > 590) {
    xo2 = -200;
    p();
  }
  xo2 = xo2 + 4;
  yo2 = 130;

  if (xo3 > 990) {
    xo3 = -370;
    p();
  }
  xo3 = xo3 + 5;
  yo3 = 190;

  if (xo4 > 700) {
    xo4 = -245;
    p();
  }
  xo4 = xo4 + 7;
  yo4 = 255;

  repaint();
  sleep();

}

}

public void run() { // wątek
while (true) {
move();

  repaint();

}

}

}