Tip:
Highlight text to annotate it
X
>> DAVID MALAN: Írjunk egy programot bevonásával ablakot, és a kör
a kör pattogó oda-vissza ki a bal és jobb
széle az ablak.
Ehhez nézzük meg a Stanford Hordozható Könyvtár, és hagyja, hogy az első
közé gevents.h, hogy mi is hallgassa az egér mozgását.
Nézzük akkor tartalmazzák gobjects.h, hogy a kijelenthetjük dolgokat, mint ovális vagy
körök, tényleg.
És akkor nézzük közé gwindow.h, hogy van egy grafikus ablak
mindent.
>> Nézzük kijelentik fő a szokásos módon.
És nézzük most kijelentik és példányosítani vagy hozzon létre az ablakot, GWindow -
és hívjuk a változó ablak -
lesz newGWindow.
És mi önkényesen teszik 320 x 240 pixel.
>> Nézzük a következő példányosítani egy kört.
De példányosítani ebbe a körbe, tennünk kell egy kicsit több munkát.
Különösen, hadd töltse ki az alábbi körben úgy, hogy az egész dolog
fekete és nem csak a felvázolni figyelemmel.
GOval -
fogjuk nevezni kör -
lesz newGOval.
Majd, hogy ezt ovális 0, 110, és mi , hogy az ovális 20 pixel széles és
20 pixel magas - más szóval, a átmérője 20 vagy 10-es sugarú.
>> Nézzük most a szín, hogy a kör hogy idézet, idézet vége, "fekete". Nézzük
Most meg azt kell tölteni megadásával igaz.
És most végül, adjuk hozzá a kör Az ablak a következők szerint, ahol a
utóbbit adunk az előbbi.
>> Nézzük most kijelentik kettős.
Hívjuk meg sebességét.
És némileg önkényesen, mondjuk a sebessége ennek a körnek lesz
2.0, más szóval, 2 pixel minden egységnyi idő alatt.
És most nézzük szándékosan indukál egy végtelen ciklus.
>> Szóval, hogyan lehet ezt a kört ugrál ide-oda?
Nos, tegyük fel, hogy ebben a hurok, minden egységnyi idő alatt, mi
fog mozogni a kör csak egy kicsit bites alapuló sebessége 2 pixel
egységnyi idő alatt.
De folyamatosan, mi kell majd ellenőrizze, hogy a kör érinti a
jobb szélén a képernyőn, vagy a bal oldali a képernyő szélén, mert ha igen, akkor
kell, hogy ugrál, hogy úgy mondjam.
>> Hogyan hajtsák végre a fogalma pattogó?
Nos, ha megyünk 2 pixel a jobb egységnyi idő alatt, lepattan
a jobb szélén, akkor egyszerűen vissza hogy ahhoz, hogy a negatív 2 pixel egységenként
az idő, és ezáltal hatástalanítva a sebesség.
Tehát valójában, pattogó viszonylag egyszerű.
>> Nézzük először mozgassa a kört ennyi pixel mentén az x tengely, az e
Sok pixel mentén az y-tengelyen.
Más szavakkal, mi nem akarjuk, hogy mentén mozognak, az y-tengelyen egyáltalán.
Mi csak szeretnénk, hogy talpra oda a bal és a jobb.
>> És nézzük most ellenőrizze ebben a ciklus keletkezhet, ha Az x-koordinátája kör plusz
a szélessége nagyobb, a kör vagy egyenlő, mint a
szélessége az ablak -
Más szóval, ha a kör helyét plusz a szélessége a kör
önmagában már elmúlt a szélén Az ablak, mi lenne
jobb fordított a sebesség -
sebesség lesz negatív sebesség, ezáltal essek pozitív, hogy a
negatív, vagy negatív a pozitív.
De mi van, ha a kör mozog jobbról balra, és így eléri
bal szélén?
Más szóval, ha az x koordinátája a kör most kisebb vagy egyenlő
0, menjünk előre, és újra fordítsa meg a sebességet.
>> Akkor én miért nem vett a szélessége ennek a kör
időt, mint én korábban?
Nos, ne feledje, hogy a koordináták Egy objektum határozza meg
annak bal felső sarkában, nem a közepén.
És így, ha a kör mozog balról jobbra, akkor ellenőrizni kell
hogy a jobb szélén kör telt el a
jobb szélén az ablakon.
Szóval, hogy kitaláljuk, mi ez, mi hogy az x-koordinátája kör
plusz a szélessége a kör mozogni magunkat a bal felső
sarok, hatékonyan, a jobb felső sarokban.
Amikor a kör halad jobbról bal, eközben nem kell
zavarja az ilyen túlmenően, mivel a bal felső sarkában a kör
Már az értéket fogunk kap a get x.
>> Nézzük most mozgassa a labdát.
Nézzük most menteni, fordítsd, és futtassa ezt programot, hogy ugrál,. / ugrál.
És ott van egy program.
>> De a kör mozog olyan rohadt gyorsan, ez szinte lehetetlen, hogy mi
valójában.
Szóval elég a program erőszakkal által kattintson az X a jobb felső
sarok itt.
Nézzük most menj vissza a forráskódot meg lelassítani a dolgokat egy kicsit.
>> Más szavakkal, ezen belül a végtelen loop, nem csak, mozgunk és
mozgás és ismét ad nauseum, hadd időzzön csak néhány milliszekundum
mielőtt ismét megmozdult.
Különösen, menjünk az aljára A végtelen ciklus van, és egyszerűen
szünet, mondjuk, 10 ms minden iterációban.
Nézzük most újrafordítani és újra futni ugrál.
És most látjuk egy sokkal ésszerűbb végrehajtás, ahol láthatjuk a
kör igazán pattogó a bal és jobb szélén.