Demo 6 / Ma 21.10


1. Räiskintä

1.
Korjaa liikennevalot (ota n:\kurssit\winohj\delphi\vclclx\comps\raiskinta ja kokeile testiohjelmaa AutoPeli.dpr).
2.
Vaihda testiohjelmassa rivin
	    Auto := TRusinaksiMuuttuvaAuto.Create(space);
	tilalle
	    Auto := TAuto.Create(space);
Tutki miksi autot häviävät ruudusta törmäyksessä. Peri TAutosta sellainen auto, joka ei häviä törmäyksessä. Vaihda testiohjelman luomiseen tällaisten autojen luominen ja kokeile.
3*4.
Lisää koira, joka kulkee myös vinottain. Kun koira "törmää" liikennevaloon, niin se jättää siihen keltaisen läiskän (" TPissi") ja vaihtaa sitten satunnaiseen kulkusuuntaan. TPissi haihtuu pois 20 sekunnin kuluessa.

2. Piirtäminen ja muunnosmatriisit

5*6.
Muuta esimerkissä vclclx\comps\piirto\sinform.pas ollutta ratkaisua vielä oliomaisemmaksi: Tee ensin luokka cFunktionKuvaaja, jossa on piirrettävä funktio f ja piirtoväli [x1,x2] sekä väri. Tähän luokkaan sitten metodi Draw(dc:TCanvas, const A: cTMatrix) , joka suorittaa varsinaisen piirtämisen. Ikkunaan laita olio- osoitintaulukko (tallettaa tyyppiä cFunktionKuvaaja) funktiot:TList; , johon ikkunan luomisen yhteydessä alustetaan muutama funktio ja piirrä kaikki funktiot OnPaint tapahtumassa for-silmukalla. Halutessasi voit tehdä myös funktiotaulukosta olion!

3. Bonus

7*8.
Kokeile piirtää edelliseen ohjelmaan myös funktion
f(x,y) = sin(x)*cos(y)
kuvaaja. Vihje: luo uusi funktioluokka ja kierrä koordinaatistoa pääikkunan scale metodissa esimerkiksi lisäämällä metodin loppuun (C++ syntaksilla annettuna):
	cRotMatrix Rx(0,40.0),Ry(1,30.0);
	A *= Rx*Ry;
(Mallia valmiista ohjelmasta voit katsoa esim: vclclx/comps/piirto/Piirto3d.exe)