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.