Tip:
Highlight text to annotate it
X
>> DAVID MALAN: Chcę napisać program udziałem okno i okrąg o
koło iz powrotem, odbijając z lewej i prawej
Krawędzie tego okna.
Aby to zrobić, użyjmy Stanford Przenośna biblioteka, i niech najpierw
m.in. gevents.h tak, że możemy słuchać na ruchy myszy.
Niech to m.in. gobjects.h tak, że możemy zadeklarować rzeczy jak owale lub
koła, naprawdę.
A potem niech obejmują gwindow.h tak, że mamy dla okna graficznego
wszystko.
>> Niech zadeklarować Głównym w zwykły sposób.
I niech teraz zadeklarować i instancji lub stworzyć to okno, GWindow -
a my nazywamy zmienną okno -
dostaje newGWindow.
I będziemy robić to dowolnie 320 pikseli na 240 pikseli.
>> Niech obok instancji okręgu.
Ale do instancji ten krąg, musimy zrobić trochę więcej pracy.
W szczególności, niech wypełnić tego okręgu tak, że cały jest to,
czarne, a nie tylko jego zarys.
GOval -
nazwijmy go krąg -
dostaje newGOval.
Umieścimy ten owal w 0, 110, a my dokonać szeroko owalne 20 pikseli przez
20 pikseli wysokości - innymi słowy, Średnica 20 lub promień 10.
>> Załóżmy teraz ustawić kolor tego okręgu być cytat cytatu, "czarny". Miejmy
teraz ustawić ją wypełnić podając prawdziwe.
A teraz na koniec dodajmy, że okrąg Okno w następujący sposób, przy czym
Ten ostatni dodaje się do pierwszego.
>> Załóżmy teraz zadeklarować dwuosobowym.
Nazwijmy go prędkość.
I nieco arbitralnie, powiedzmy, Szybkość tego okręgu będzie
2.0, innymi słowy, 2 pikseli dla każdej jednostce czasu.
A teraz celowo wywołać nieskończoną pętlę.
>> Więc jak zrobić ten krąg odbijają się?
No załóżmy, że w tej pętli dla każdej jednostki czasu, jesteśmy
zamierza przenieść okręgu tylko trochę bitów w oparciu o prędkość 2 pikseli
w przeliczeniu na jednostkę czasu.
Ale stale, będziemy musieli sprawdzić, czy koło dotyka
prawa krawędź ekranu lub w lewo krawędź ekranu, bo jeśli tak, to
trzeba go odbić, że tak powiem.
>> Jak wdrożyć Pojęcie odbijając?
Cóż, jeśli jedziemy na 2 piksele do porządku w jednostce czasu, odbijają się
prawa krawędź, możemy po prostu odwrócić że być negatywne 2 pikseli na jednostkę
w czasie, niwecząc tym samym prędkość.
Tak więc w rzeczywistości, odbijanie stosunkowo proste.
>> Niech najpierw przesunąć kółko przez to wiele pikseli wzdłuż osi x, by ta
wiele pikseli wzdłuż osi y.
Innymi słowy, nie ma to poruszać się wzdłuż osi Y w ogóle.
Chcemy tylko to się odbijać i dalej w lewo i prawo.
>> I niech teraz sprawdzić, czy w tej pętli współrzędna x okręgu Plus
Szerokość koła jest większy niż lub równa
szerokość okna -
innymi słowy, jeśli w miejsce okręgu oraz szerokość okręgu
Sam jest teraz poza krawędź okna, my mieliśmy
lepiej odwrócić naszą prędkość -
prędkość staje prędkości ujemnej, a tym samym Rzut pozytywny
ujemny lub negatywnej na pozytywną.
Ale co, jeśli porusza się od okręgu od prawej do lewej, a zatem uderza
lewa krawędź?
Innymi słowy, współrzędna x okręgu jest mniejszy niż lub równy
0, idziemy do przodu i ponownie odwrócić naszą prędkość.
>> Więc dlaczego nie dodałem w szerokość kręgu tej
czas, jak już przedtem?
Cóż, należy pamiętać, że współrzędne przedmiotu są zdefiniowane
jego górnym lewym rogu, nie przez jego środek.
I tak, gdy koło jest w ruchu od od lewej do prawej, musimy sprawdzić
czy prawa krawędź przeszedł koło
prawej krawędzi okna.
Tak, aby dowiedzieć się, co to jest, mamy aby współrzędna x okręgu
oraz szerokość koła przenieść się od górnej lewej strony
róg, skutecznie, do Najwięcej prawym rogu.
Gdy koło porusza się od prawej do lewo, w międzyczasie, że nie trzeba
męczyć się z takiego dodatku, ponieważ lewy górny róg okręgu jest
już wartość będziemy uzyskać od get x.
>> Załóżmy teraz przenieść piłkę.
Załóżmy teraz zapisać, skompilować i uruchomić ten Program, aby odbić,. / bounce.
I tam mamy program.
>> Ale krąg porusza się tak cholernie szybko, jest to prawie niemożliwe, aby zobaczyć, co jest
faktycznie dzieje.
Więc całkiem przymusowo przez program klikając przycisk X w prawym górnym ręki
róg tutaj.
Załóżmy teraz wrócić do kodu źródłowego i spowolnić trochę.
>> Innymi słowy, w ciągu tego nieskończona pętli, a nie tylko i ruch i
przenieść i ponownie, ogłoszenie nauseum Miejmy marudzić do zaledwie kilku milisekund
Przed przystąpieniem do ponownie ruszyć.
W szczególności, idziemy na dno nieskończonej pętli tutaj i po prostu
wstrzymać do, powiedzmy, 10 milisekund na każdej iteracji.
Załóżmy teraz przekompilować i uruchomić ponownie odbić.
A teraz widzimy dużo bardziej rozsądne wdrożenie, w którym możemy zobaczyć
krąg odbijając na prawdziwie lewej i prawej krawędzi.