1 00:00:00,000 --> 00:00:05,069 2 00:00:05,069 --> 00:00:06,110 THOMAS LIVELY: Tout dwat. 3 00:00:06,110 --> 00:00:07,450 Hi, tout moun. 4 00:00:07,450 --> 00:00:08,690 Mwen se Thomas Lively. 5 00:00:08,690 --> 00:00:15,160 Seminè sa a ki pral yo dwe ekri jwèt 2D nan C lè l sèvi avèk SDL. 6 00:00:15,160 --> 00:00:17,970 Se konsa, mwen konnen ou ap tout mande, yeah, Mwen vrèman 7 00:00:17,970 --> 00:00:22,050 vle jwe jwèt, epi fè jwèt, men ki sa se biznis SDL sa a? 8 00:00:22,050 --> 00:00:25,320 Se konsa, SDL se yon bibliyotèk C. 9 00:00:25,320 --> 00:00:28,270 Li kanpe pou Senp nan DirectMedia Kouch. 10 00:00:28,270 --> 00:00:31,340 Lè li nan yon platfòm kwa, jwèt devlopman bibliyotèk. 11 00:00:31,340 --> 00:00:37,160 Li travay sou Windows, Mac, Linux, menm yo ak android. 12 00:00:37,160 --> 00:00:40,380 Li manch bagay sa yo tankou aksè a sistèm yo odyo 13 00:00:40,380 --> 00:00:44,900 pou òdinatè a, klavye a, ak sourit, jwaystik, si yo ap tache. 14 00:00:44,900 --> 00:00:48,300 Sou mobil, li ka menm fè nan manyen opinyon ak nan tout sa. 15 00:00:48,300 --> 00:00:53,030 Ak nan kou, li kenbe grafik, desen bagay yo ekran an. 16 00:00:53,030 --> 00:00:56,470 >> Se konsa, li la trè lajman itilize, menm si ou ka pa janm tande pale de li anvan an. 17 00:00:56,470 --> 00:01:00,860 Li nan bati nan, pou egzanp, Sous motè Valv la, 18 00:01:00,860 --> 00:01:04,970 ki pouvwa jwèt tankou Portal ak Ekip fòtrès 2. 19 00:01:04,970 --> 00:01:08,680 Li la tou nan yon nimewo gwo anpil nan jwèt indie ki vini soti, 20 00:01:08,680 --> 00:01:13,545 se konsa mwen eksite yo wè sa ki ou tout pral fè ak li. 21 00:01:13,545 --> 00:01:20,000 >> Objektif seminè yo fè ou jwenn mete soti nan gen devlope ak SDL. 22 00:01:20,000 --> 00:01:22,700 Nou pral aprann kijan yo kreye yon fenèt jwèt. 23 00:01:22,700 --> 00:01:26,130 Nou ap ale nan kreye sprites, ki se imaj yo nan jwèt ou 24 00:01:26,130 --> 00:01:27,744 ki ka deplase alantou. 25 00:01:27,744 --> 00:01:29,910 Nou pral aprann kijan pou ale ak pou enkouraje sprites yo, 26 00:01:29,910 --> 00:01:32,910 se konsa deplase yo alantou li, fè yo chanje sou tan. 27 00:01:32,910 --> 00:01:35,580 Epi nou ap ale nan aprann kijan pran klavye ak sourit 28 00:01:35,580 --> 00:01:38,240 enfòmasyon nan men gwoup òdinatè a. 29 00:01:38,240 --> 00:01:41,550 Ki sa nou pa pral pale sou jodi a se grafik 3D, 30 00:01:41,550 --> 00:01:45,520 paske ki nan yon bagay ki konplike anpil sijè ke nou pa gen tan pou. 31 00:01:45,520 --> 00:01:49,010 Nou pa pral aprann ki jan yo jwe odyo sou jwèt nou an. 32 00:01:49,010 --> 00:01:53,300 E nou pa pral bati pou anyen men Linux. 33 00:01:53,300 --> 00:01:58,330 >> Koulye a, opozisyon yo gen sa, èspere ke, nan fen seminè a, 34 00:01:58,330 --> 00:02:01,660 ou pral konfòtab ak dokiman an SDL, 35 00:02:01,660 --> 00:02:05,370 se konsa ou pral kapab ale figi konnen fason yo jwe odyo pou tèt ou. 36 00:02:05,370 --> 00:02:12,150 Epitou bati pou Mac oswa PC yo ta dwe travay egzakteman menm jan bati pou Linux, 37 00:02:12,150 --> 00:02:14,700 men konfigirasyon an k ap pase yo gen yon ti kras diferan. 38 00:02:14,700 --> 00:02:17,700 Se konsa, ou ta dwe kapab figi konnen kouman ou kapab fè bagay sa yo 39 00:02:17,700 --> 00:02:20,900 nan fen seminè a jodi a. 40 00:02:20,900 --> 00:02:26,980 >> Se konsa, pou mete a moute, nou ap ale yo sèvi ak yon machin vityèl. 41 00:02:26,980 --> 00:02:31,010 Nou ta sèvi ak IDE la CS50, paske nou ap jis pral yo dwe ekri nan C. 42 00:02:31,010 --> 00:02:35,120 Men, depi IDE a se pa yon navigatè, nou pa ka kreye nouvo fenèt yo oswa ou ekspozisyon 43 00:02:35,120 --> 00:02:36,410 grafik nan li. 44 00:02:36,410 --> 00:02:38,450 Se konsa, nou bezwen yon machin vityèl. 45 00:02:38,450 --> 00:02:47,790 Se konsa, ou kapab swiv enstriksyon yo isit la nan manual.CS50.net/appliance/15 46 00:02:47,790 --> 00:02:53,290 yo enstale aparèy la CS50 ofisyèl, ki se senpleman yon Linux vityèl 47 00:02:53,290 --> 00:02:55,110 machin. 48 00:02:55,110 --> 00:02:58,090 >> Lè sa a, yon fwa ou gen Tout moun nan mete leve- li 49 00:02:58,090 --> 00:03:02,090 ta ka pran yon ti tan, paske yon gwo anpil download-- w ap ale 50 00:03:02,090 --> 00:03:07,060 kouri nan VM sudo nimewo apatman-aktyalizasyon a jwenn. 51 00:03:07,060 --> 00:03:09,410 Epi sa a, reyèlman ale mete ajou tout lojisyèl an 52 00:03:09,410 --> 00:03:12,670 pakè sou machin vityèl ou. 53 00:03:12,670 --> 00:03:20,130 >> Apre sa, w ap ale nan kouri sudo nimewo apatman-jwenn enstale, libsdl2-2.0-0, 54 00:03:20,130 --> 00:03:27,960 libsdl2-db, libsdl2-dev, ak Anplis de sa libsdl2-imaj-2.0-0, 55 00:03:27,960 --> 00:03:32,560 libsdl2-imaj-db, ak libsdl2-imaj-DEV. 56 00:03:32,560 --> 00:03:33,640 Se konsa, sa ki fè? 57 00:03:33,640 --> 00:03:38,440 Sa senpleman enstale dbug nan enfòmasyon, dokiman, Tèt, 58 00:03:38,440 --> 00:03:41,260 ak binèr pou de bibliyotèk. 59 00:03:41,260 --> 00:03:45,090 Regilye fin vye granmoun, SDL 2.0, ak yon lòt bibliyotèk 60 00:03:45,090 --> 00:03:50,110 rele SDL Imaj, ki nou ap ale nan lè l sèvi avèk 61 00:03:50,110 --> 00:03:54,560 chaj dosye imaj nan jwèt nou yo. 62 00:03:54,560 --> 00:03:57,860 >> Se konsa, yon fwa ou gen ki tou ki, jis lè li mande, 63 00:03:57,860 --> 00:04:01,100 ou jis tape repons lan se wi, frape Antre yo enstale sa yo pakè, 64 00:04:01,100 --> 00:04:04,430 ak Lè sa a ou ta dwe bon yo ale. 65 00:04:04,430 --> 00:04:14,800 Se konsa, yo ka resevwa kòd la distribisyon, ou can-- oh mwen renmen anpil, sa a pa mete ajou. 66 00:04:14,800 --> 00:04:18,480 Sòf si ou gen yon account-- GitHub si ou gen yon kont GitHub, 67 00:04:18,480 --> 00:04:24,450 ou ka fè sa Git lòd script repo a 68 00:04:24,450 --> 00:04:30,490 ak ki pral download Git nan repo ak tout kòd la nan li, 69 00:04:30,490 --> 00:04:31,700 se konsa ke ou pral gen kòd la. 70 00:04:31,700 --> 00:04:36,470 >> Si ou pa gen yon GitHub kont, sa ou ta dwe fè se di ki 71 00:04:36,470 --> 00:04:48,867 wgithttps: //github.com/tlively/sdl seminar-- ak isit la li a different-- 72 00:04:48,867 --> 00:04:49,700 /archive/master.zip. 73 00:04:49,700 --> 00:04:55,610 74 00:04:55,610 --> 00:04:59,220 Se konsa, ankò, sa a, se menm bagay la tou egzak URL, eksepte li pral yo dwe 75 00:04:59,220 --> 00:05:09,010 tlively / SDL_seminar / master.zip ak w ap itilize wgit nan download sa. 76 00:05:09,010 --> 00:05:12,940 Lè sa a, ou kapab senpleman ouvriers ki achiv 77 00:05:12,940 --> 00:05:14,900 ak Lè sa a ou pral gen tout kòd la sous. 78 00:05:14,900 --> 00:05:17,580 Se konsa, regrèt sou sa. 79 00:05:17,580 --> 00:05:23,880 Lè sa a, kòd a ap tou ap anime nan paj entènèt seminè a CS50 nan nan yon koup 80 00:05:23,880 --> 00:05:25,230 jou. 81 00:05:25,230 --> 00:05:26,590 >> Tout dwa. 82 00:05:26,590 --> 00:05:29,932 Se konsa, ki jan nou jwenn te kòmanse ekri pwòp jwèt nou? 83 00:05:29,932 --> 00:05:31,890 Oke, premye bagay la nou ap ale nan vle fè 84 00:05:31,890 --> 00:05:34,740 se gade nan dokiman an SDL. 85 00:05:34,740 --> 00:05:37,020 Se konsa, isit la nan VM nan. 86 00:05:37,020 --> 00:05:38,720 Ak isit la nan paj wèb la. 87 00:05:38,720 --> 00:05:40,340 Mwen te navige yo viv libsdl.org. 88 00:05:40,340 --> 00:05:43,110 89 00:05:43,110 --> 00:05:48,140 Sa mwen ap pral fè isit la se ale sou ankadre a, anba kopi dokiman yo, 90 00:05:48,140 --> 00:05:51,040 epi klike sou wiki a. 91 00:05:51,040 --> 00:05:56,870 Sa a pral pote m 'nan wiki a ki gen pi fò nan dokiman an pou SDL. 92 00:05:56,870 --> 00:06:01,360 Plis pase sou ankadre a isit la, nou ap ale nan klike API pa kategori, 93 00:06:01,360 --> 00:06:04,300 paske se pral bay nou yon bèl vi nan kategori 94 00:06:04,300 --> 00:06:07,770 a API a tout antye pou SDL. 95 00:06:07,770 --> 00:06:12,390 >> Se konsa, pou egzanp, nou gen inisyalizasyon a debaz 96 00:06:12,390 --> 00:06:18,380 ak fèmen, tout sòt nan nan bagay administratif pou lè l sèvi avèk SDL, 97 00:06:18,380 --> 00:06:21,630 ak Lè sa a nou gen seksyon nan pou montre bagay sa yo ekran an. 98 00:06:21,630 --> 00:06:23,000 Sa a videyo. 99 00:06:23,000 --> 00:06:25,790 Evènman Antre, sa se ap resevwa enfòmasyon nan men gwoup klavye a, 100 00:06:25,790 --> 00:06:29,710 ap resevwa enfòmasyon nan men gwoup sourit la, ak manch la, si ou genyen li menm. 101 00:06:29,710 --> 00:06:32,901 Genyen fòs fidbak pou bagay sa yo tankou contrôleur jwèt, ki 102 00:06:32,901 --> 00:06:34,150 nou pa ap ale nan pale sou. 103 00:06:34,150 --> 00:06:35,630 Ak isit la nan odyo. 104 00:06:35,630 --> 00:06:38,940 Lè sa a, gen nan yon pakèt moun sou lòt bagay ki SDL kapab fè pou ou. 105 00:06:38,940 --> 00:06:43,830 >> Men, jodi a nou ap ale nan konsantre sou inisyalizasyon a isit la, 106 00:06:43,830 --> 00:06:48,332 montre imaj nan videyo a seksyon, ak manyen evènman opinyon. 107 00:06:48,332 --> 00:06:50,290 Se konsa, sa yo, se prensipal la seksyon nan dokiman 108 00:06:50,290 --> 00:06:53,050 ke ou ta dwe mangonmen sou. 109 00:06:53,050 --> 00:06:57,170 Jis pou plezi, si nou ale sou isit la, epi klike sou API pa non, 110 00:06:57,170 --> 00:07:04,350 nou ka wè yon lis ki gen chak sèl bagay nan bibliyotèk la SDL. 111 00:07:04,350 --> 00:07:11,330 Se konsa, tout fonksyon sa yo, rsansman, estrikti, yon kantite lajan fou nan bagay, 112 00:07:11,330 --> 00:07:12,820 alfabetik lòd. 113 00:07:12,820 --> 00:07:14,580 Epi klèman, jouk ou konnen ou ap fè, 114 00:07:14,580 --> 00:07:19,100 sa a pa a pwal twò itil, ki se poukisa nou fè API pa kategori. 115 00:07:19,100 --> 00:07:20,810 >> Se konsa nou jwenn te kòmanse. 116 00:07:20,810 --> 00:07:25,680 Nou swete ke ou te deja telechaje kòd la distribisyon. 117 00:07:25,680 --> 00:07:30,070 Se konsa, sa ou kapab fè se, dwa isit la nan aparèy la CS50, 118 00:07:30,070 --> 00:07:31,150 tou senpleman louvri yon tèminal. 119 00:07:31,150 --> 00:07:33,750 120 00:07:33,750 --> 00:07:34,440 Isit la nou ale. 121 00:07:34,440 --> 00:07:40,740 Se konsa, mwen te deja telechaje nan distribisyon Kòd lè l sèvi avèk .zip a 122 00:07:40,740 --> 00:07:41,690 metòd. 123 00:07:41,690 --> 00:07:43,140 Apre sa, mwen te dekonprese li. 124 00:07:43,140 --> 00:07:46,120 Se konsa, isit la li se nan mèt la seminè SDL. 125 00:07:46,120 --> 00:07:49,750 Se konsa, mwen pral ale nan ki anyè. 126 00:07:49,750 --> 00:07:55,310 Ak sa ki nou wè isit la se ke nou gen sèt C dosye. 127 00:07:55,310 --> 00:07:58,070 Lè sa a ki pral kòd la nou ap ale nan dwe gade nan jodi a. 128 00:07:58,070 --> 00:08:00,040 Nou gen yon makfil. 129 00:08:00,040 --> 00:08:06,950 Epi nou gen yon anyè resous, ki tou senpleman gen yon imaj 130 00:08:06,950 --> 00:08:09,070 ki ou pral wè byento ase. 131 00:08:09,070 --> 00:08:16,060 >> Se konsa nou louvri moute sa yo dosye lè l sèvi avèk editè a G-Edit. 132 00:08:16,060 --> 00:08:22,000 Se konsa, mwen vle louvri tout dosye yo ki kòmanse ak alo ak fini ak c. 133 00:08:22,000 --> 00:08:23,380 Isit la nou ale. 134 00:08:23,380 --> 00:08:28,180 Se konsa, sa a, se yon fenèt ti, se konsa nou ap ale nan eseye fè ki pi gran. 135 00:08:28,180 --> 00:08:28,900 Non, li al fè wout yo. 136 00:08:28,900 --> 00:08:32,836 137 00:08:32,836 --> 00:08:34,570 >> Tout dwa. 138 00:08:34,570 --> 00:08:37,959 Se konsa, isit la nan la trè premye dosye nou ap ale nan gade nan. 139 00:08:37,959 --> 00:08:39,000 Yo rele li hello1_sdl.c. 140 00:08:39,000 --> 00:08:41,890 141 00:08:41,890 --> 00:08:47,980 Ak tout sa a fè se inisyalize SDL a bibliyotèk pou nou ka kòmanse lè l sèvi avèk li. 142 00:08:47,980 --> 00:08:51,550 Kouman ou ta konnen k ap vini moute ak sa a Kòd tèt ou? 143 00:08:51,550 --> 00:08:53,850 Oke, si nou gade sou a dokiman an 144 00:08:53,850 --> 00:08:58,040 epi nou ale nan inisyalizasyon a ak fèmen seksyon, 145 00:08:58,040 --> 00:09:02,230 li nan pral di nou tout sou jan yo ka inisyalize SDL. 146 00:09:02,230 --> 00:09:06,630 Se konsa, definitivman li sa a kèk lòt tan. 147 00:09:06,630 --> 00:09:09,230 Li nan ale nan di ou tout sou sa k ap pase sou isit la. 148 00:09:09,230 --> 00:09:14,360 Men, neu a prensipal la matyè a se ke nou bezwen rele sa a fonksyon SDL Nan Li 149 00:09:14,360 --> 00:09:18,910 epi yo pase li sa kalite bagay nou vle bibliyotèk la inisyalize. 150 00:09:18,910 --> 00:09:23,620 Se konsa, nan ka nou an, nou ap jis pral inisyalize videyo a pou kounye a, 151 00:09:23,620 --> 00:09:26,690 pou nou ka kòmanse montre imaj. 152 00:09:26,690 --> 00:09:32,370 >> Plis pase isit la, ou ka wè si nou klike sou yon SDL Nan li, nou 153 00:09:32,370 --> 00:09:36,160 ka jwenn menm plis enfòmasyon, ki gen ladan valè a retou. 154 00:09:36,160 --> 00:09:39,050 Se konsa, nou wè isit la ke li returnes zewo sou siksè. 155 00:09:39,050 --> 00:09:43,320 Se konsa, nan Kòd nou an, nou ap ale nan wè si li pa retounen zewo, 156 00:09:43,320 --> 00:09:47,020 epi si li pa retounen zewo, se konsa li pa t 'siksè, 157 00:09:47,020 --> 00:09:50,650 Lè sa a, nou ap ale nan tou senpleman ekri an lèt detache yon erè lè l sèvi avèk fonksyon sa a ak lòt, 158 00:09:50,650 --> 00:09:56,260 SDL erè jwenn, ki retounen yon kòd dekri erè a ki te fèt. 159 00:09:56,260 --> 00:09:58,510 Nou pral enprime ki erè ak lè sa a nou ap jis 160 00:09:58,510 --> 00:10:02,270 ale nan sòti pwogram nan ak yon kòd erè. 161 00:10:02,270 --> 00:10:06,470 >> Lè sa a, yon lòt bagay ke nou bezwen fè se, anvan sòti pwogram nan, 162 00:10:06,470 --> 00:10:10,830 si nou avèk siksè inisyalizèd SDL, nou jis bezwen rele li SDL kite fimen. 163 00:10:10,830 --> 00:10:15,750 Epi sa k ap pase yo okipe netwaye tout nan resous entèn SDL a pou nou. 164 00:10:15,750 --> 00:10:21,240 Se konsa, dokiman an there-- ankò, isit la nou yo nan inisyalizasyon a 165 00:10:21,240 --> 00:10:23,640 ak fèmen seksyon nan dokiman an. 166 00:10:23,640 --> 00:10:26,680 Ou ka jis klike sou la fonksyon isit la, SDL kite fimen, 167 00:10:26,680 --> 00:10:28,700 epi ou ka li tout sou sa kòm byen. 168 00:10:28,700 --> 00:10:31,400 Ak yon anpil nan sa yo fonksyon paj dokiman 169 00:10:31,400 --> 00:10:35,630 gen Kòd egzanp, se konsa sa a se trè bon resous. 170 00:10:35,630 --> 00:10:39,610 Definitivman pase kèk tan lekti pati nan wiki sa a 171 00:10:39,610 --> 00:10:42,520 si w ap pral fè sa a pou yon pwojè. 172 00:10:42,520 --> 00:10:43,760 >> Tout dwa. 173 00:10:43,760 --> 00:10:46,590 Se konsa, sa a, se pwogram antye nou an. 174 00:10:46,590 --> 00:10:53,935 Ki sa nou ka fè kounye a is-- mwen se ale nan louvri makfil a isit la, 175 00:10:53,935 --> 00:10:56,150 se konsa mwen pral pran yon gade nan ki jan ki travay. 176 00:10:56,150 --> 00:10:59,500 Lè li nan yon makfil trè senp, menm jan ak sa ou te wè anvan. 177 00:10:59,500 --> 00:11:04,010 Youn nan diferans ki genyen prensipal se ke, isit la, sa a 178 00:11:04,010 --> 00:11:07,870 ki pral insert rezilta a nan kouri kòmandman sa a, ki ou te deja 179 00:11:07,870 --> 00:11:10,850 enstale si ou te enstale SDL. 180 00:11:10,850 --> 00:11:13,230 Lè sa a se yon lòd ki k ap pase yo jenere 181 00:11:13,230 --> 00:11:16,710 kèk drapo anplis pou du a. 182 00:11:16,710 --> 00:11:22,050 >> Anplis de sa ak sa yo ki, nou ap bay li tout kòmandman abityèl yo, menm jan tou 183 00:11:22,050 --> 00:11:23,430 de kòmandman sa yo. 184 00:11:23,430 --> 00:11:30,270 Se konsa, manch yo -lsdl2-image ki lye ak nan bibliyotèk la imaj SDL. 185 00:11:30,270 --> 00:11:36,200 Apre sa,-LM a aktyèlman manch ki lye ak nan C bibliyotèk la estanda matematik. 186 00:11:36,200 --> 00:11:40,630 Se konsa, nou pa yo ale nan bezwen sa yo pou tout nan dosye nou an C, 187 00:11:40,630 --> 00:11:43,900 men nou jis mete yo nan lè sa a, nou kapab itilize makfil a menm pou tout bagay 188 00:11:43,900 --> 00:11:44,816 san yo pa modifikasyon. 189 00:11:44,816 --> 00:11:46,970 190 00:11:46,970 --> 00:11:50,080 >> Plis pase isit la nan sous, sa a se kote ou ta 191 00:11:50,080 --> 00:11:53,680 mete dosye yo ke ou te ale yo konpile pou pwojè ou. 192 00:11:53,680 --> 00:11:57,570 Men, depi chak youn nan C mwen depoze isit la gen yon fonksyon prensipal yo, 193 00:11:57,570 --> 00:12:00,000 li k ap pase yo jwenn konfonn si nou mete yo tout nan. 194 00:12:00,000 --> 00:12:06,930 Se konsa, mwen pral jis di, pou kounye a, hello1_sdl.c, 195 00:12:06,930 --> 00:12:11,150 ki se youn nan nou jis te gade. 196 00:12:11,150 --> 00:12:18,740 Se konsa, si m 'ale tounen sou isit la, mwen ka fè. 197 00:12:18,740 --> 00:12:22,160 Ak sa ki li te fè se li jis konpile ke premye dosye-a. 198 00:12:22,160 --> 00:12:28,780 Lè sa a, nou ka tape ./game, paske li a ègzèkutabl a li pwodwi. 199 00:12:28,780 --> 00:12:31,660 Apre sa, tout li te fè te ekri an lèt detache inisyalizasyon siksè. 200 00:12:31,660 --> 00:12:33,300 Se konsa, nou te fè yon bagay dwat. 201 00:12:33,300 --> 00:12:36,200 Men, sa te kalite raz, paske nou pa t 'wè yon fenèt, 202 00:12:36,200 --> 00:12:37,900 pa gen anyen te deplase alantou. 203 00:12:37,900 --> 00:12:41,030 >> Se konsa, gwo, nou te resevwa SDL inisyalizèd. 204 00:12:41,030 --> 00:12:43,520 Koulye a, se pou yo deplase sou li nan yon bagay yon ti kras plis enteresan. 205 00:12:43,520 --> 00:12:54,700 Se konsa, isit la nou gen hello2_window.c, ak sa a ki pral yo dwe yon ti kras plis 206 00:12:54,700 --> 00:13:00,010 pwogram C konplèks ki inisyalizasyon SDL jis tankou anvan, 207 00:13:00,010 --> 00:13:04,250 eksepte kounye a nou ap tou ale inisyalize SDL revèy. 208 00:13:04,250 --> 00:13:07,720 Lè sa a ki pral fè nou aksè revèy la entèn 209 00:13:07,720 --> 00:13:10,550 epi sèvi ak fonksyon ki gen rapò ak tan. 210 00:13:10,550 --> 00:13:11,920 >> Lè sa a, kite pou yo gade desann isit la. 211 00:13:11,920 --> 00:13:16,840 Ki sa nou fè se nou gen konsèy sa a nan yon struct fenèt SDL, ki 212 00:13:16,840 --> 00:13:21,160 yo pral kreye pa sa a rele nan fonksyon an, SDL kreye fenèt. 213 00:13:21,160 --> 00:13:25,380 Koulye a, sa a pran yon anpil nan agiman, kidonk kite a ale gade nan dokiman an. 214 00:13:25,380 --> 00:13:27,930 Se konsa, ankò, mwen pral API pa kategori, mwen 215 00:13:27,930 --> 00:13:33,820 pral desann nan videyo isit la, ak premye a seksyon, montre jesyon fenèt. 216 00:13:33,820 --> 00:13:36,470 Se konsa, seksyon sa a gen yon tòn bagay nan li, 217 00:13:36,470 --> 00:13:39,970 men si ou gade nan fonksyon sa yo, ou pral 218 00:13:39,970 --> 00:13:43,620 wè ke pwobableman nou nan yon sèl vle yo rele SDL kreye fenèt, 219 00:13:43,620 --> 00:13:46,600 ki k ap pase yo dwe gen dwa nan tèt la. 220 00:13:46,600 --> 00:13:49,080 >> Se konsa, sa a se nan dokiman pou fonksyon sa a. 221 00:13:49,080 --> 00:13:53,710 Fenèt la k ap pase yo gen yon Tit, yon x ak y pozisyon sou ekran an, 222 00:13:53,710 --> 00:13:56,960 li nan ale nan gen yon lajè, se yon wotè, ak Lè sa a li pral pran kèk drapo. 223 00:13:56,960 --> 00:14:01,220 Koulye a, nou pa aktyèlman pran swen sou nenpòt nan drapo sa yo kounye a, 224 00:14:01,220 --> 00:14:04,560 men si ou te vle fè yon bagay tankou fè yon fenèt ekran plen, 225 00:14:04,560 --> 00:14:07,920 ou te kapab pran yon gade nan sa. 226 00:14:07,920 --> 00:14:13,190 Pou kounye a, nou ap jis pral yo sèvi ak valè espesyal sa yo, 227 00:14:13,190 --> 00:14:18,775 Fenèt SDL plis santre pou x ak y yo nan lòd 228 00:14:18,775 --> 00:14:21,800 jis kreye fenèt la nan sant la nan ekran nou an. 229 00:14:21,800 --> 00:14:24,370 >> Se konsa, se sa ki ki nan fè. 230 00:14:24,370 --> 00:14:27,960 Men, si fenèt k ap pase yo nil, sa vle di gen yon erè, 231 00:14:27,960 --> 00:14:32,570 lè sa a ankò nou ap jis ale nan enprime erè a lè l sèvi avèk SDL erè jwenn. 232 00:14:32,570 --> 00:14:36,570 Lè sa a, paske nou inisyalizèd SDL, kounye a nou bezwen fèmen li. 233 00:14:36,570 --> 00:14:40,900 Se konsa, nou rele SDL kite anvan retounen yonn pou prensipal la. 234 00:14:40,900 --> 00:14:42,905 >> Se konsa, nou gen fenèt sa a louvri èspere ke. 235 00:14:42,905 --> 00:14:44,613 Ak sa ki nou ap ale fè se nou ap ale 236 00:14:44,613 --> 00:14:50,340 yo rele SDL pou 5,000 milisgond, ki se menm bagay la kòm senk segonn. 237 00:14:50,340 --> 00:14:55,640 Lè nou ap fè ak sa, li pral detwi fennèt la, 238 00:14:55,640 --> 00:14:59,470 netwaye bibliyotèk la SDL, ak sòti pwogram nan. 239 00:14:59,470 --> 00:15:05,240 Se konsa nou ale pi devan epi bay ke yon piki. 240 00:15:05,240 --> 00:15:08,660 >> Se konsa, kounye olye pou yo chanje makfil a chak fwa, 241 00:15:08,660 --> 00:15:12,180 Mwen kapab tou senpleman fè, ak Lè sa a, sou liy lan lòd, 242 00:15:12,180 --> 00:15:16,090 di sous egal ak Lè sa a dosye a nou ap konpile. 243 00:15:16,090 --> 00:15:17,090 Se konsa, li hello2_window.c. 244 00:15:17,090 --> 00:15:21,390 245 00:15:21,390 --> 00:15:21,890 Kokenn. 246 00:15:21,890 --> 00:15:22,970 Pa gen erros. 247 00:15:22,970 --> 00:15:26,085 Koulye a, si nou kouri ègzèkutabl nou an, nou wè fenèt sa a. 248 00:15:26,085 --> 00:15:27,960 Koulye a, gen yon kèk pwoblèm ki genyen ak fenèt la. 249 00:15:27,960 --> 00:15:32,820 Nou ka avanse pou li alantou li, men li gen sa a tenten jan nou koumanse andedan nan li. 250 00:15:32,820 --> 00:15:34,660 Se konsa, nou pa t 'trase anyen, epi se konsa li a 251 00:15:34,660 --> 00:15:38,210 jis plen ak fatra, ki se bèl anpil ki sa nou atann. 252 00:15:38,210 --> 00:15:41,010 >> Anplis de sa, nou pa ka fèmen fenèt la. 253 00:15:41,010 --> 00:15:44,780 M 'ap peze sa a X nan la kwen e pa gen anyen k ap pase. 254 00:15:44,780 --> 00:15:47,840 Se konsa, nou pral wè ki jan yo ranje ke nan yon ti kras. 255 00:15:47,840 --> 00:15:51,750 Se konsa nou ranje yon pati a ki kote nan fenèt se tout fatra an premye. 256 00:15:51,750 --> 00:16:00,850 Se konsa, si n 'al jwenn nan men hello3_image.c, ki sa nou ka wè se ke nou te ajoute yon kèk 257 00:16:00,850 --> 00:16:03,360 plis bagay isit la. 258 00:16:03,360 --> 00:16:08,740 Nou te ajoute nouvo header sa a ranpli yo ka resevwa fonksyon yo revèy. 259 00:16:08,740 --> 00:16:11,490 Mwen devine nou te fè ke nan dènye a yon sèl, tou, ak mwen pa t 'mansyone li. 260 00:16:11,490 --> 00:16:13,550 Men koulye a, paske nou ap travay ak imaj, 261 00:16:13,550 --> 00:16:18,720 nou bezwen genyen ladan yo nan SDL imaj dosye header kòm byen. 262 00:16:18,720 --> 00:16:22,087 Se konsa, li menm bagay la kòm anvan, inisyalizin SDL isit la, 263 00:16:22,087 --> 00:16:23,420 menm kontra avèk kreye fenèt yo. 264 00:16:23,420 --> 00:16:25,380 Nou te wè ke anvan kounye a. 265 00:16:25,380 --> 00:16:29,870 >> Koulye a, nou bezwen yo kreye yon bagay yo rele yon randu, ki sòt de ale ansanm 266 00:16:29,870 --> 00:16:30,800 ak fenèt la. 267 00:16:30,800 --> 00:16:33,860 Men, li la yon sòt de objè abstrè sa a, se 268 00:16:33,860 --> 00:16:37,370 an chaj nan fè tout bagay sa yo desen operasyon nan fenèt la. 269 00:16:37,370 --> 00:16:41,580 Epi, se aktyèlman koresponn nan yon pwogram chaje 270 00:16:41,580 --> 00:16:47,880 nan pyès ki nan konpitè grafik nan ou òdinatè oswa telefòn ou oswa kèlkeswa sa. 271 00:16:47,880 --> 00:16:51,005 Se konsa, drapo yo nou vle pase l-- epi ou ka gade nan dokiman an 272 00:16:51,005 --> 00:16:56,160 yo ka resevwa plis detay isit lan-- yo ale yo dwe SDL rann akselere, ki 273 00:16:56,160 --> 00:16:58,550 vle di li nan pral fè lè l sèvi avèk pyès ki nan konpitè grafik 274 00:16:58,550 --> 00:17:01,490 epi li pa jis imite nan lojisyèl. 275 00:17:01,490 --> 00:17:07,390 >> Epi nou ap ale nan sèvi ak SDL randu PRESENTVSYNC. 276 00:17:07,390 --> 00:17:12,280 VSync se yon bagay ki tou senpleman fè grafik ou gade pi bon ak anpeche 277 00:17:12,280 --> 00:17:14,970 ekran bagay sa yo rele pè, kote mwatye 278 00:17:14,970 --> 00:17:17,720 nan yon sèl ankadreman ak mwatye nan pwochen an ankadreman jwenn trase nan menm tan an 279 00:17:17,720 --> 00:17:20,056 e li sanble terib. 280 00:17:20,056 --> 00:17:23,130 Men, ankò, ou ka ale li sou sa pou kont ou. 281 00:17:23,130 --> 00:17:24,319 >> Se konsa, nou gen kèk drapo isit la. 282 00:17:24,319 --> 00:17:27,810 Se konsa, nou ap jis pral rele sa a SDL fonksyon kreye randu. 283 00:17:27,810 --> 00:17:31,340 Nou pral bay li fenèt la asosye ak sa randu. 284 00:17:31,340 --> 00:17:34,520 Youn Negatif vle di nou pa pran swen sa grafik chofè nou ap ale nan sèvi ak. 285 00:17:34,520 --> 00:17:36,603 Se konsa, ki ta dwe bèl anpil toujou fè yon sèl negatif, 286 00:17:36,603 --> 00:17:39,010 sof si ou konnen sou grafik chofè yo. 287 00:17:39,010 --> 00:17:41,650 Lè sa a, nou ap jis pral yo pase l 'drapo nou an. 288 00:17:41,650 --> 00:17:47,240 Se konsa, si ki retounen nil, lè sa a nou ap ale nan enprime erè a kòm dabitid, 289 00:17:47,240 --> 00:17:49,550 men Lè sa a nou ap tou ale detwi fenèt la 290 00:17:49,550 --> 00:17:54,970 nan pwòp moute resous moun anvan rele SDL kite epi retounen. 291 00:17:54,970 --> 00:17:58,110 >> Koulye a, pati a enteresan isit la se kote nou chaje pòtre ak nou 292 00:17:58,110 --> 00:18:00,870 lè l sèvi avèk sa a IMG_load fonksyon. 293 00:18:00,870 --> 00:18:04,050 Sa a se fonksyon a sèlman nou ap ale yo sèvi ak nan bibliyotèk la imaj SDL. 294 00:18:04,050 --> 00:18:05,480 Li nan yon sèl la sèlman nou bezwen. 295 00:18:05,480 --> 00:18:12,950 Li se yon fonksyon ki pran fisèl la ki se chemen an nan nenpòt ki resous imaj. 296 00:18:12,950 --> 00:18:18,024 Apre sa, li kapab yon .png, se yon GIF, bitmap, nenpòt nan bagay sa yo. 297 00:18:18,024 --> 00:18:19,690 Epi sa a, poukisa fonksyon sa a se konsa bèl. 298 00:18:19,690 --> 00:18:22,560 Li ka okipe bèl anpil nenpòt ki fòma. 299 00:18:22,560 --> 00:18:27,240 Charges l 'nan memwa ak magazen li kòm yon bagay yo rele yon sifas SDL. 300 00:18:27,240 --> 00:18:34,660 >> Koulye a, yon sifas SDL se senpleman yon struct ki reprezante done imaj nan memwa. 301 00:18:34,660 --> 00:18:38,054 Se konsa, ou ka li plis sou ke nan dokiman an de. 302 00:18:38,054 --> 00:18:40,720 Men, si sa a erè, Lè sa a, nou ap pral fè tout bagay la ki kote 303 00:18:40,720 --> 00:18:44,480 nou enprime erè a, fèmen nou an resous, ak Lè sa a kite fimen pwogram nan. 304 00:18:44,480 --> 00:18:48,970 Koulye a, bagay la enteresan an se, anvan nou ka trase imaj sa a bò fennèt la, 305 00:18:48,970 --> 00:18:51,390 nou bezwen aktyèlman fè l 'yon teksti. 306 00:18:51,390 --> 00:18:54,460 Koulye a, yon koresponn teksti nan done imaj chaje 307 00:18:54,460 --> 00:18:57,820 nan memwa pyès ki nan konpitè grafik nan la. 308 00:18:57,820 --> 00:19:00,720 >> Se konsa, yon sifas se nan prensipal memwa, memwa regilye 309 00:19:00,720 --> 00:19:05,550 ke nou ve yo te lè l sèvi avèk tout semès, ak yon teksti se nan sa a VRAM separe 310 00:19:05,550 --> 00:19:09,410 memwa ki kontwole yo grafik kat. 311 00:19:09,410 --> 00:19:13,170 Se konsa, nou rele sa a fonksyon SDL_CreateTextureFromSurface. 312 00:19:13,170 --> 00:19:17,104 Nou bay li randu nou yo ak sifas nou an. 313 00:19:17,104 --> 00:19:19,020 Lè sa a, nou ap aktyèlman fè ak sifas la, 314 00:19:19,020 --> 00:19:20,311 se konsa nou ap jis ale nan libere li. 315 00:19:20,311 --> 00:19:22,210 Nou pa bezwen li ankò. 316 00:19:22,210 --> 00:19:26,650 Lè sa a, Se konsa, si sa a rele errored, li tounen nil, 317 00:19:26,650 --> 00:19:29,630 lè sa a nou ap ale nan fè tout la erè rapò bagay ankò. 318 00:19:29,630 --> 00:19:30,920 >> Tout dwa. 319 00:19:30,920 --> 00:19:34,810 Isit la, nou jwenn nan kèk rann fonksyon vrè. 320 00:19:34,810 --> 00:19:37,730 Se konsa, lè w rele SDL_RenderClear yo, e pase li 321 00:19:37,730 --> 00:19:42,550 randu a ki asosye ak fennèt nou an tou senpleman fè fenèt la ale nwa. 322 00:19:42,550 --> 00:19:47,650 Se konsa, li retire ki tenten ke nou te wè nan fenèt nou an anvan ak fè li nwa. 323 00:19:47,650 --> 00:19:50,750 Lè sa a, nou ap ale yo rele SDL_RenderCopy, 324 00:19:50,750 --> 00:19:53,010 bay li randu nou an, teksti nou an. 325 00:19:53,010 --> 00:19:55,800 Epitou, n ap pale sou sa jaden sa yo, se nan yon ti jan. 326 00:19:55,800 --> 00:19:57,830 Men, sa k ap pase yo pran done yo teksti 327 00:19:57,830 --> 00:20:03,100 ak fè kopi li sou nou an fenèt fè desen imaj la. 328 00:20:03,100 --> 00:20:07,020 Se konsa, apre nou te fè sa a kopi done yo sou fenèt nou an, 329 00:20:07,020 --> 00:20:11,180 nou dwe fè fonksyon siplemantè sa a rele SDL_RenderPresent. 330 00:20:11,180 --> 00:20:15,360 >> Lè sa a se enteresan paske sa a vin 331 00:20:15,360 --> 00:20:18,770 nan yon sijè rele doub tampon. 332 00:20:18,770 --> 00:20:24,380 Se konsa, doub tampon se yon teknik ki fè grafik ou gade yon anpil pi byen. 333 00:20:24,380 --> 00:20:28,240 Yon fwa ankò, li anpeche ekran ki chire Mwen te ap pale de pi bonè, kote 334 00:20:28,240 --> 00:20:29,590 ou gen de tanpon. 335 00:20:29,590 --> 00:20:32,260 Genyen yon tanpon tounen nan memwa ak yon zòn de defans devan. 336 00:20:32,260 --> 00:20:36,410 Tanpon la devan se literalman sa ki nan sou ekran ou a nan moman an. 337 00:20:36,410 --> 00:20:42,070 Se konsa, nou fè tout bagay sa yo trase varyasyon, tankou SDL rann kopye oubyen SDL_RenderClear 338 00:20:42,070 --> 00:20:43,080 tanpon la tounen. 339 00:20:43,080 --> 00:20:44,800 Se konsa, yo modifye bagay nan zòn de defans la tounen. 340 00:20:44,800 --> 00:20:48,970 Isit la nou ka fè desen sa a kare vèt yo tanpon la tounen. 341 00:20:48,970 --> 00:20:52,300 >> Se sak fè lè nou ap fè fè rann operasyon nou an, ki 342 00:20:52,300 --> 00:20:55,700 ta ka pran yon reyèlman long tan, ki sa nou ap ale nan fè 343 00:20:55,700 --> 00:20:57,860 se chanje tanpon yo. 344 00:20:57,860 --> 00:21:00,720 Se konsa, li literalman jis pran nan tanpon devan ak zòn de defans la tounen 345 00:21:00,720 --> 00:21:02,990 ak switch yo, se konsa sa, enstantane, 346 00:21:02,990 --> 00:21:06,630 nan yon sèl operasyon an, olye pou yo petèt dè santèn oswa dè milye, 347 00:21:06,630 --> 00:21:10,910 tout nan nou an ki fèk rann objè ki sou ekran an. 348 00:21:10,910 --> 00:21:13,160 Lè sa a anpeche bagay tankou entérésan nan ekran 349 00:21:13,160 --> 00:21:16,710 lè nou te sèlman trase mwatye nan objè nou an pou ankadreman an. 350 00:21:16,710 --> 00:21:21,280 Se konsa, Se poutèt sa nou bezwen rele SDL_RenderPresent, osi byen 351 00:21:21,280 --> 00:21:23,320 kòm SDL_RenderCopy. 352 00:21:23,320 --> 00:21:25,749 >> Yon fwa ankò, nou ap jis pral pou ret tann pou senk segonn. 353 00:21:25,749 --> 00:21:27,540 Lè sa a, nou ap ale nan netwaye resous nou yo. 354 00:21:27,540 --> 00:21:29,540 Nou gen byen yon kèk plis tan sa a. 355 00:21:29,540 --> 00:21:31,750 Lè sa a, nou ap jis pral sòti pwogram nan. 356 00:21:31,750 --> 00:21:35,350 Se konsa nou fè sa. 357 00:21:35,350 --> 00:21:41,880 Mwen pral tape fè, ak Lè sa sous egal hello-- sa a se kounye a 3image.c. 358 00:21:41,880 --> 00:21:49,632 359 00:21:49,632 --> 00:21:52,240 Tout dwa, ki konpile pa gen okenn erè. 360 00:21:52,240 --> 00:21:57,210 Epi ou ka wè isit la mwen te kounye a trase soti imaj m 'yo, Hello, CS50! 361 00:21:57,210 --> 00:22:00,560 bò fennèt nou an, ki disparèt apre senk segonn. 362 00:22:00,560 --> 00:22:02,090 >> Koulye a, sa a toujou gen pwoblèm, dwa? 363 00:22:02,090 --> 00:22:05,750 Sa a se pa yon bon aplikasyon an, paske lè mwen eseye fèmen fennèt la, 364 00:22:05,750 --> 00:22:06,500 pa gen anyen k ap pase. 365 00:22:06,500 --> 00:22:09,540 Sa x se toujou pa reponn. 366 00:22:09,540 --> 00:22:17,420 Se konsa, kite a pran yon gade nan la pwochen ranpli, hello4animation. 367 00:22:17,420 --> 00:22:21,850 Se konsa, sa a se dosye a ki k ap pase prezante 368 00:22:21,850 --> 00:22:25,124 k ap deplase ak mouvman nan imaj nou an. 369 00:22:25,124 --> 00:22:27,040 Se konsa, nou ap ale nan fè nan menm bagay tankou anvan, 370 00:22:27,040 --> 00:22:30,190 kòmanse SDL, kreye nan fenèt, kreye randu a, 371 00:22:30,190 --> 00:22:33,030 chaje imaj la nan memwa, kreye teksti an. 372 00:22:33,030 --> 00:22:35,090 Nou te wè nan tout sa anvan. 373 00:22:35,090 --> 00:22:36,770 Koulye a, sa a se nouvo. 374 00:22:36,770 --> 00:22:42,305 Nou pral gen yon estrikti ki rele yon dirèk SDL, ki se jis yon rektang. 375 00:22:42,305 --> 00:22:49,950 Si nou ale sou isit la, nou kapab fè yon rechèch pou SDL dirèk, 376 00:22:49,950 --> 00:22:54,040 epi ou ka wè li nan yon trè senp estrikti. 377 00:22:54,040 --> 00:22:56,760 Li te gen yon x, yon y pou pozisyon an, epi li 378 00:22:56,760 --> 00:23:02,080 gen yon lajè ak yon wotè pou gwosè a nan rektang lan. 379 00:23:02,080 --> 00:23:07,785 >> Se konsa, sa nou ap ale nan fè se nou ap ale nan defini sa a dirèk dèst SDL, 380 00:23:07,785 --> 00:23:09,480 pou destinasyon. 381 00:23:09,480 --> 00:23:14,130 Lè sa a se plas la sou ekran an kote 382 00:23:14,130 --> 00:23:16,005 nou ap ale nan dwe desen pòtre ak nou, dwa Se konsa, 383 00:23:16,005 --> 00:23:17,880 si nou ap ale nan dwe k ap deplase imaj la alantou li, 384 00:23:17,880 --> 00:23:20,300 Lè sa a, destinasyon an kote nou ap ale nan trase imaj la 385 00:23:20,300 --> 00:23:22,620 bezwen yo dwe deplase alantou. 386 00:23:22,620 --> 00:23:24,910 Se konsa, nou ap ale nan rele sa a fonksyon SDL_QueryTexture. 387 00:23:24,910 --> 00:23:27,550 388 00:23:27,550 --> 00:23:33,500 Apre sa, remake mwen pase adrès la a dest.w, ki se lajè a, 389 00:23:33,500 --> 00:23:36,950 ak dest.h, ki se wotè a. 390 00:23:36,950 --> 00:23:40,425 Se konsa, ki pral SDL_QueryTexture nan magazen nan sa yo jaden yo lajè a 391 00:23:40,425 --> 00:23:41,675 ak wotè a nan teksti nou an. 392 00:23:41,675 --> 00:23:44,680 393 00:23:44,680 --> 00:23:47,030 >> Lè sa a, sa m ap pral fè se mwen pral 394 00:23:47,030 --> 00:23:55,580 yo mete yo dwe fenèt dest.x lajè dest.w mwens, ki se 395 00:23:55,580 --> 00:23:59,000 lajè a nan luten la, divize pa 2. 396 00:23:59,000 --> 00:24:03,860 Lè sa a ki pral mete l 'kanpe konsa ki se imaj la parfe santre 397 00:24:03,860 --> 00:24:06,780 nan fennèt nou an, tout dwa? 398 00:24:06,780 --> 00:24:08,652 Se konsa, koulye a, mwen gen yon pozisyon y. 399 00:24:08,652 --> 00:24:10,360 Lè sa a ki pral gen yon varyab sa a, se 400 00:24:10,360 --> 00:24:16,390 chanje, paske nou ap ale nan dwe k ap deplase imaj la nan y direksyon an. 401 00:24:16,390 --> 00:24:19,050 Epi, koulye a nou gen yon bagay rele yon bouk animasyon. 402 00:24:19,050 --> 00:24:21,180 >> Se konsa, kouman animasyon an travay? 403 00:24:21,180 --> 00:24:27,630 Oke, je imen kapab detekte 12 distenk imaj nan chak dezyèm, tout dwa? 404 00:24:27,630 --> 00:24:33,060 Se konsa, si ou flash 12 kat imaj nan m ' nan yon dezyèm, mwen te wè chak nan imaj sa yo 405 00:24:33,060 --> 00:24:35,950 kòm pwòp imaj distenk li yo endividyèl elèv yo. 406 00:24:35,950 --> 00:24:39,690 Koulye a, si ou flash plis imaj nan m 'nan yon dezyèm fwa, 407 00:24:39,690 --> 00:24:42,140 Lè sa a, je m 'ta kòmanse bwouye yo ansanm 408 00:24:42,140 --> 00:24:46,920 e mwen ta wè li kòm mouvman, olye pou yo yon sèl imaj diferan. 409 00:24:46,920 --> 00:24:51,930 Se konsa, pou egzanp, sinema ak televizyon, yo flash imaj nan ou 24 fwa 410 00:24:51,930 --> 00:24:52,570 yon dezyèm fwa. 411 00:24:52,570 --> 00:24:55,110 Se konsa, sa a, se 24 ankadreman pou chak dezyèm fwa. 412 00:24:55,110 --> 00:25:00,136 Ekran konpitè, sou lòt men an, souvan yo nan 60 ankadreman pou chak dezyèm fwa. 413 00:25:00,136 --> 00:25:01,260 Sa a vitès actualiser yo. 414 00:25:01,260 --> 00:25:04,650 Sa a ki jan souvan yo rafrechi foto a sou ekran an. 415 00:25:04,650 --> 00:25:08,960 Se konsa, sib nou an a pwal 60 ankadreman pou chak dezyèm pou jwèt nou an. 416 00:25:08,960 --> 00:25:11,770 417 00:25:11,770 --> 00:25:13,710 >> Se konsa nou wè ke nan kòd la. 418 00:25:13,710 --> 00:25:19,064 Se konsa, pou chak ankadreman, nou ap premye ale nan klè fenèt la. 419 00:25:19,064 --> 00:25:20,230 Sa a se modèl la an jeneral. 420 00:25:20,230 --> 00:25:22,450 Ou toujou klè nan fenèt chak ankadreman, ak Lè sa 421 00:25:22,450 --> 00:25:25,210 fè tout nan desen ou operasyon yo, ak Lè sa a nan fen a, 422 00:25:25,210 --> 00:25:29,610 RenderPresent yo montre tout bagay nan ankadreman an. 423 00:25:29,610 --> 00:25:33,910 Lè sa a, w ap ale nan gen yon rete tann nan fen a 424 00:25:33,910 --> 00:25:36,340 rete tann jiskaske pwochen an ankadreman ta dwe kòmanse. 425 00:25:36,340 --> 00:25:38,650 >> Se konsa, si m 'te fè yon anpil nan konplèks kalkil isit la 426 00:25:38,650 --> 00:25:43,100 ki te pran plis pase 16 milisgond, li ta enposib pou m ' 427 00:25:43,100 --> 00:25:46,890 yo ka resevwa ke to ankadreman nan 60 ki Mwen te vle, paske chak ankadreman se 428 00:25:46,890 --> 00:25:48,750 pran twò lontan yo kalkile. 429 00:25:48,750 --> 00:25:52,340 Anplis de sa, nou ap reyèlman fè sòt de yon kantite lajan neglijab nan travay 430 00:25:52,340 --> 00:25:54,820 isit la, paske gen nan sèlman yon sèl bagay nou ap desen. 431 00:25:54,820 --> 00:25:59,390 Se konsa, mwen jis rete tann 1/60 nan yon dezyèm lan, ki se longè a 432 00:25:59,390 --> 00:26:01,520 a yon ankadreman an ant ankadreman. 433 00:26:01,520 --> 00:26:05,610 Se konsa, mwen sòt de samblan fè tout travay mwen pran zewo tan. 434 00:26:05,610 --> 00:26:09,050 Men, nan yon jwèt reyèl, ou ta gen yo fè soustraksyon 435 00:26:09,050 --> 00:26:13,760 kantite tan li te pran fè tout travay sa a de tan rès ou yo. 436 00:26:13,760 --> 00:26:16,970 >> Se konsa, de tout fason, ki sa mwen aktyèlman fè nan sa a riban? 437 00:26:16,970 --> 00:26:19,070 Mwen klè fenèt la. 438 00:26:19,070 --> 00:26:27,470 Mwen mete dest.y la, ki se yon int aktyèl mwen y pozisyon jete nan yon int. 439 00:26:27,470 --> 00:26:32,070 Koulye a, mwen vle flote rezolisyon pou y pozisyon mwen nan jwèt m 'yo, 440 00:26:32,070 --> 00:26:34,150 men Lè sa a yo aktyèlman trase li sou ekran an, 441 00:26:34,150 --> 00:26:39,070 li bezwen antye, paske li nan nan inite a piksèl, se konsa se sa ki jete an se pou. 442 00:26:39,070 --> 00:26:41,745 Mwen pral fè desen imaj la. 443 00:26:41,745 --> 00:26:45,180 Se konsa, sa se yon sous rektang lan. 444 00:26:45,180 --> 00:26:47,060 Lè sa a se rektang lan destinasyon. 445 00:26:47,060 --> 00:26:50,310 Se konsa, mwen te pase pou nil sous rektang lan 446 00:26:50,310 --> 00:26:53,426 yo di mwen vle trase tout teksti mwen. 447 00:26:53,426 --> 00:26:55,300 Men, si ou te gen yon anpil nan tèkstur nan jwèt ou 448 00:26:55,300 --> 00:26:59,120 e yo ap tout nan yon sèl kat jeyografik teksti gwo ki te chaje nan SDL kòm sèlman yon sèl 449 00:26:59,120 --> 00:27:02,850 teksti, ou ta ka sèvi ak yon rektang sous 450 00:27:02,850 --> 00:27:06,750 yo chwazi youn nan sifas sa yo ki pi piti, youn nan sprites yo ki pi piti, 451 00:27:06,750 --> 00:27:09,450 soti nan ki kat jeyografik teksti gwo. 452 00:27:09,450 --> 00:27:14,740 >> Se konsa, ankò, mwen pase rann mwen, mwen teksti, e kounye a, destinasyon an. 453 00:27:14,740 --> 00:27:18,320 Sa a se pral yo dwe kote nan la fenèt li pral yo dwe trase. 454 00:27:18,320 --> 00:27:21,390 Apre sa, lè sa a, paske mwen animaux yon bagay, mwen bezwen mouvman, 455 00:27:21,390 --> 00:27:25,150 Mwen pral yo dwe à la pozisyon luten sou chak ankadreman. 456 00:27:25,150 --> 00:27:30,190 Se konsa, mwen gen sa a konstan rele woulo liv pi vit nan inite nan piksèl pou chak dezyèm. 457 00:27:30,190 --> 00:27:34,320 Koulye a, chak fwa nou fè yon mouvman, ankadreman an se sèlman 1/60 nan yon dezyèm fwa. 458 00:27:34,320 --> 00:27:36,740 Se konsa, mwen pral divize ki pa 60. 459 00:27:36,740 --> 00:27:42,350 Lè sa a,, se pou yo wè, mwen se soustraksyon ki soti nan y pozisyon. 460 00:27:42,350 --> 00:27:44,470 Poukisa mwen soustraksyon? 461 00:27:44,470 --> 00:27:46,169 Nou pral jwenn ak sa yo ki nan yon dezyèm fwa. 462 00:27:46,169 --> 00:27:48,460 Se konsa, lè sa a mwen netwaye resous mwen ak pwogram nan nan plis pase. 463 00:27:48,460 --> 00:27:49,830 >> Se konsa, kite a fè sa. 464 00:27:49,830 --> 00:27:52,450 465 00:27:52,450 --> 00:28:03,570 Se konsa nou ale nan fè SRCS = hello4 animation.c, tout dwa? 466 00:28:03,570 --> 00:28:05,720 Jwèt. 467 00:28:05,720 --> 00:28:06,770 Gen ou ale. 468 00:28:06,770 --> 00:28:12,690 Se konsa, mwen genyen li defile moute nan fenèt, ki se trè byen òdone. 469 00:28:12,690 --> 00:28:17,110 Men, kenbe fèm nan, mwen te soustraksyon soti nan y pozisyon an chak fwa. 470 00:28:17,110 --> 00:28:18,910 Ki sa ki k ap pase sou la? 471 00:28:18,910 --> 00:28:24,010 Oke, li sanble ke nan SDL, ak an reyalite, nan pifò grafik òdinatè, 472 00:28:24,010 --> 00:28:28,890 orijin nan pou sistèm nan kowòdone se tèt la kite nan fenèt la. 473 00:28:28,890 --> 00:28:34,960 >> Se konsa, yon direksyon ki pozitif x ale atravè fenèt ou a dwat la. 474 00:28:34,960 --> 00:28:38,110 Ak pozitif y direksyon an aktyèlman ale desann. 475 00:28:38,110 --> 00:28:40,470 Se konsa, ankò, nan orijin nan nan tèt la kite nan fenèt ou, 476 00:28:40,470 --> 00:28:46,190 pozitif y direksyon se desann, ak pozitif x se a dwat la. 477 00:28:46,190 --> 00:28:48,770 Se konsa, lè m 'fè soustraksyon soti nan pozisyon nan y, sa a, se 478 00:28:48,770 --> 00:28:52,640 ale nan fè li ale sou negatif la y direksyon, ki se moute fenèt la. 479 00:28:52,640 --> 00:28:55,500 Se konsa, sa a, se sa k ap pase a. 480 00:28:55,500 --> 00:28:56,510 Fre. 481 00:28:56,510 --> 00:28:59,240 >> Se pou yo gade nan dosye-a. 482 00:28:59,240 --> 00:29:05,700 Isit la se pati nan la montre kote nou finalman 483 00:29:05,700 --> 00:29:08,920 jwenn ki X nan kwen an nan fenèt la ki nan sipoze fèmen fenèt la 484 00:29:08,920 --> 00:29:10,660 nan travay. 485 00:29:10,660 --> 00:29:12,800 Se konsa, sa k ap pase sou? 486 00:29:12,800 --> 00:29:17,520 Nou inisyalize SDL, kreye fennèt la, kreye randu a, chaje imaj la, 487 00:29:17,520 --> 00:29:19,770 kreye teksti an tankou nou te wè anvan. 488 00:29:19,770 --> 00:29:26,850 Nou gen rektang lan destinasyon menm tankou anvan, se li menm rele nan sijè rechèch teksti. 489 00:29:26,850 --> 00:29:29,780 Men, tan sa a, Lè sa a, nou ap ale nan divize lajè a 490 00:29:29,780 --> 00:29:33,110 ak wotè a nan destinasyon nou an pa 4. 491 00:29:33,110 --> 00:29:36,430 Sa a sèlman gen efè a nan dekale pòtre ak nou desann lè 492 00:29:36,430 --> 00:29:39,884 nou montre l 'nan fenèt la nan kat. 493 00:29:39,884 --> 00:29:40,800 Se konsa, sa a, se bèl byen òdone. 494 00:29:40,800 --> 00:29:42,770 Nou ka jis echèl jis tankou sa. 495 00:29:42,770 --> 00:29:45,970 Nou pwal kòmanse luten la nan sant la nan ekran an. 496 00:29:45,970 --> 00:29:49,410 Epi, koulye a nou gen x ak y vitès ak yo ap tou de pral kòmanse nan zewo. 497 00:29:49,410 --> 00:29:53,740 498 00:29:53,740 --> 00:29:55,880 >> Sa a se dosye a mal. 499 00:29:55,880 --> 00:29:56,380 Mwen dezole. 500 00:29:56,380 --> 00:29:57,960 Se konsa, ki nan tout verite. 501 00:29:57,960 --> 00:30:00,170 Sa a tout toujou nan sa a ranpli. 502 00:30:00,170 --> 00:30:03,210 Nou gen divize an pa 4 ak tout bagay. 503 00:30:03,210 --> 00:30:07,830 Se konsa, isit la nou gen nou an x ​​ak y pozisyon pou sant la nan fenèt la. 504 00:30:07,830 --> 00:30:12,480 Apre sa, nou bay li yon premye vitès nan vitès sa a konstan, ki 505 00:30:12,480 --> 00:30:15,180 Mwen kwè se 300 piksèl pou chak dezyèm. 506 00:30:15,180 --> 00:30:19,850 Koulye a, nou gen int sa a te kapab jis kòm byen gen yon Boolean rele fèmen mande a. 507 00:30:19,850 --> 00:30:23,970 Ak olye pou yo fè yon enfini riban sou yon revèy isit la, 508 00:30:23,970 --> 00:30:29,180 nou ap ale nan dwe animaux kòm lontan ke se pa sa fèmen mande a. 509 00:30:29,180 --> 00:30:30,960 >> Se konsa, ki jan nou travay sou evènman? 510 00:30:30,960 --> 00:30:35,600 Oke, ke moun kap kriye SDL moute evènman nan yon literal keu dèyè sèn nan. 511 00:30:35,600 --> 00:30:38,860 Lè sa a, chak ankadreman, nou ka dequeue evènman 512 00:30:38,860 --> 00:30:43,900 soti nan ki lè l sèvi avèk keu sa a apèl SDL_PullEvent. 513 00:30:43,900 --> 00:30:46,730 Epi ankò, definitivman ale li sou sa a nan dokiman an. 514 00:30:46,730 --> 00:30:50,450 Genyen yon anpil plis detay ak yon anpil plis fonksyon ou ka itilize ak sa. 515 00:30:50,450 --> 00:30:54,750 Nou pase l adrès la a bagay sa a, SDL_Event 516 00:30:54,750 --> 00:30:56,990 ke nou gen isit la sou pil la. 517 00:30:56,990 --> 00:30:58,840 >> Koulye a, ki sa ki yon SDL_event? 518 00:30:58,840 --> 00:31:02,356 Paske SDL, si nou gade nan documentation-- yo se pou yo 519 00:31:02,356 --> 00:31:07,580 wè, API pa kategori, D ' evènman, evènman manyen, 520 00:31:07,580 --> 00:31:15,150 nou ka gade nan nimewo a evènman nan diferan isit la 521 00:31:15,150 --> 00:31:18,600 epi nou ka wè gen nan yon tòn antye nan yo. 522 00:31:18,600 --> 00:31:22,150 Se konsa, sa se bagay SDL_Event sa a? 523 00:31:22,150 --> 00:31:28,190 524 00:31:28,190 --> 00:31:31,107 SDL_Event se yon sendika. 525 00:31:31,107 --> 00:31:31,940 Wow, sa ki nan yon sendika? 526 00:31:31,940 --> 00:31:33,910 Ou te gen pwobableman pa janm tande pale de ke anvan. 527 00:31:33,910 --> 00:31:35,610 Epi sa a, OK. 528 00:31:35,610 --> 00:31:39,420 >> Yon sendika se kalite tankou yon struct, eksepte yon struct 529 00:31:39,420 --> 00:31:41,960 gen yon espas pou tout moun nan jaden li yo ak memwa, 530 00:31:41,960 --> 00:31:45,060 Lè nou konsidere ke yon sendika sèlman gen ase espas nan anfòm pi gwo a 531 00:31:45,060 --> 00:31:49,660 youn nan jaden yo li yo, ki vle di li ka sèlman magazen youn nan jaden yo li yo 532 00:31:49,660 --> 00:31:52,830 nan yon moman, ki kalite fè sans pou evènman, dwa? 533 00:31:52,830 --> 00:31:55,810 Nou ka gen yon klavye evènman oswa yon evènman fenèt, 534 00:31:55,810 --> 00:31:59,750 men yon evènman sèl pa ka tou de yon evènman klavye ak yon evènman fenèt, 535 00:31:59,750 --> 00:32:05,450 se konsa li ta dwe komik gen espas pou tou de nan sa yo andedan sendika evènman nou an. 536 00:32:05,450 --> 00:32:07,770 Se konsa, si ou te vle kreye sendika pwòp ou a, 537 00:32:07,770 --> 00:32:10,020 li sanble ekzakteman menm bagay la kòm kreye yon struct, 538 00:32:10,020 --> 00:32:14,140 eksepte ke nou itilize mo kle a sendika olye pou yo mo kle a struct. 539 00:32:14,140 --> 00:32:17,490 Epi sonje, pou tout moun nan nan bagay andedan sendika ou, 540 00:32:17,490 --> 00:32:22,020 varyab aktyèl la se sa ki sendika a ka sèlman gen youn nan valè sa yo 541 00:32:22,020 --> 00:32:24,780 nan yon tan. 542 00:32:24,780 --> 00:32:29,940 >> Se konsa, ki jan nou ka di ki kalite evènman nou jis déja koupe nan keu sa a? 543 00:32:29,940 --> 00:32:33,370 Bon, nou ka fè tès pou event.type. 544 00:32:33,370 --> 00:32:35,792 Men, si se sa ki egal SDL_Quit, nou konnen 545 00:32:35,792 --> 00:32:37,500 li nan evènman an ki te pwodwi lè nou 546 00:32:37,500 --> 00:32:39,510 frape ki X nan kwen an nan fenèt la. 547 00:32:39,510 --> 00:32:44,270 Epi nou ka mete fèmen mande egal 1. 548 00:32:44,270 --> 00:32:47,230 Rès la se jis kèk animasyon ke ou te wè anvan. 549 00:32:47,230 --> 00:32:52,802 Se konsa nou ale pi devan epi fè sa a epi wè ki jan byen li fonksyone. 550 00:32:52,802 --> 00:32:55,135 Se konsa, mwen pral tape fè ak Lè sa a, SRCS = hello5_events.c. 551 00:32:55,135 --> 00:33:03,760 552 00:33:03,760 --> 00:33:04,770 Gen nou ale. 553 00:33:04,770 --> 00:33:05,780 Jwèt. 554 00:33:05,780 --> 00:33:08,920 >> Koulye a, nou ka wè li te tout bon scaled desann nan kat. 555 00:33:08,920 --> 00:33:10,360 Epi, koulye a li nan rebondi alantou. 556 00:33:10,360 --> 00:33:14,630 Mwen gen kèk deteksyon kolizyon pwal sou ak kote sa yo nan fenèt la 557 00:33:14,630 --> 00:33:16,840 ke nou ka pran yon gade nan. 558 00:33:16,840 --> 00:33:21,190 Ak sa ki k ap pase lè m 'ale nan fèmen li? 559 00:33:21,190 --> 00:33:22,120 Li fèmen. 560 00:33:22,120 --> 00:33:22,740 Kokenn. 561 00:33:22,740 --> 00:33:24,290 Nou te resevwa ke evènman. 562 00:33:24,290 --> 00:33:26,630 Apre sa, nou okipe li. 563 00:33:26,630 --> 00:33:30,730 >> Se konsa, kite pou yo gade tounen nan kòd la. 564 00:33:30,730 --> 00:33:33,020 Se konsa, kouman mwen te jwenn li rebondi alantou tankou sa? 565 00:33:33,020 --> 00:33:37,200 Sonje mwen mete tou de x ak y okòmansman vitès yo. 566 00:33:37,200 --> 00:33:39,260 Apre sa, vitès se yon pozitif konstan, se konsa sa a, se 567 00:33:39,260 --> 00:33:42,680 ale nan jwenn li kòmanse soti pral desann ak sou bò dwat la. 568 00:33:42,680 --> 00:33:45,680 569 00:33:45,680 --> 00:33:50,310 >> Koulye a, chak ankadreman, nan adisyon a manyen nenpòt evènman ki te ka ki te fèt, 570 00:33:50,310 --> 00:33:57,520 Mwen pral yo detekte si wi ou non mwen luten ap eseye ale soti nan fenèt la. 571 00:33:57,520 --> 00:34:03,610 Se konsa, nou ka fè sa pa jis tcheke x_pos ak 0, y_pos 0, ak Lè sa a 572 00:34:03,610 --> 00:34:07,370 tou x_pos ak y_pos ak lajè fenèt ak wotè fenèt. 573 00:34:07,370 --> 00:34:11,010 Avi mwen te soustrè lajè a nan luten la. 574 00:34:11,010 --> 00:34:14,090 Lè sa a se paske si mwen pa t ' fè soustraksyon lajè a nan luten la, 575 00:34:14,090 --> 00:34:17,760 li ta sèlman tcheke ke orijin nan luten la 576 00:34:17,760 --> 00:34:19,690 pa t 'ale deyò fenèt la. 577 00:34:19,690 --> 00:34:21,480 Men, nou vle tout la lajè luten la 578 00:34:21,480 --> 00:34:24,030 toujou gen andedan fennèt la, li wotè a tout antye de luten la 579 00:34:24,030 --> 00:34:25,321 toujou gen andedan fenèt la. 580 00:34:25,321 --> 00:34:27,429 Se konsa, se sa ki soustraksyon a se pou. 581 00:34:27,429 --> 00:34:30,080 Yon anpil nan jeyometri isit la kapab ka itil yo desine li soti 582 00:34:30,080 --> 00:34:33,929 sou papye ak kowòdone a sistèm yo wè ki sa ki pwal sou. 583 00:34:33,929 --> 00:34:38,090 >> Se konsa, si mwen fè kolizyon, mwen jis tou senpleman Reyajiste pozisyon an 584 00:34:38,090 --> 00:34:41,400 konsa ke li pa pral soti nan ekran an. 585 00:34:41,400 --> 00:34:47,179 Apre sa, mwen pral, si li rebondi sou youn nan flan yo, 586 00:34:47,179 --> 00:34:51,469 Mwen pral anile nan x vitès konsa ke li 587 00:34:51,469 --> 00:34:53,210 kòmanse rebondi nan lòt direksyon an. 588 00:34:53,210 --> 00:34:56,210 Apre sa, Menm jan an tou, si li frape tèt la oswa anba a, 589 00:34:56,210 --> 00:34:59,820 Mwen pral mete vitès la y egal a y vitès la negatif, 590 00:34:59,820 --> 00:35:01,690 konsa ke li pral rebondi tounen. 591 00:35:01,690 --> 00:35:03,860 Se konsa, sa a, se jis ki jan nou te resevwa ki isit la. 592 00:35:03,860 --> 00:35:07,560 >> Apre sa, pozisyon yo jour jis tankou nou te wè anvan, 593 00:35:07,560 --> 00:35:12,510 divize pa 60, paske nou ap sèlman manyen 1/60 nan yon dezyèm fwa. 594 00:35:12,510 --> 00:35:15,750 Lè sa a, rann, ekzakteman menm bagay la tankou anvan. 595 00:35:15,750 --> 00:35:19,810 Se konsa, sa a, se tout bagay ki te ale sou sa a dosye. 596 00:35:19,810 --> 00:35:22,490 Se konsa, sa a, se ki jan nou fè evènman yo. 597 00:35:22,490 --> 00:35:29,260 Bagay la prensipal yo pran lwen isit la se fonksyon SDL_PullEvent sa a. 598 00:35:29,260 --> 00:35:33,020 Apre sa, ou ta dwe definitivman li nan dokiman plis sou SDL_Event 599 00:35:33,020 --> 00:35:38,630 sendika a, paske sa a ki kalite done se trè, trè enpòtan, paske nou sèvi ak li 600 00:35:38,630 --> 00:35:40,690 pou tout kalite evènman yo. 601 00:35:40,690 --> 00:35:46,539 >> Pou egzanp, nou sèvi ak li pou klavye evènman, ki se sa ki sa a ranpli se pou. 602 00:35:46,539 --> 00:35:47,330 Se konsa, sa nou genyen? 603 00:35:47,330 --> 00:35:50,180 Nou gen menm bagay la tankou anvan, inisyalize SDL, kreye yon fenèt, 604 00:35:50,180 --> 00:35:55,260 kreye yon randu, chaje imaj la nan memwa, kreye teksti an. 605 00:35:55,260 --> 00:36:00,530 Yon fwa ankò, nou ap ale nan gen sa a rektang dèst, 606 00:36:00,530 --> 00:36:04,890 nou ap ale nan echèl imaj la pa kat, fè li yon ti jan pi piti. 607 00:36:04,890 --> 00:36:08,000 Koulye a, nou pral kòmanse nan luten nan sant nan ekran an. 608 00:36:08,000 --> 00:36:12,090 Men, fwa sa a, nou ap ale nan mete nan x premye ak y vitès a zewo, 609 00:36:12,090 --> 00:36:15,140 paske klavye a se ale nan kontwole sa yo. 610 00:36:15,140 --> 00:36:18,900 Apre sa, Anplis de sa, nou ap ale nan kenbe tras nan sa yo varyab 611 00:36:18,900 --> 00:36:20,450 leve, desann, yo kite, ak dwa. 612 00:36:20,450 --> 00:36:23,090 Epi sa k ap pase yo kenbe tras nan si wi ou non nou te 613 00:36:23,090 --> 00:36:27,370 bourade bouton sa yo klavye ki koresponn ak leve, desann, agoch, 614 00:36:27,370 --> 00:36:28,460 ak dwa. 615 00:36:28,460 --> 00:36:32,440 >> Koulye a, sa a se kalite anpenpan paske nou ka sèvi ak W, A, S, 616 00:36:32,440 --> 00:36:35,480 D isit la, oswa kle yo flèch vrè. 617 00:36:35,480 --> 00:36:38,590 Nou pral wè ke nan jis yon dezyèm fwa. 618 00:36:38,590 --> 00:36:41,140 Se konsa, nou ap ale nan travay sou evènman an jis tankou anvan. 619 00:36:41,140 --> 00:36:42,530 Nou rale evènman an. 620 00:36:42,530 --> 00:36:45,840 Men koulye a, nou ap ale nan chanje sou kalite a evènman. 621 00:36:45,840 --> 00:36:47,710 Si li nan SDL_Quit, nou ap pral mete fèmen 622 00:36:47,710 --> 00:36:49,990 mande yo yon sèl, jis tankou anvan. 623 00:36:49,990 --> 00:36:52,315 Ki okipe zafè yo nan x kwen an nan fennèt la, 624 00:36:52,315 --> 00:36:55,050 se konsa ke fenèt nou an aktyèlman fèmen. 625 00:36:55,050 --> 00:37:00,110 >> Sinon, si nou jwenn yon kle SDL desann evènman, ki vle di nou bourade yon kle, 626 00:37:00,110 --> 00:37:04,470 Lè sa a, sa n ap pral fè se nou ap ale nan chanje sou bagay sa a isit la, 627 00:37:04,470 --> 00:37:11,370 ki means-- konsa event.key vle di trete sendika evènman nou an, 628 00:37:11,370 --> 00:37:15,490 ale epi pou yo jwenn kle a evènman estrikti nan li. 629 00:37:15,490 --> 00:37:18,810 Se konsa, li vire soti ke sa a sendika se yon estrikti kle evènman. 630 00:37:18,810 --> 00:37:22,820 Lè sa a, ale nan kle a estrikti evènman an jaden li yo 631 00:37:22,820 --> 00:37:26,140 rele kèzen ak Lè sa a scancode. 632 00:37:26,140 --> 00:37:29,480 Epi ankò, definitivman li dokiman an sou sa a. 633 00:37:29,480 --> 00:37:31,220 Entrain Keyword byen enteresan. 634 00:37:31,220 --> 00:37:34,020 Ou ka jwenn kòd eskanè oswa kòd kle. 635 00:37:34,020 --> 00:37:38,590 Lè li nan yon ti kras sibtil, men dokiman an se byen bon. 636 00:37:38,590 --> 00:37:43,380 >> Se konsa, si nou wè kòd a eskanè pou nou an kle laprès yo te W oswa leve, 637 00:37:43,380 --> 00:37:45,450 nou ap ale nan mete kanpe egal a 1. 638 00:37:45,450 --> 00:37:47,240 Lè sa a, nou kraze soti nan ki switch. 639 00:37:47,240 --> 00:37:52,980 Si li nan A oswa kite, nou mete kite a 1, ak setra, et setra, pou desann ak dwa. 640 00:37:52,980 --> 00:37:57,080 Koulye a, soti nan switch ekstèn sa a, si nou wè yon kle moute evènman, 641 00:37:57,080 --> 00:38:00,730 sa vle di nou te lage yon kle epi nou ap pa gen okenn ankò peze li. 642 00:38:00,730 --> 00:38:05,380 Se konsa, mwen pral di moute egal 0, gòch egal 0, desann egal 0, dwa 643 00:38:05,380 --> 00:38:08,260 egal 0, et setra. 644 00:38:08,260 --> 00:38:12,070 >> Apre sa, remake nou gen nan chak nan sa yo de ka mete dwa pwochen youn ak lòt 645 00:38:12,070 --> 00:38:14,490 ki pa gen okenn Kòd separe pou ka a premye, ki 646 00:38:14,490 --> 00:38:18,180 vle di ke si li nan yon S oswa yon desann dwa isit la, 647 00:38:18,180 --> 00:38:20,520 li pral al touye kòd sa a. 648 00:38:20,520 --> 00:38:22,090 Se konsa, sa a, se bèl sou la men. 649 00:38:22,090 --> 00:38:24,830 Li anpeche nou gen fè plis kondisyon ak ifs ak bagay sa yo 650 00:38:24,830 --> 00:38:26,980 tankou sa. 651 00:38:26,980 --> 00:38:29,420 >> Se konsa, nou ap ale nan detèmine vitès la. 652 00:38:29,420 --> 00:38:31,020 Nou mete vitès la nan 0. 653 00:38:31,020 --> 00:38:33,910 Lè sa a, si se bourade moute epi yo pa desann, lè sa a nou 654 00:38:33,910 --> 00:38:37,450 mete y vitès la nan vitès negatif. 655 00:38:37,450 --> 00:38:42,930 Sonje negatif, paske an negatif y direksyon se leve. 656 00:38:42,930 --> 00:38:45,540 Ak pozitif y direksyon an se desann. 657 00:38:45,540 --> 00:38:47,510 Si desann se bourade epi yo pa leve, Lè sa a, nou ap 658 00:38:47,510 --> 00:38:53,860 ale nan mete l 'nan vitès pozitif, ki vle di pral desann ekran an. 659 00:38:53,860 --> 00:38:55,460 Menm bagay ak kite la ak dwa. 660 00:38:55,460 --> 00:38:58,200 >> Lè sa a, nou ap ale nan mete ajou pozisyon yo jis tankou anvan. 661 00:38:58,200 --> 00:39:00,740 Nou ap pral fè kolizyon deteksyon ak limit, 662 00:39:00,740 --> 00:39:04,290 men nou pa ap ale nan Reyajiste a vitès, paske vitès la se jis 663 00:39:04,290 --> 00:39:06,780 kontwole pa klavye a. 664 00:39:06,780 --> 00:39:11,230 Men, nou yo ale nan Reyajiste a pozisyon kenbe li nan fennèt la. 665 00:39:11,230 --> 00:39:14,400 Epi nou ap ale nan mete nan pozisyon nan struct a 666 00:39:14,400 --> 00:39:17,400 ak Lè sa a fè nan tout rann bagay yo devan. 667 00:39:17,400 --> 00:39:20,750 Se konsa, kite a wè ki sa li fè. 668 00:39:20,750 --> 00:39:25,460 Se konsa, asire SRCS-- kite a wè, sa a se hello6_keyboard.c. 669 00:39:25,460 --> 00:39:38,140 670 00:39:38,140 --> 00:39:38,820 >> Oh, pa gen okenn. 671 00:39:38,820 --> 00:39:40,150 Se konsa, nou gen kèk avètisman isit la. 672 00:39:40,150 --> 00:39:43,840 Epi sa a, tou senpleman di nou pa t ' tcheke pou tout kalite sèl posib 673 00:39:43,840 --> 00:39:45,610 nan evènman. 674 00:39:45,610 --> 00:39:49,470 Sa a OK, paske gen nan 236 nan yo oswa konsa. 675 00:39:49,470 --> 00:39:51,760 Se konsa, mwen pral inyore moun avètisman. 676 00:39:51,760 --> 00:39:53,530 Li nan toujou konpile amann. 677 00:39:53,530 --> 00:39:56,100 Se konsa, mwen ale nan jwe jwèt la. 678 00:39:56,100 --> 00:39:57,590 Li pa nan k ap deplase. 679 00:39:57,590 --> 00:40:04,150 Men koulye a,, lè m 'Mach sou klavye m' yo, Mwen kapab fè kèk mouvman WASD isit la, 680 00:40:04,150 --> 00:40:06,870 Mwen sèvi ak kle flèch m 'tou. 681 00:40:06,870 --> 00:40:10,070 Apre sa, remake, menm si mwen se peze dwat kounye a, 682 00:40:10,070 --> 00:40:13,804 li pa pral soti nan fennèt la, paske mwen Reyajiste l 'sou chak ankadreman. 683 00:40:13,804 --> 00:40:14,720 Se konsa, sa a, se bèl byen òdone. 684 00:40:14,720 --> 00:40:19,420 Ou ka imajine deplase Mario ak kèk kle flèch oswa yon bagay tankou sa. 685 00:40:19,420 --> 00:40:22,880 E wi, X la travay. 686 00:40:22,880 --> 00:40:26,900 >> Dosye Se konsa, nou ap ale final fè yon gade nan, hellow7_mouse. 687 00:40:26,900 --> 00:40:29,600 Sa a se sou kesyon pran opinyon sourit. 688 00:40:29,600 --> 00:40:34,790 Se konsa, nan yon sèl sa a, nou enpòte header nan matematik, 689 00:40:34,790 --> 00:40:38,100 paske nou ap ale nan gen yon ti kras nan matematik isit la. 690 00:40:38,100 --> 00:40:45,260 Menm fin vye granmoun, se li menm fin vye granmoun bagay, destinasyon, menm fin vye granmoun, wè ke anvan. 691 00:40:45,260 --> 00:40:46,910 Oke, sa a se enteresan. 692 00:40:46,910 --> 00:40:51,730 Se konsa, nou ap tounen nan sèlman tcheke pou SDL nan kite evènman. 693 00:40:51,730 --> 00:40:52,460 Poukisa se sa? 694 00:40:52,460 --> 00:40:55,110 Se konsa, ou ka jwenn opinyon sourit soti nan evènman yo. 695 00:40:55,110 --> 00:40:57,670 Tankou lè sourit la deplase, ou jwenn yon evènman pou sa. 696 00:40:57,670 --> 00:41:00,520 Lè yo bay yon bouton sourit bourade, ou ka jwenn yon evènman pou sa. 697 00:41:00,520 --> 00:41:05,760 >> Men, gen nan yon lòt, yon ti kras pi senp petèt, API pou jwenn D 'sourit. 698 00:41:05,760 --> 00:41:09,500 Epi sa a, tou senpleman SDL jwenn sourit leta yo. 699 00:41:09,500 --> 00:41:14,370 Se konsa, mwen gen yon int pou x ak y pou pozisyon an kurseur. 700 00:41:14,370 --> 00:41:18,910 Mwen pase l 'bay SDL_GetMouseState, ki etabli sa yo. 701 00:41:18,910 --> 00:41:22,200 Lè sa a se pozisyon nan nan kowòdone sistèm nan fenèt la. 702 00:41:22,200 --> 00:41:25,520 Se konsa, si mas la se nan gòch nan tèt nan fennèt la, ki ta 0, 0. 703 00:41:25,520 --> 00:41:28,040 704 00:41:28,040 --> 00:41:33,380 >> Koulye a, sa m ap pral fè se mwen pral fè yon ti kras nan matematik vektè. 705 00:41:33,380 --> 00:41:36,910 Mwen parye ou te panse ou pa t 'vle wè ke nan CS50, men isit la li ye. 706 00:41:36,910 --> 00:41:40,720 Mwen pral fè kèk vektè matematik yo ka resevwa vektè a 707 00:41:40,720 --> 00:41:43,840 soti nan imaj la kurseur la. 708 00:41:43,840 --> 00:41:53,280 Se konsa, poukisa mwen gen soustraksyon sa a isit la? 709 00:41:53,280 --> 00:42:01,350 Oke, si mwen jis itilize dèst .-- konsa Mwen bezwen li tradui sourit x la 710 00:42:01,350 --> 00:42:05,166 ak y pa mwatye lajè a ak wotè nan imaj la, 711 00:42:05,166 --> 00:42:08,040 paske mwen vle sant lan nan la imaj yo dwe ale nan direksyon pou sourit la, 712 00:42:08,040 --> 00:42:10,160 pa orijin nan imaj la. 713 00:42:10,160 --> 00:42:15,650 >> Se konsa, sa se sèlman a asire w mwen ap pale sou sant la nan imaj la isit la. 714 00:42:15,650 --> 00:42:19,510 Lè sa a, nou jwenn delta x ak y, ki se diferans lan soti nan sib la 715 00:42:19,510 --> 00:42:23,430 nan pozisyon aktyèl la nan imaj la. 716 00:42:23,430 --> 00:42:25,690 Lè sa a, nou ka jwenn nan distans isit la, ki 717 00:42:25,690 --> 00:42:29,140 a pwal Pitagò teyorèm, rasin kare nan x 718 00:42:29,140 --> 00:42:32,720 fwa x plis y fwa y. 719 00:42:32,720 --> 00:42:38,400 >> Koulye a, yo anpeche jig, e mwen ka montre ou sa sa a fè si mwen pa fè sa, 720 00:42:38,400 --> 00:42:45,830 si distans ant kurseur la ak sant la imaj gen mwens pase senk, 721 00:42:45,830 --> 00:42:48,730 Mwen jis pa pral pou avanse pou pi imaj la. 722 00:42:48,730 --> 00:42:52,900 Sinon, nou mete vitès la. 723 00:42:52,900 --> 00:42:55,960 Apre sa, nou mete l 'lè sa a, nan vitès ap toujou gen konstan. 724 00:42:55,960 --> 00:42:58,770 Ak rezilta a privye ki te tout sa a matematik se ke imaj la 725 00:42:58,770 --> 00:43:01,660 ki pral deplase nan direksyon pou kurseur la. 726 00:43:01,660 --> 00:43:08,470 >> Koulye a, li sanble ke SDL_GetMouseState, 727 00:43:08,470 --> 00:43:14,490 nan adisyon a mete nan x ak y agiman isit la, 728 00:43:14,490 --> 00:43:21,340 li tou retounen yon int ki koresponn nan eta a nan bouton sa yo sourit. 729 00:43:21,340 --> 00:43:24,600 Se konsa, nou pa ka li sa dirèkteman, men nou kapab 730 00:43:24,600 --> 00:43:29,090 itilize makro sa yo, yon sèl lojik operatè, pa sa ki pè, 731 00:43:29,090 --> 00:43:30,650 jis yon lojik ak. 732 00:43:30,650 --> 00:43:38,320 Se konsa, nou di bouton, ki se rezilta nan a SDL_GetMouseState nou an, si sa 733 00:43:38,320 --> 00:43:43,990 ak lojik, epi, sa a macro isit la, SDL_BUTTON_LEFT. 734 00:43:43,990 --> 00:43:47,680 >> Se konsa, sa a ki pral tou senpleman rezoud bitmap nan ki koresponn 735 00:43:47,680 --> 00:43:51,090 sou bò goch bouton sourit yo te bourade. 736 00:43:51,090 --> 00:43:55,470 Se konsa, si lojik nan ak rive ak li nan 737 00:43:55,470 --> 00:43:59,340 pa zewo, ki vle di bouton kite te bourade, 738 00:43:59,340 --> 00:44:04,320 Lè sa a, nou ap aktyèlman ale nan anile tou de x ak y nan vitès la, 739 00:44:04,320 --> 00:44:06,700 ki pral jis fè ki sove kite nan imaj. 740 00:44:06,700 --> 00:44:07,980 Pozisyon Mizajou. 741 00:44:07,980 --> 00:44:10,920 Kolizyon detèkte, wè li tout anvan, rann, tout dwa. 742 00:44:10,920 --> 00:44:11,510 Se pou yo fè li. 743 00:44:11,510 --> 00:44:14,200 744 00:44:14,200 --> 00:44:16,050 Se konsa, ou te resevwa fè SRCS = hello7_mouse.c. 745 00:44:16,050 --> 00:44:21,720 746 00:44:21,720 --> 00:44:22,220 Great. 747 00:44:22,220 --> 00:44:23,490 Pa gen erè. 748 00:44:23,490 --> 00:44:24,900 Apre sa, jwèt. 749 00:44:24,900 --> 00:44:26,440 >> Se konsa, isit mwen gen sourit mwen. 750 00:44:26,440 --> 00:44:29,000 Ak yon imaj a se vre kouri dèyè sourit m 'yo. 751 00:44:29,000 --> 00:44:33,140 Koulye a, nan yon jwèt ou fè, petèt sa a se tankou yon kouri dèyè lènmi 752 00:44:33,140 --> 00:44:35,240 pèsonaj ti kras ou oswa kèlkeswa sa. 753 00:44:35,240 --> 00:44:37,440 Men, isit la nou gen nan imaj kouri dèyè sourit la. 754 00:44:37,440 --> 00:44:41,000 Lè m 'klike sou, sourit la kòmanse kouri dèyè imaj la 755 00:44:41,000 --> 00:44:42,860 ak yon imaj a se kouri pou sourit. 756 00:44:42,860 --> 00:44:43,810 Se konsa, sa a, se trè fre. 757 00:44:43,810 --> 00:44:47,770 Apre sa, avi ankò, gen nan toujou kolizyon deteksyon isit la. 758 00:44:47,770 --> 00:44:53,930 >> Se konsa, ki se ti kras final la Demo mwen te fè fè a isit la. 759 00:44:53,930 --> 00:44:58,870 Li kite yo pran yon gade nan yon sèl bagay plis. 760 00:44:58,870 --> 00:45:02,970 Se konsa, tounen isit la, mwen mansyone jig sa a. 761 00:45:02,970 --> 00:45:05,000 Tout dwa. 762 00:45:05,000 --> 00:45:12,890 Se konsa, si distans ki pi piti a pase senk piksèl, Mwen te mete x ak y vitès a zewo. 763 00:45:12,890 --> 00:45:15,960 Kisa k ap pase si nou debarase m de sa? 764 00:45:15,960 --> 00:45:19,070 Se konsa, mwen pral jis fè sa a. 765 00:45:19,070 --> 00:45:23,820 766 00:45:23,820 --> 00:45:30,150 Tanpri eskize sa a style épouvantabl, men nou kòmante soti Kòd ki kòrèk la. 767 00:45:30,150 --> 00:45:38,080 Se konsa, mwen pral pou konsève pou sa ki epi fè nan menm lòd yo devan fè li. 768 00:45:38,080 --> 00:45:38,785 >> Tout dwa. 769 00:45:38,785 --> 00:45:39,660 Epi, koulye a sa k ap pase? 770 00:45:39,660 --> 00:45:43,260 771 00:45:43,260 --> 00:45:43,760 Bon. 772 00:45:43,760 --> 00:45:45,801 Nou ap toujou sa ki annapre yo sourit jis tankou anvan, 773 00:45:45,801 --> 00:45:49,310 Men, lè nou ale nan sourit la, nou te gen jig sa a brit. 774 00:45:49,310 --> 00:45:50,320 Ki sa ki k ap pase sou la? 775 00:45:50,320 --> 00:45:52,600 Oke, nan vektè nou an matematik, sonje nou te 776 00:45:52,600 --> 00:45:57,540 pran distans ki genyen ant a kurseur ak sant la nan imaj la? 777 00:45:57,540 --> 00:46:00,710 Bon, kòm ki apwòch 0, nou kòmanse ap resevwa 778 00:46:00,710 --> 00:46:06,280 tankou sa a sòt de konpòtman fou kote imaj la se sòt de 779 00:46:06,280 --> 00:46:08,910 tankou osile alantou kurseur la. 780 00:46:08,910 --> 00:46:12,000 Epi sa a, kreye jig sa a. 781 00:46:12,000 --> 00:46:13,020 Epi sa a, reyèlman lèd. 782 00:46:13,020 --> 00:46:15,103 Ak pwobableman ou pa fè sa vle jwèt ou fè sa, 783 00:46:15,103 --> 00:46:17,350 sof si li nan kèk sòt de efè espesyal. 784 00:46:17,350 --> 00:46:21,960 >> Se konsa, sa a, se rezon sa a genyen jis sa a abitrè 785 00:46:21,960 --> 00:46:27,150 koupe nan senk piksèl, kote nou di si li nan nan yon espas senk piksèl, nou ap bon. 786 00:46:27,150 --> 00:46:29,560 Nou pa bezwen pou avanse pou pi imaj la ankò. 787 00:46:29,560 --> 00:46:32,260 Se konsa, sa a, se sa k ap pase a. 788 00:46:32,260 --> 00:46:37,390 789 00:46:37,390 --> 00:46:40,870 >> Se konsa, sa a, se bèl anpil li. 790 00:46:40,870 --> 00:46:44,390 Ou kounye a konnen ki jan yo kreye yon fenèt, chaje yon imaj, 791 00:46:44,390 --> 00:46:49,330 trase yon imaj bò fennèt la, jwenn D 'klavye, jwenn opinyon sourit, 792 00:46:49,330 --> 00:46:52,190 gen nan yon pakèt moun sou lòt D 'ke ou pa ta 793 00:46:52,190 --> 00:46:56,070 konnen kòman ou kapab jwenn si ou jis pase yon kèk minit gade nan kopi dokiman yo. 794 00:46:56,070 --> 00:46:59,670 Se konsa, ou gen aktyèlman byen yon kèk zouti a jete ou an kounye a 795 00:46:59,670 --> 00:47:01,650 yo ekri yon jwèt plen véritable. 796 00:47:01,650 --> 00:47:05,030 >> Koulye a, tout jwèt bezwen kèk odyo, men dokiman an odyo 797 00:47:05,030 --> 00:47:06,460 se tou trè bon. 798 00:47:06,460 --> 00:47:09,200 Ak mwen se vle parye ke si ou konprann tout bagay sa yo 799 00:47:09,200 --> 00:47:14,560 nou te pale de jodi a ak imaj yo, ak sifas yo, 800 00:47:14,560 --> 00:47:18,370 fenèt yo, ak tout bagay, lè sa a n ap kalkile konnen API la odyo se pa 801 00:47:18,370 --> 00:47:21,170 pral fè sa ki move. 802 00:47:21,170 --> 00:47:27,420 Se konsa, mwen espere wè sa ou kreye ak SDL. 803 00:47:27,420 --> 00:47:31,595