Problem z appletem

0

Witam, mam następujący problem z animacją w Javie. Otóż applet ma za zadanie wyświetlać poruszające się piłeczki (każda w innym kolorze) po obszarze, jednak ani jedna nie jest wyświetlona. Problem pewnie jest prosty, jednak jestem początkujący i wciąż nie wiem gdzie leży.

import java.applet.Applet;
import java.awt.Graphics;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

public class Animacja extends Applet implements Runnable {

	private static final long serialVersionUID = -1777398265505319750L;
	Thread watek;
	Thread1 sterowanie;
	Random a = new Random();
	Timer time = new Timer();
	
	public Animacja(){
		
	
	}
	
	public void init(){
		watek = new Thread();
		int t = a.nextInt(5);
		sterowanie = new Thread1(t);
	    this.setBounds(0, 0, 500, 500);
	}
	
	public void start(){
		if (watek == null) {
		      watek = new Thread1(5);
		      watek.start();
		    }
		
	}
	
	public void stop(){
		 if (watek != null){
		      watek = null;
		   }
	}
	
	public void paint(Graphics k, kulka z){
		k.fillOval(z.polozenie.x, z.polozenie.y, 20, 20);
		
	}

	public void run() {
		
			while(watek!=null){
				sterowanie.run();
				time.schedule(procedure(), 0, 20);
			try {
		        Thread.sleep(3);
		      } catch(InterruptedException e){}
		   
		}
		
	}
	
	public static TimerTask procedure(){
		Random h = new Random(2);
		int z = h.nextInt();
		Thread1 m = new Thread1(2);
		if(z==0) {
			m.run();
		}
		else m.interrupt();
		return null;
	}

}


//--------------------------------------------------------------

import java.util.Random;



public class Thread1 extends Thread {
	Random k = new Random();
	int n = 0;
	int v = 0;
	
		public Thread1(int n){this.n = n/2;}

		public void run(){
			
			for(int i=0; i<n; i++){
				v = k.nextInt(2);
				kulka h = new kulka();
				h.run();
				if (v==0) {
					kulkasprezysta h1 = new kulkasprezysta();
					h1.run();
				}
				else{
					kulka h1 = new kulka();
					h1.run();
				}
				
			}
		}
		
	
}


//-----------------------------------------------------------------------

import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;

public class kulka implements Runnable {
		
	
		Random l = new Random();
		int r;
	    Punkt polozenie;
	    Color kolor;
	    wektor wek;
	    Color[] tab = {Color.red, Color.black, Color.blue, Color.green};
	    Graphics k;
	    
	    public kulka(){
	    	r = l.nextInt(4);
		    polozenie = new Punkt();		
		    kolor = tab[r];
			wek = new wektor();
	    	
	    }
		


		public void rysuj(Graphics k){
			k.fillOval(polozenie.x, polozenie.y , 20, 20);
			k.setColor(kolor);
		}
		
		public void przesun(int minw, int maxw, int minh, int maxh){
			if (polozenie.x>=maxw) polozenie.x=minw;
			else if (polozenie.x<=minw) polozenie.x=maxw;
			else if (polozenie.y>=maxh) polozenie.y=minh;
			else if (polozenie.y<=minh) polozenie.y=maxh;
			else {
			polozenie.x+=wek.x;
			polozenie.y+=wek.y;
			}
		}



		public void run() {
			for(; ;){
			rysuj(k);
			przesun(0, 500, 0 , 500);
			rysuj(k);
			}
		}
}

//----------------------------------------------------------

public class kulkasprezysta extends kulka {
	
	public kulkasprezysta(){
		r = l.nextInt(4);
	    polozenie = new Punkt();		
	    kolor = tab[r];
		wek = new wektor();
    	
	}
	
	public void przesun(int minw, int maxw, int minh, int maxh){
		if (polozenie.x>=maxw) wek.x=-wek.x;
		else if (polozenie.x<=minw) wek.x=-wek.x;
		else if (polozenie.y>=maxh) wek.y=-wek.y;
		else if (polozenie.y<=minh) wek.y=-wek.y;
		else {
		polozenie.x+=wek.x;
		polozenie.y+=wek.y;
		}
	}
	

}

Z góry dziękuję za pomoc ;)

0

Nikt nie jest w stanie pomóc? :/

0

Masz jakieś dziwaczne poplątanie wątków i timera. Zdecyduj się na jedno - prostszy będzie Timer (Timer działa w niezależnym wątku).
Korzystasz z klasy wektor, której kodu nie zamieściłeś.

1 użytkowników online, w tym zalogowanych: 0, gości: 1