Informatika2-2016/Gyakorlat8
A MathWikiből
(Változatok közti eltérés)
(→Vászon) |
(→Alakzat) |
||
5. sor: | 5. sor: | ||
= Feladatok = | = Feladatok = | ||
Nyissuk meg a Sypdert. | Nyissuk meg a Sypdert. | ||
− | == | + | == Alakzatok a vásznon == |
+ | === Alakzatok === | ||
Írjunk egy '''Shape''' osztályt. | Írjunk egy '''Shape''' osztályt. | ||
*Legyen '''x''' és '''y''' változója, ezek tárolják az alakzat pozícióját a síkon. | *Legyen '''x''' és '''y''' változója, ezek tárolják az alakzat pozícióját a síkon. |
A lap 2016. április 6., 20:07-kori változata
Tartalomjegyzék |
Előadás
Feladatok
Nyissuk meg a Sypdert.
Alakzatok a vásznon
Alakzatok
Írjunk egy Shape osztályt.
- Legyen x és y változója, ezek tárolják az alakzat pozícióját a síkon.
- Legyen egy move metódusa, aminek egyetlen v paramétere van, egy kételemű lista, a vektor, amivel el kell mozgatni az alakzatot.
Definiáljuk a Shape osztály leszármazottaiként az
- Ellipse ellipszis, legyen meg a kis- és nagytengelye (a,b)
- Rectangle téglalap, legyen meg az oldalak hossza (a,b)
osztályokat. Mindkét esetben a pozíciójuk a súlypontjukat jelentse. Írjunk mindkét osztályhoz egy area függvényt, ami kiszámítja az alakzat területét!
Definiáljuk az Ellipse osztály equation metódusát, ami kiírja az adott ellipszis egyenletét!
Vászon
Definiáljuk a Canvas (vászon) osztályt.
- Egyetlen tagváltozója legyen a shapes, ami alakzatok listáját tárolja.
- Oldjuk meg, hogy az osztályunk iterálható legyen! Ehhez definiáljuk az __iter__(self) metódust, valamit a next(self) metódust, ahogy az előadáson láttuk.
- Definiáljuk a crop metódust a következőképp: a bemeneti paraméter két pont koordinátája, ezek egy téglalap bal felső és jobb alsó pontjai. A függvény térjen vissza azon alakzatok listájával, amelyek a vásznon vannak és teljesen beleférnek az így definiált téglalapba. Ehhez a feladathoz az ELlipse és a Rectangle osztálynak is szüksége lesz egy box() metódusra, ami a legkisebb tartalmazó doboz bal felső és jobb alsó sarkait adja vissza.