1 00:00:00,000 --> 00:00:00,260 2 00:00:00,260 --> 00:00:03,010 >> David MALAN: magsulat ng isang programa Hayaan na kinasasangkutan ng isang window at ng lupon sa 3 00:00:03,010 --> 00:00:05,820 ang bilog nagba-bounce pabalik-balik off ang kaliwa at kanang 4 00:00:05,820 --> 00:00:07,120 gilid ng na window. 5 00:00:07,120 --> 00:00:09,960 Upang gawin ito, gamitin ang Stanford ipaalam Portable Library, at unang sabihin 6 00:00:09,960 --> 00:00:14,830 isama gevents.h kaya na kaya namin makinig para sa mga paggalaw ng mouse. 7 00:00:14,830 --> 00:00:20,970 Sabihin pagkatapos ay isama gobjects.h nang sa gayon ay maaari naming magpahayag ng mga bagay tulad ng ovals o 8 00:00:20,970 --> 00:00:22,110 lupon, talaga. 9 00:00:22,110 --> 00:00:26,090 At isama ni gwindow.h pagkatapos ay ipaalam sa gayon ay mayroon kaming mga graphical na window para sa 10 00:00:26,090 --> 00:00:27,020 ang lahat. 11 00:00:27,020 --> 00:00:30,390 >> Ni idedeklara pangunahing sa karaniwang paraan Hayaan. 12 00:00:30,390 --> 00:00:35,095 At ngayon magpahayag at magbigay ng halimbawa ipaalam o lumikha na window, GWindow - 13 00:00:35,095 --> 00:00:37,090 at kami tumawag variable window ng - 14 00:00:37,090 --> 00:00:39,790 nakakakuha newGWindow. 15 00:00:39,790 --> 00:00:44,450 At nagkataon kaming gawin itong 320 pixels by 240 pixels. 16 00:00:44,450 --> 00:00:46,190 >> Ng susunod magbigay ng halimbawa isang lupon Hayaan. 17 00:00:46,190 --> 00:00:48,740 Ngunit upang magbigay ng halimbawa lupon na ito, kailangan namin na gawin ang isang bit pang trabaho. 18 00:00:48,740 --> 00:00:51,340 Sa partikular, punan sa lupong ito ipaalam upang ang buong bagay ay 19 00:00:51,340 --> 00:00:53,910 itim at hindi lamang ang Binabalangkas hinggil doon. 20 00:00:53,910 --> 00:00:54,850 GOval - 21 00:00:54,850 --> 00:00:56,450 ipapakita namin tumawag ito lupon - 22 00:00:56,450 --> 00:00:58,310 nakakakuha newGOval. 23 00:00:58,310 --> 00:01:04,810 Susubukan naming ilagay ito hugis-itlog sa 0, 110, at kami ay gawin ang mga hugis-itlog 20 na lapad sa pamamagitan ng 24 00:01:04,810 --> 00:01:09,070 20 pixels mataas - sa madaling salita, isang diameter ng 20 o ng isang radius na 10. 25 00:01:09,070 --> 00:01:14,120 >> Ni ngayong itakda ang kulay ng bilog na Hayaan upang maging quote, magpanipi, "itim." Sabihin 26 00:01:14,120 --> 00:01:19,030 set ngayon ito na mapunan sa pamamagitan ng pagtukoy totoo. 27 00:01:19,030 --> 00:01:24,100 At ngayon, sa wakas, sabihin magdagdag ng mga lupon upang ang window tulad ng sumusunod, kung saan ang 28 00:01:24,100 --> 00:01:26,390 huli ay idinagdag sa dating. 29 00:01:26,390 --> 00:01:27,910 >> Ngayon ipinapahayag ng isang double Hayaan. 30 00:01:27,910 --> 00:01:29,200 Susubukan naming tumawag ito bilis. 31 00:01:29,200 --> 00:01:32,380 At medyo nagkataon, sabihin nating ang bilis ng lupong ito ay magiging 32 00:01:32,380 --> 00:01:36,290 2.0, sa ibang salita, 2 mga pixel para sa bawat yunit ng oras. 33 00:01:36,290 --> 00:01:39,380 At ngayon sabihin sadyang magbuod isang walang-katapusang loop. 34 00:01:39,380 --> 00:01:42,060 >> Kaya kung paano gumawa ng lupong ito bounce pabalik-balik? 35 00:01:42,060 --> 00:01:45,190 Ipagpalagay nating sa loob ng loop Well hayaan na para sa bawat yunit ng oras, kami ay 36 00:01:45,190 --> 00:01:48,890 pagpunta sa ilipat ang bilog ng kaunti lamang bit batay sa bilis ng 2 pixels 37 00:01:48,890 --> 00:01:50,070 bawat yunit ng oras. 38 00:01:50,070 --> 00:01:52,900 Subalit patuloy na, kami ay pagpunta sa may upang suriin kung ang bilog ng pagpindot sa 39 00:01:52,900 --> 00:01:56,480 kanang gilid ng screen o sa kaliwa gilid ng screen, dahil kung gayon, kami 40 00:01:56,480 --> 00:01:58,530 Kailangan mo ito upang bounce, kaya na magsalita. 41 00:01:58,530 --> 00:02:00,380 >> Paano ipatupad ang kuru-kuro ng nagba-bounce? 42 00:02:00,380 --> 00:02:04,400 Well kung kami ay pagpunta sa 2 pixel sa karapatan ng bawat yunit ng oras, sa mga bounce off 43 00:02:04,400 --> 00:02:08,259 sa kanan gilid, maaari lamang namin baligtarin na maging negatibong 2 pixels sa bawat unit 44 00:02:08,259 --> 00:02:10,400 ng oras, at sa gayon negating ang bilis. 45 00:02:10,400 --> 00:02:13,160 Kaya sa katunayan, bounce ay relatibong prangka. 46 00:02:13,160 --> 00:02:19,260 >> Ng unang ilipat ang bilog sa pamamagitan ng ito maraming Hayaan pixel sa kahabaan ng x-axis, sa pamamagitan na ito 47 00:02:19,260 --> 00:02:21,040 maraming pixels sa kahabaan ng y-axis. 48 00:02:21,040 --> 00:02:23,600 Sa ibang salita, hindi namin nais ito sa patuloy sa paglakad sa y-axis sa lahat. 49 00:02:23,600 --> 00:02:25,950 Nais lamang namin ito upang bounce pabalik at balik sa kaliwa at kanan. 50 00:02:25,950 --> 00:02:31,910 >> At ni ngayong tingnan sa loob ng loop ipaalam kung ang x-coordinate ng bilog plus 51 00:02:31,910 --> 00:02:36,515 ang lapad ng bilog ay mas malaki kaysa sa o katumbas ng 52 00:02:36,515 --> 00:02:38,520 lapad ng window - 53 00:02:38,520 --> 00:02:42,180 sa ibang salita, kung ang lokasyon ng lupon ni plus ang lapad ng bilog 54 00:02:42,180 --> 00:02:44,840 mismo ay ngayon lagpas sa gilid ng window, nais naming 55 00:02:44,840 --> 00:02:46,090 mas mahusay na i-reverse ang aming bilis - 56 00:02:46,090 --> 00:02:49,080 57 00:02:49,080 --> 00:02:53,680 kabilisan ay nakakakuha ng mga negatibong bilis, at sa gayon flipping ng isang positibong sa isang 58 00:02:53,680 --> 00:02:56,090 negatibong o isang negatibong sa isang positibong. 59 00:02:56,090 --> 00:02:59,740 Ngunit paano kung ang bilog sa paglipat mula sa karapatan sa kaliwa at ito samakatuwid ay umabot sa 60 00:02:59,740 --> 00:03:00,670 sa kaliwang sulok? 61 00:03:00,670 --> 00:03:06,490 Sa ibang salita, kung ang x-coordinate ng ang bilog ay ngayon mas mababa sa o katumbas ng 62 00:03:06,490 --> 00:03:12,530 sa 0, sabihin sige at muli Baliktarin ang aming bilis. 63 00:03:12,530 --> 00:03:14,980 >> Kaya bakit hindi ako naidagdag sa lapad ng mga lupon na ito 64 00:03:14,980 --> 00:03:16,410 oras, tulad ng ginawa ko bago? 65 00:03:16,410 --> 00:03:19,050 Well, tandaan na ang mga coordinate ng isang object ay tinukoy 66 00:03:19,050 --> 00:03:22,200 sa pamamagitan nito kaliwang tuktok na sulok, hindi sa pamamagitan ng gitna nito. 67 00:03:22,200 --> 00:03:25,810 At kaya kapag ang bilog sa paglipat mula sa kaliwa hanggang kanan, kailangan naming suriin 68 00:03:25,810 --> 00:03:28,910 kung ang kanan gilid ng lupon pumasa ito sa 69 00:03:28,910 --> 00:03:30,200 kanang gilid ng window. 70 00:03:30,200 --> 00:03:34,100 Kaya upang malaman kung anong ibig sabihin, mayroon kaming upang makuha ang x-coordinate ng bilog 71 00:03:34,100 --> 00:03:38,080 plus ang lapad ng mga lupon upang ilipat ang ating mga sarili mula sa tuktok na kaliwang 72 00:03:38,080 --> 00:03:40,650 sulok, epektibo, upang ang kanang tuktok na sulok. 73 00:03:40,650 --> 00:03:43,700 Kapag ang bilog sa paglipat mula sa karapatan na kaliwa, samantala, ay hindi kami kailangan upang 74 00:03:43,700 --> 00:03:47,550 mag-abala na may tulad na karagdagan, dahil ang kaliwang itaas na sulok ng bilog ay 75 00:03:47,550 --> 00:03:50,700 na ang halaga na aming makakuha mula sa get x. 76 00:03:50,700 --> 00:03:54,140 >> Ilipat ni ngayon ang bola Hayaan. 77 00:03:54,140 --> 00:04:00,900 Sabihin ngayong i-save, sumulat ng libro, at patakbuhin ito programa, gumawa ng bounce,. / bounce. 78 00:04:00,900 --> 00:04:02,230 At doon mayroon kaming programa. 79 00:04:02,230 --> 00:04:05,760 >> Ngunit ang bilog sa gumagalaw kaya nagsulsi mabilis, ito ay halos imposible upang makita kung ano ang 80 00:04:05,760 --> 00:04:07,060 talaga nangyayari. 81 00:04:07,060 --> 00:04:10,620 Kaya sabihin medyo ang programa papuwersa sa pamamagitan ng ng pag-click ang X sa tuktok na kanang kamay 82 00:04:10,620 --> 00:04:11,720 sulok dito. 83 00:04:11,720 --> 00:04:15,300 Sabihin pumunta ngayon pabalik sa source code at mabagal down na Medyo bagay. 84 00:04:15,300 --> 00:04:19,240 >> Sa ibang salita, sa loob ng walang katapusan loop, sa halip na lamang at ilipat at 85 00:04:19,240 --> 00:04:22,850 ilipat at muli, ad nauseum, ni nagtatagal ipaalam para lamang ng ilang millisecond 86 00:04:22,850 --> 00:04:24,910 bago magpatuloy upang ilipat muli. 87 00:04:24,910 --> 00:04:28,480 Sa partikular, sabihin pumunta sa ibaba ng walang hangganang loop dito at simpleng 88 00:04:28,480 --> 00:04:32,820 i-pause para sa, sabihin nating, 10 millisecond sa bawat pag-ulit. 89 00:04:32,820 --> 00:04:36,690 Ni ngayong mag-recompile at muling pag-run bounce Hayaan. 90 00:04:36,690 --> 00:04:40,190 At ngayon nakita namin ang isang mas higit pang mga makatwirang pagpapatupad, kung saan makikita ang mga 91 00:04:40,190 --> 00:04:43,310 bilog tunay nagba-bounce sa kaliwa at kanan gilid. 92 00:04:43,310 --> 00:04:45,395