import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; public class Zoga { public static void main(String[] args) { JFrame okno = new Okno(); okno.setVisible(true); } } class Okno extends JFrame implements KeyListener { Vsebina vsebina=new Vsebina(); private int znj=0; private Random rnd = new Random(); Animacija[] zogice=new Animacija[32]; public Okno(){ setTitle("Zogice"); Toolkit tk = Toolkit.getDefaultToolkit(); Dimension d = tk.getScreenSize(); setSize(d.width,d.height); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBackground(new Color(255, 255, 255)); setPreferredSize(new Dimension(d.width/2, d.height/2)); this.add(vsebina); for (int i=0;i<32;i++){ vsebina.radij[i]=30; } System.out.println("asd"); for(int i=0;i<5;i++){ zogice[i]=new Animacija(rnd.nextInt(20),rnd.nextInt(20),znj,vsebina); zogice[i].start(); znj++; } vsebina.addKeyListener(this); } public void keyPressed(KeyEvent e) {} public void keyTyped(KeyEvent e) {} public void keyReleased(KeyEvent e) { if (e.getKeyChar()==KeyEvent.VK_SPACE){ System.out.println("asdf"); zogice[znj]=new Animacija(rnd.nextInt(20),rnd.nextInt(20),znj,vsebina); zogice[znj].start(); znj++; } } } class Vsebina extends JPanel{ private static final long serialVersionUID = 1L; public int[] radij=new int[32]; public int[] iks=new int[32]; public int[] ips=new int[32]; public int p=0; public Color[] c=new Color[32]; public void paintComponent(Graphics g){ super.paintComponent(g); for(int j=0;j<=p;j++){ g.setColor(c[j]); g.fillOval(iks[j]-radij[j],ips[j]-radij[j],2*radij[j],2*radij[j]); } } } class Animacija extends Thread { int xhitrost; int yhitrost; int parameter; Vsebina panel; Animacija(int xhitrost, int yhitrost,int parameter,Vsebina panel){ this.xhitrost=xhitrost; this.yhitrost=yhitrost; this.parameter=parameter; this.panel=panel; } public void run() { boolean naprej=true; boolean dol=true; panel.p=parameter; System.out.println(parameter); Random rnd=new Random(); panel.c[parameter]=new Color(rnd.nextInt(256),rnd.nextInt(256),rnd.nextInt(256)); while(true) { if (panel.iks[parameter]-panel.radij[parameter]<=0) naprej=true; if (panel.iks[parameter]+panel.radij[parameter]>=panel.getWidth()) naprej=false; if (naprej) panel.iks[parameter]+=xhitrost; else panel.iks[parameter]-=xhitrost; if (panel.ips[parameter]-panel.radij[parameter]<=0) dol=true; if (panel.ips[parameter]+panel.radij[parameter]>=panel.getHeight()) dol=false; if(dol) panel.ips[parameter]+=yhitrost; else panel.ips[parameter]-=yhitrost; panel.repaint(); try { Thread.sleep(20); } catch (InterruptedException ex) { } } } }