>> David MALAN: magsulat ng isang programa Hayaan na kinasasangkutan ng isang window at ng lupon sa
ang bilog nagba-bounce pabalik-balik off ang kaliwa at kanang
gilid ng na window.
Upang gawin ito, gamitin ang Stanford ipaalam Portable Library, at unang sabihin
isama gevents.h kaya na kaya namin makinig para sa mga paggalaw ng mouse.
Sabihin pagkatapos ay isama gobjects.h nang sa gayon ay maaari naming magpahayag ng mga bagay tulad ng ovals o
lupon, talaga.
At isama ni gwindow.h pagkatapos ay ipaalam sa gayon ay mayroon kaming mga graphical na window para sa
ang lahat.
>> Ni idedeklara pangunahing sa karaniwang paraan Hayaan.
At ngayon magpahayag at magbigay ng halimbawa ipaalam o lumikha na window, GWindow -
at kami tumawag variable window ng -
nakakakuha newGWindow.
At nagkataon kaming gawin itong 320 pixels by 240 pixels.
>> Ng susunod magbigay ng halimbawa isang lupon Hayaan.
Ngunit upang magbigay ng halimbawa lupon na ito, kailangan namin na gawin ang isang bit pang trabaho.
Sa partikular, punan sa lupong ito ipaalam upang ang buong bagay ay
itim at hindi lamang ang Binabalangkas hinggil doon.
GOval -
ipapakita namin tumawag ito lupon -
nakakakuha newGOval.
Susubukan naming ilagay ito hugis-itlog sa 0, 110, at kami ay gawin ang mga hugis-itlog 20 na lapad sa pamamagitan ng
20 pixels mataas - sa madaling salita, isang diameter ng 20 o ng isang radius na 10.
>> Ni ngayong itakda ang kulay ng bilog na Hayaan upang maging quote, magpanipi, "itim." Sabihin
set ngayon ito na mapunan sa pamamagitan ng pagtukoy totoo.
At ngayon, sa wakas, sabihin magdagdag ng mga lupon upang ang window tulad ng sumusunod, kung saan ang
huli ay idinagdag sa dating.
>> Ngayon ipinapahayag ng isang double Hayaan.
Susubukan naming tumawag ito bilis.
At medyo nagkataon, sabihin nating ang bilis ng lupong ito ay magiging
2.0, sa ibang salita, 2 mga pixel para sa bawat yunit ng oras.
At ngayon sabihin sadyang magbuod isang walang-katapusang loop.
>> Kaya kung paano gumawa ng lupong ito bounce pabalik-balik?
Ipagpalagay nating sa loob ng loop Well hayaan na para sa bawat yunit ng oras, kami ay
pagpunta sa ilipat ang bilog ng kaunti lamang bit batay sa bilis ng 2 pixels
bawat yunit ng oras.
Subalit patuloy na, kami ay pagpunta sa may upang suriin kung ang bilog ng pagpindot sa
kanang gilid ng screen o sa kaliwa gilid ng screen, dahil kung gayon, kami
Kailangan mo ito upang bounce, kaya na magsalita.
>> Paano ipatupad ang kuru-kuro ng nagba-bounce?
Well kung kami ay pagpunta sa 2 pixel sa karapatan ng bawat yunit ng oras, sa mga bounce off
sa kanan gilid, maaari lamang namin baligtarin na maging negatibong 2 pixels sa bawat unit
ng oras, at sa gayon negating ang bilis.
Kaya sa katunayan, bounce ay relatibong prangka.
>> Ng unang ilipat ang bilog sa pamamagitan ng ito maraming Hayaan pixel sa kahabaan ng x-axis, sa pamamagitan na ito
maraming pixels sa kahabaan ng y-axis.
Sa ibang salita, hindi namin nais ito sa patuloy sa paglakad sa y-axis sa lahat.
Nais lamang namin ito upang bounce pabalik at balik sa kaliwa at kanan.
>> At ni ngayong tingnan sa loob ng loop ipaalam kung ang x-coordinate ng bilog plus
ang lapad ng bilog ay mas malaki kaysa sa o katumbas ng
lapad ng window -
sa ibang salita, kung ang lokasyon ng lupon ni plus ang lapad ng bilog
mismo ay ngayon lagpas sa gilid ng window, nais naming
mas mahusay na i-reverse ang aming bilis -
kabilisan ay nakakakuha ng mga negatibong bilis, at sa gayon flipping ng isang positibong sa isang
negatibong o isang negatibong sa isang positibong.
Ngunit paano kung ang bilog sa paglipat mula sa karapatan sa kaliwa at ito samakatuwid ay umabot sa
sa kaliwang sulok?
Sa ibang salita, kung ang x-coordinate ng ang bilog ay ngayon mas mababa sa o katumbas ng
sa 0, sabihin sige at muli Baliktarin ang aming bilis.
>> Kaya bakit hindi ako naidagdag sa lapad ng mga lupon na ito
oras, tulad ng ginawa ko bago?
Well, tandaan na ang mga coordinate ng isang object ay tinukoy
sa pamamagitan nito kaliwang tuktok na sulok, hindi sa pamamagitan ng gitna nito.
At kaya kapag ang bilog sa paglipat mula sa kaliwa hanggang kanan, kailangan naming suriin
kung ang kanan gilid ng lupon pumasa ito sa
kanang gilid ng window.
Kaya upang malaman kung anong ibig sabihin, mayroon kaming upang makuha ang x-coordinate ng bilog
plus ang lapad ng mga lupon upang ilipat ang ating mga sarili mula sa tuktok na kaliwang
sulok, epektibo, upang ang kanang tuktok na sulok.
Kapag ang bilog sa paglipat mula sa karapatan na kaliwa, samantala, ay hindi kami kailangan upang
mag-abala na may tulad na karagdagan, dahil ang kaliwang itaas na sulok ng bilog ay
na ang halaga na aming makakuha mula sa get x.
>> Ilipat ni ngayon ang bola Hayaan.
Sabihin ngayong i-save, sumulat ng libro, at patakbuhin ito programa, gumawa ng bounce,. / bounce.
At doon mayroon kaming programa.
>> Ngunit ang bilog sa gumagalaw kaya nagsulsi mabilis, ito ay halos imposible upang makita kung ano ang
talaga nangyayari.
Kaya sabihin medyo ang programa papuwersa sa pamamagitan ng ng pag-click ang X sa tuktok na kanang kamay
sulok dito.
Sabihin pumunta ngayon pabalik sa source code at mabagal down na Medyo bagay.
>> Sa ibang salita, sa loob ng walang katapusan loop, sa halip na lamang at ilipat at
ilipat at muli, ad nauseum, ni nagtatagal ipaalam para lamang ng ilang millisecond
bago magpatuloy upang ilipat muli.
Sa partikular, sabihin pumunta sa ibaba ng walang hangganang loop dito at simpleng
i-pause para sa, sabihin nating, 10 millisecond sa bawat pag-ulit.
Ni ngayong mag-recompile at muling pag-run bounce Hayaan.
At ngayon nakita namin ang isang mas higit pang mga makatwirang pagpapatupad, kung saan makikita ang mga
bilog tunay nagba-bounce sa kaliwa at kanan gilid.