Tip:
Highlight text to annotate it
X
>> DAVID Malan: Pojďme napsat program, zahrnující okna a kruh se
kruh poskakování tam a zpět off vlevo a vpravo
Hrany tohoto okna.
Chcete-li tak učinit, pojďme používat Stanford Přenosný knihovna, a první pojďme
patří gevents.h takže můžeme poslouchat pohyby myší.
Pojďme tedy patří gobjects.h tak, aby můžeme prohlásit věci jako ovály nebo
kruhy, opravdu.
A pak se pojďme patří gwindow.h tak, aby máme grafické okno pro
vše.
>> Pojďme prohlásit hlavní obvyklým způsobem.
A pojďme se nyní přiznat a instance nebo vytvořit to okno, GWindow -
a zavoláme na proměnné okno -
dostane newGWindow.
A my libovolně, aby bylo 320 pixelů na 240 pixelů.
>> Pojďme další instanci kruh.
Ale instanci tento kruh, musíme udělat trochu více práce.
Zejména, pojďme vyplnit v tomto kruhu tak, aby se celá věc
černá a ne jen nastínit jejich.
Goval -
budeme nazývat kruh -
dostane newGOval.
Dáme tento ovál na 0, 110, a budeme provést oválné 20 pixelů široký
20 pixelů vysoký - jinými slovy, průměr 20 nebo poloměr 10.
>> Pojďme si nyní nastavit barvu tohoto kruhu být citát, konec citátu, "černá". Pojďme
Nyní nastavte ji být vyplněny zadáním pravda.
A teď konečně, pojďme přidat kruh okna následovně, přičemž
Ten se přidá k prvnímu.
>> Pojďme se nyní prohlásit dvojnásobek.
Nazveme to rychlost.
A poněkud libovolně, řekněme, rychlost tohoto kruhu bude
2,0, jinými slovy, 2 bodů pro každou jednotku času.
A teď pojďme úmyslně vyvolat nekonečnou smyčku.
>> Tak, jak se dělá tento kruh odrazí tam a zpět?
No dejme tomu, že v rámci této smyčky, které pro každou jednotku času, jsme
bude pohybovat kruhu jen málo bit na základě jeho rychlosti 2 pixelů
za jednotku času.
Ale neustále, budeme muset zkontrolujte, zda je kruh se dotýká
pravý okraj obrazovky nebo vlevo okraj obrazovky, protože pokud ano, tak
potřebovat odskočit, abych tak řekl.
>> Jak implementovat Pojem poskakování?
No, pokud jedeme na 2 bodů do přímo za jednotku času, odrazit
pravý okraj, můžeme jednoduše zvrá*** že se negativní 2 pixelů na jednotku
času, tak negovat rychlost.
Takže ve skutečnosti, odrážení je relativně jednoduché.
>> Pojďme si nejprve přesuňte kruh by to mnoho pixelů podél osy x, od tohoto
počet pixelů podél osy y.
Jinými slovy, nechceme, aby to pohybovat podél osy y vůbec.
My jen chceme, aby to odrazit zpět a tam vlevo a vpravo.
>> A pojďme nyní kontrolovat v rámci této smyčky, pokud x-ovou souřadnici kruhu a
šířka kruhu je větší než nebo rovno
šířka okna -
jinými slovy, pokud místo se hodnota kruhu a šířka kruhu
samo o sobě je nyní přes okraj okna, měli bychom
lepší obrá*** naši rychlost -
rychlost dostane zápornou rychlost, čímž se obracející pozitivní
negativní nebo z negativní na pozitivní.
Ale co v případě, že kruh se pohybuje od zprava doleva, a to proto zasáhne
levý okraj?
Jinými slovy, v případě, že x-ovou souřadnici kruh je nyní méně než nebo rovno
0, pojďme do toho a znovu obraťte naši rychlost.
>> Tak proč jsem se přidal v roce šířka kruhu této
čas, jak jsem to udělal předtím?
No, mějte na paměti, že souřadnice objektu jsou definovány
jeho levém horním rohu, není jeho středu.
A tak, když kruh se pohybuje od zleva doprava, je třeba zkontrolovat
zda pravý okraj kruh prošel
pravý okraj okna.
Takže přijít na to, co to je, máme získat x-souřadnici kruhu
a šířka kruhu pohybovat sami od horní levé ruky
kout, efektivně, aby pravém horním rohu.
Když kruh se pohybuje zprava vlevo, mezitím, nepotřebujeme, aby
obtěžovat se tak toho, protože v levém horním rohu kruhu je
již hodnota, kterou budeme dostat z get x.
>> Pojďme se přesunout míč.
Pojďme nyní uložit, zkompilovat a spustit tento programu, aby odskočit,. / odrazit.
A zde máme program.
>> Ale kruh se pohybuje tak zatraceně rychle, je to téměř nemožné, aby viděli, co je
ve skutečnosti děje.
Takže je docela program násilně Klikněte na X v pravém horním
rohová zde.
Pojďme se nyní vrá*** do zdrojového kódu a celý proces zpomalit trochu.
>> Jinými slovy, v tomto nekonečný smyčky, spíše než jen a pohyb a
pohybovat a znovu, reklama nauseum, pojďme prodlévat jen na pár milisekund
Před pokračováním se znovu pohybovat.
Zejména, pojďme na dno nekonečné smyčky tady a jednoduše
pauza, řekněme, 10 milisekund na každé iteraci.
Pojďme se nyní překompilovat a znovu spustit bounce.
A nyní vidíme mnohem rozumnější realizace, kde můžeme vidět
kruh skutečně odrazí na levý a pravý okraj.