// -*- Mode: Jde -*-
//
// File           : Kokeilu4.java
//
// Author         : Esko Nuutila <Esko.Nuutila@hut.fi>
//
// Created        : Mon Sep 24 14:20:31 2001 by enu
// Last modified  : Mon Sep 24 14:22:54 2001 by enu
//

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

// Tämä luokka testaa tikku-ukkojen piirtoa ja siirtoa.
// Kotitehtävien tekemiseksi ei tarvi tutustua tähän koodiin tai ymmärtää sitä.
// Jos käännettäessä tulee jokin virhe, älä muuta tätä luokkaa vaan omaa koodiasi.
public class Kokeilu4 extends Piirto {
    // Määritellään vakiot, jotka kuvaavat piirrettävien olioiden muuttumattomia
    // ominaisuuksia.
    private static final int leveys = 400;
    private static final int korkeus = 400;
    private static final int fps = 50;
    private static final int n = 8;
    private static final int maksimiNopeus = 4;
    private static final int ukonTila = korkeus/n;
    private static final long seed = 1234L;
    private static final Random random = new Random(seed);

    // Ukot, niiden nopeudet ja sijainnit (x-suunnassa) ovat taulukoissa.
    TikkuUkko[] ukot;
    int[] sijainnit;
    int[] nopeudet;

    public Kokeilu4() {
        super("Kokeilu4", leveys, korkeus, fps, true);
	luoKuviot();
    }

    private void luoKuviot() {
	ukot = new TikkuUkko[n];
	sijainnit = new int[n];
	nopeudet = new int[n];
	for (int i = 0; i < n; i++) {
	    sijainnit[i] = random.nextInt(2*leveys) - leveys/2;
	    if (random.nextDouble() < 0.5) {
		nopeudet[i] = -(1 + random.nextInt(maksimiNopeus));
	    } else {
		nopeudet[i] = (1 + random.nextInt(maksimiNopeus));
	    }
	    int ukonKorkeus = random.nextInt(ukonTila - n) + 8;
	    int ukonLeveys = ukonKorkeus/3;
	    ukot[i] = new TikkuUkko(sijainnit[i],
				    i*ukonTila + (ukonTila - ukonKorkeus)/2,
				    ukonKorkeus,
				    ukonLeveys,
				    new Color((float)(i%3*0.5*random.nextDouble()),
					      (float)(i%3*0.5*random.nextDouble()),
					      (float)(i%3*0.5*random.nextDouble())));
	}
    }

    public void piirräKaikki() {
	pyyhiKaikki();
	for (int i = 0; i < n; i++) {
	    ukot[i].piirrä(this);
	    if (sijainnit[i] < -leveys/2 || sijainnit[i] > 3*leveys/2) {
		nopeudet[i] = -nopeudet[i];
	    }
	    ukot[i].siirrä(nopeudet[i], 0);
	    sijainnit[i] += nopeudet[i];
	}
    }

    public static void main(String[] args) {
	Kokeilu4 k = new Kokeilu4();
	k.käynnistä();
    }

}
