1 00:00:00,000 --> 00:00:05,069 2 00:00:05,069 --> 00:00:06,110 THOMAS LIVELY: zote haki. 3 00:00:06,110 --> 00:00:07,450 Hi, kila mtu. 4 00:00:07,450 --> 00:00:08,690 Mimi nina Thomas Lively. 5 00:00:08,690 --> 00:00:15,160 Semina hii ni kwenda kuwa kuandika michezo P2 katika C kwa kutumia SDL. 6 00:00:15,160 --> 00:00:17,970 Hivyo najua wewe ni wote kuuliza, ndio, mimi kwa kweli 7 00:00:17,970 --> 00:00:22,050 wanataka kucheza michezo na kufanya michezo, lakini ni nini hii biashara SDL? 8 00:00:22,050 --> 00:00:25,320 Hivyo SDL ni maktaba C. 9 00:00:25,320 --> 00:00:28,270 Ni anasimama kwa Simple DirectMedia Tabaka. 10 00:00:28,270 --> 00:00:31,340 Na ni jukwaa msalaba, mchezo maendeleo maktaba. 11 00:00:31,340 --> 00:00:37,160 Ni kazi juu ya Windows, Mac, Linux, hata iOS na Android. 12 00:00:37,160 --> 00:00:40,380 Hushughulikia mambo kama upatikanaji wa mifumo ya redio 13 00:00:40,380 --> 00:00:44,900 kwa kompyuta, keyboard, na panya, joysticks, kama wao ni masharti. 14 00:00:44,900 --> 00:00:48,300 Kwenye simu, inaweza hata kufanya kugusa pembejeo na yote hayo. 15 00:00:48,300 --> 00:00:53,030 Na bila shaka, Hushughulikia graphics, kuchora mambo ya screen. 16 00:00:53,030 --> 00:00:56,470 >> Hivyo ni sana sana kutumika, ingawa unaweza kuwa na habari ya tukio hilo kabla. 17 00:00:56,470 --> 00:01:00,860 Ni kujengwa katika, kwa mfano, Chanzo injini valve ya, 18 00:01:00,860 --> 00:01:04,970 ambayo mamlaka michezo kama vile Portal na Timu ya Ngome 2. 19 00:01:04,970 --> 00:01:08,680 Ni pia katika idadi kubwa sana ya michezo indie kwamba kuja nje, 20 00:01:08,680 --> 00:01:13,545 hivyo mimi nina msisimko kuona nini yote itakuwa kufanya na hayo. 21 00:01:13,545 --> 00:01:20,000 >> Malengo ya semina ni kupata wewe yaliyowekwa kuwa zinazoendelea na SDL. 22 00:01:20,000 --> 00:01:22,700 Tunakwenda kujifunza jinsi kujenga mchezo dirisha. 23 00:01:22,700 --> 00:01:26,130 Tunakwenda kujenga sprites, ambayo ni taswira katika mchezo wako 24 00:01:26,130 --> 00:01:27,744 ambazo zinaweza kuzunguka. 25 00:01:27,744 --> 00:01:29,910 Tunakwenda kujifunza jinsi kwa na hai sprites, 26 00:01:29,910 --> 00:01:32,910 hivyo hoja yao kote, kufanya nao kubadilika baada ya muda. 27 00:01:32,910 --> 00:01:35,580 Na tunakwenda kujifunza jinsi kukamata panya na keyboard 28 00:01:35,580 --> 00:01:38,240 pembejeo kutoka kwa kompyuta. 29 00:01:38,240 --> 00:01:41,550 Nini sisi si kuzungumza kuhusu leo ​​ni 3D graphics, 30 00:01:41,550 --> 00:01:45,520 kwa sababu hiyo ni ngumu sana somo kwamba hatuna muda kwa ajili ya. 31 00:01:45,520 --> 00:01:49,010 Sisi si kujifunza jinsi ya kucheza redio juu ya michezo yetu. 32 00:01:49,010 --> 00:01:53,300 Na hatutakuwa na kujenga kwa jambo lolote, lakini Linux. 33 00:01:53,300 --> 00:01:58,330 >> Sasa tahadhari kuna watu kwamba, hopefully, ifikapo mwishoni semina hiyo, 34 00:01:58,330 --> 00:02:01,660 wewe utakuwa na starehe na SDL nyaraka, 35 00:02:01,660 --> 00:02:05,370 hivyo wewe utakuwa na uwezo wa kwenda kufikiri jinsi ya kucheza redio kwa ajili yako mwenyewe. 36 00:02:05,370 --> 00:02:12,150 Pia kujenga kwa Mac au PC wanapaswa kufanya kazi sawa kama kujenga kwa ajili ya Linux, 37 00:02:12,150 --> 00:02:14,700 lakini kuanzisha kinaendelea kuwa ni kidogo tofauti. 38 00:02:14,700 --> 00:02:17,700 Hivyo unapaswa kuwa na uwezo wa kufikiri jinsi ya kufanya mambo haya 39 00:02:17,700 --> 00:02:20,900 ifikapo mwishoni mwa semina ya leo. 40 00:02:20,900 --> 00:02:26,980 >> Hivyo kwa kuanzisha, tunakwenda kutumia mashine virtual. 41 00:02:26,980 --> 00:02:31,010 Tunataka kutumia CS50 IDE, kwa sababu tunakwenda tu kuwa kuandika katika C. 42 00:02:31,010 --> 00:02:35,120 Lakini tangu IDE si browser, sisi Huwezi kuunda madirisha mpya au kuonyesha 43 00:02:35,120 --> 00:02:36,410 graphics katika hilo. 44 00:02:36,410 --> 00:02:38,450 Hivyo tunahitaji mashine virtual. 45 00:02:38,450 --> 00:02:47,790 Hivyo unaweza kufuata maelekezo hapa katika manual.CS50.net/appliance/15 46 00:02:47,790 --> 00:02:53,290 kufunga rasmi appliance CS50, ambayo ni tu Linux virtual 47 00:02:53,290 --> 00:02:55,110 mashine. 48 00:02:55,110 --> 00:02:58,090 >> Na kisha mara moja una kwamba wote kuweka up-- ni 49 00:02:58,090 --> 00:03:02,090 inaweza kuchukua muda kidogo, kwa sababu download-- kubwa sana wewe ni kwenda 50 00:03:02,090 --> 00:03:07,060 kuendesha katika VM sudo anayeweza-kupata update. 51 00:03:07,060 --> 00:03:09,410 Na kwamba kweli kinachoendelea update programu zote 52 00:03:09,410 --> 00:03:12,670 fedha kwenye mashine yako virtual. 53 00:03:12,670 --> 00:03:20,130 >> Baada ya hapo, wewe ni kwenda kukimbia sudo anayeweza-kupata kufunga, libsdl2-2.0-0, 54 00:03:20,130 --> 00:03:27,960 libsdl2-DBG, libsdl2-dev, na kuongeza libsdl2-picha-2.0-0, 55 00:03:27,960 --> 00:03:32,560 libsdl2-picha-DBG, na libsdl2-picha-dev. 56 00:03:32,560 --> 00:03:33,640 Hivyo ni nini kwamba kufanya? 57 00:03:33,640 --> 00:03:38,440 Hiyo tu installs utatuzi Maelezo, nyaraka, headers, 58 00:03:38,440 --> 00:03:41,260 na binaries kwa ajili ya maktaba hizo mbili. 59 00:03:41,260 --> 00:03:45,090 Mara kwa mara ya zamani, SDL 2.0, na maktaba nyingine 60 00:03:45,090 --> 00:03:50,110 aitwaye SDL Image, ambayo sisi ni kwenda kuwa na kutumia 61 00:03:50,110 --> 00:03:54,560 kupakia files picha katika mchezo wetu. 62 00:03:54,560 --> 00:03:57,860 >> Hivyo mara tu na kwamba pia kwamba, tu wakati anauliza, 63 00:03:57,860 --> 00:04:01,100 wewe tu aina ndiyo, hit Enter kufunga vifurushi hizo, 64 00:04:01,100 --> 00:04:04,430 na basi unapaswa kuwa vizuri kwenda. 65 00:04:04,430 --> 00:04:14,800 Hivyo kupata usambazaji kificho, wewe can-- loo wapenzi, hii si updated. 66 00:04:14,800 --> 00:04:18,480 Isipokuwa kama una GitHub account-- kama una akaunti GitHub, 67 00:04:18,480 --> 00:04:24,450 unaweza kufanya hivyo Git msaidizi amri ya repo 68 00:04:24,450 --> 00:04:30,490 na kwamba itakuwa kushusha Git repo kwa kificho vyote vilivyomo, 69 00:04:30,490 --> 00:04:31,700 hivyo kwamba itabidi kanuni. 70 00:04:31,700 --> 00:04:36,470 >> Kama huna GitHub akaunti, nini unapaswa kufanya ni aina 71 00:04:36,470 --> 00:04:48,867 wgithttps: //github.com/tlively/sdl seminar-- na hapa ni 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 Hivyo tena, hiyo ni exact URL, isipokuwa ni kwenda kuwa 75 00:04:59,220 --> 00:05:09,010 tlively / SDL_seminar / master.zip na unatumia wgit ya kushusha jambo hilo. 76 00:05:09,010 --> 00:05:12,940 Na kisha unaweza tu unzip archive kwamba 77 00:05:12,940 --> 00:05:14,900 na kisha itabidi chanzo kanuni zote. 78 00:05:14,900 --> 00:05:17,580 Hivyo pole juu ya hilo. 79 00:05:17,580 --> 00:05:23,880 Na kisha kificho pia kuwa mwenyeji katika CS50 semina ya mtandao ukurasa katika michache 80 00:05:23,880 --> 00:05:25,230 Siku. 81 00:05:25,230 --> 00:05:26,590 >> Sawa. 82 00:05:26,590 --> 00:05:29,932 Hivyo ni jinsi gani sisi kupata kuanza kuandika mchezo wetu wenyewe? 83 00:05:29,932 --> 00:05:31,890 Naam, jambo la kwanza tunakwenda wanataka kufanya 84 00:05:31,890 --> 00:05:34,740 ni kuangalia nyaraka SDL. 85 00:05:34,740 --> 00:05:37,020 Hivyo hapa ni VM. 86 00:05:37,020 --> 00:05:38,720 Na hapa ni ukurasa wa mtandao. 87 00:05:38,720 --> 00:05:40,340 Nimekuwa kutizamwa kuishi libsdl.org. 88 00:05:40,340 --> 00:05:43,110 89 00:05:43,110 --> 00:05:48,140 Nini mimi kwenda kufanya hapa ni kwenda juu kwa sidebar, chini ya nyaraka, 90 00:05:48,140 --> 00:05:51,040 na click kwenye wiki. 91 00:05:51,040 --> 00:05:56,870 Hii kuleta mimi wiki kwamba ina zaidi ya nyaraka kwa ajili ya SDL. 92 00:05:56,870 --> 00:06:01,360 Zaidi ya kwenye sidebar hapa, tuko kwenda bonyeza API kwa jamii, 93 00:06:01,360 --> 00:06:04,300 kwa sababu ni kwenda kutoa sisi nzuri categorical maoni 94 00:06:04,300 --> 00:06:07,770 ya API nzima kwa SDL. 95 00:06:07,770 --> 00:06:12,390 >> Hivyo kwa mfano, tuna initialization msingi 96 00:06:12,390 --> 00:06:18,380 na kufunga chini, aina zote za mambo ya kiutawala kwa kutumia SDL, 97 00:06:18,380 --> 00:06:21,630 na kisha tuna sehemu kwa ajili ya kuangazishwa mambo ya screen. 98 00:06:21,630 --> 00:06:23,000 Hiyo ni video. 99 00:06:23,000 --> 00:06:25,790 Matukio pembejeo, hiyo ni kupata pembejeo kutoka keyboard, 100 00:06:25,790 --> 00:06:29,710 kupata pembejeo kutoka panya, na joystick, kama una hiyo hata. 101 00:06:29,710 --> 00:06:32,901 Kuna nguvu maoni kwa mambo ni kama controllers mchezo, ambayo 102 00:06:32,901 --> 00:06:34,150 sisi siyo kwenda kuzungumza kuhusu. 103 00:06:34,150 --> 00:06:35,630 Na hapa ni kusikiliza. 104 00:06:35,630 --> 00:06:38,940 Na kisha kuna kundi la wengine mambo ambayo SDL anaweza kufanya kwa ajili yenu. 105 00:06:38,940 --> 00:06:43,830 >> Lakini leo sisi ni kwenda kuzingatia juu ya initialization hapa, 106 00:06:43,830 --> 00:06:48,332 kuonyesha picha katika video sehemu, na utunzaji matukio ya pembejeo. 107 00:06:48,332 --> 00:06:50,290 Basi hizi ni kuu sehemu ya nyaraka 108 00:06:50,290 --> 00:06:53,050 kwamba unapaswa kuwa hofu juu. 109 00:06:53,050 --> 00:06:57,170 Kwa ajili ya kujifurahisha, kama sisi kwenda juu hapa na bonyeza API majina yao, 110 00:06:57,170 --> 00:07:04,350 tunaweza kuona orodha ya kila Jambo moja katika maktaba SDL. 111 00:07:04,350 --> 00:07:11,330 Hivyo kazi hizi zote, enumerations, miundo, kiasi mambo ya mambo, 112 00:07:11,330 --> 00:07:12,820 herufi utaratibu. 113 00:07:12,820 --> 00:07:14,580 Na kwa uwazi, mpaka unajua unafanya, 114 00:07:14,580 --> 00:07:19,100 hii si kwenda kuwa na manufaa sana, ambayo ni kwa nini tunafanya API kwa jamii. 115 00:07:19,100 --> 00:07:20,810 >> Basi hebu kuanza. 116 00:07:20,810 --> 00:07:25,680 Hopefully wameweza tayari kupakuliwa ugawaji kanuni. 117 00:07:25,680 --> 00:07:30,070 Na hivyo nini unaweza kufanya ni, haki hapa katika appliance CS50, 118 00:07:30,070 --> 00:07:31,150 tu kufungua wastaafu. 119 00:07:31,150 --> 00:07:33,750 120 00:07:33,750 --> 00:07:34,440 Twende sasa. 121 00:07:34,440 --> 00:07:40,740 Hivyo nimekuwa tayari kupakuliwa usambazaji kificho kwa kutumia zip 122 00:07:40,740 --> 00:07:41,690 mbinu. 123 00:07:41,690 --> 00:07:43,140 Na nimekuwa unzipped yake. 124 00:07:43,140 --> 00:07:46,120 Hivyo hapa ni katika SDL semina bwana. 125 00:07:46,120 --> 00:07:49,750 Hivyo mimi nina kwenda katika saraka huo. 126 00:07:49,750 --> 00:07:55,310 Na kile sisi kuona hapa ni kwamba tuna saba mafaili C. 127 00:07:55,310 --> 00:07:58,070 Na hii ni kwenda kificho tunakwenda kuwa na kuangalia leo. 128 00:07:58,070 --> 00:08:00,040 Tuna Makefile. 129 00:08:00,040 --> 00:08:06,950 Na tuna directory rasilimali, ambayo tu ina picha 130 00:08:06,950 --> 00:08:09,070 kuwa wewe utakuwa kuona hivi karibuni kutosha. 131 00:08:09,070 --> 00:08:16,060 >> Basi hebu wazi juu files haya kutumia G-Hariri mhariri. 132 00:08:16,060 --> 00:08:22,000 Hivyo nataka kufungua mafaili yote ambayo yanayoanza kwa hodi na kuishia na c. 133 00:08:22,000 --> 00:08:23,380 Twende sasa. 134 00:08:23,380 --> 00:08:28,180 Hivyo hiyo ni dirisha dogo, hivyo sisi ni kwenda kujaribu kufanya kwamba kubwa. 135 00:08:28,180 --> 00:08:28,900 Hapana, akaenda zake. 136 00:08:28,900 --> 00:08:32,836 137 00:08:32,836 --> 00:08:34,570 >> Sawa. 138 00:08:34,570 --> 00:08:37,959 Hivyo hapa ni sana kwanza faili tunakwenda kuangalia. 139 00:08:37,959 --> 00:08:39,000 Ni wito hello1_sdl.c. 140 00:08:39,000 --> 00:08:41,890 141 00:08:41,890 --> 00:08:47,980 Na hii yote haina ni initialize SDL maktaba ili tuweze kuanza kutumia. 142 00:08:47,980 --> 00:08:51,550 Jinsi gani unajua kuja na kanuni hii wewe mwenyewe? 143 00:08:51,550 --> 00:08:53,850 Naam, kama sisi kuangalia juu ya katika nyaraka 144 00:08:53,850 --> 00:08:58,040 na sisi kwenda katika initialization na kufunga chini ya kifungu, 145 00:08:58,040 --> 00:09:02,230 itakuja kutuambia zote kuhusu jinsi ya initialize SDL. 146 00:09:02,230 --> 00:09:06,630 Hivyo dhahiri kusoma hii wakati mwingine. 147 00:09:06,630 --> 00:09:09,230 Ni kwenda kukuambia yote kuhusu nini kinaendelea hapa. 148 00:09:09,230 --> 00:09:14,360 Lakini crux kuu wa mambo ni kwamba tunahitaji wito huu SDL kazi Katika Ni 149 00:09:14,360 --> 00:09:18,910 na kuupitisha ni aina gani ya mambo tunataka maktaba initialize. 150 00:09:18,910 --> 00:09:23,620 Hivyo katika kesi yetu, sisi ni kwenda tu initialize video kwa sasa, 151 00:09:23,620 --> 00:09:26,690 ili tuweze kuanza kuonyesha picha. 152 00:09:26,690 --> 00:09:32,370 >> Zaidi ya hapa, unaweza kuona kama sisi click kwenye SDL Katika Ni, sisi 153 00:09:32,370 --> 00:09:36,160 Unaweza kupata taarifa zaidi, ikiwa ni pamoja na thamani ya kurudi. 154 00:09:36,160 --> 00:09:39,050 Hivyo tunaona hapa kwamba returnes sifuri juu ya mafanikio. 155 00:09:39,050 --> 00:09:43,320 Hivyo katika kanuni zetu, tunakwenda kuona kama haina kurudi sifuri, 156 00:09:43,320 --> 00:09:47,020 na kama hana kurudi sifuri, hivyo ilikuwa si mafanikio, 157 00:09:47,020 --> 00:09:50,650 kisha tunakwenda tu magazeti kosa kutumia kazi hii nyingine, 158 00:09:50,650 --> 00:09:56,260 SDL kupata kosa, ambayo anarudi kamba kuelezea makosa ambayo yalitokea. 159 00:09:56,260 --> 00:09:58,510 Tunakwenda magazeti kwamba kosa na kisha tuko tu 160 00:09:58,510 --> 00:10:02,270 kwenda exit mpango na makosa kanuni. 161 00:10:02,270 --> 00:10:06,470 >> Kisha kitu kingine kwamba tunahitaji kufanya ni, kabla ya exits mpango, 162 00:10:06,470 --> 00:10:10,830 kama sisi mafanikio initialized SDL, sisi tu haja ya simu yake SDL kujiondoa. 163 00:10:10,830 --> 00:10:15,750 Na kwamba itakuja kushughulikia kusafisha yote ya rasilimali SDL ya ndani kwa ajili yetu. 164 00:10:15,750 --> 00:10:21,240 Hivyo nyaraka there-- tena, hapa sisi ni katika initialization 165 00:10:21,240 --> 00:10:23,640 na kufunga chini ya kifungu ya nyaraka. 166 00:10:23,640 --> 00:10:26,680 Unaweza bonyeza tu juu ya kazi hapa, SDL kujiondoa, 167 00:10:26,680 --> 00:10:28,700 na unaweza kusoma yote juu kuwa vilevile. 168 00:10:28,700 --> 00:10:31,400 Na mengi ya haya kazi kurasa nyaraka 169 00:10:31,400 --> 00:10:35,630 kuwa mfano kificho, hivyo hii ni rasilimali nzuri sana. 170 00:10:35,630 --> 00:10:39,610 Dhahiri kutumia muda kusoma sehemu ya wiki hii 171 00:10:39,610 --> 00:10:42,520 kama wewe ni kwenda kufanya hii kwa ajili ya mradi. 172 00:10:42,520 --> 00:10:43,760 >> Sawa. 173 00:10:43,760 --> 00:10:46,590 Hivyo hiyo ni mpango wetu mzima. 174 00:10:46,590 --> 00:10:53,935 Nini tunaweza kufanya sasa is-- mimi nina kwenda kufungua Makefile hapa, 175 00:10:53,935 --> 00:10:56,150 hivyo mimi nina kwenda kuchukua kuangalia jinsi kazi. 176 00:10:56,150 --> 00:10:59,500 Na ni Makefile rahisi sana, sawa na nini umefanya kuona mbele. 177 00:10:59,500 --> 00:11:04,010 Moja ya tofauti kubwa ni kwamba, hapa, hii 178 00:11:04,010 --> 00:11:07,870 kinaenda kuingiza matokeo ya mbio amri hii, ambayo wameweza tayari 179 00:11:07,870 --> 00:11:10,850 imewekwa kama umefanya imewekwa SDL. 180 00:11:10,850 --> 00:11:13,230 Na hii ni amri ambayo inaenda kuzalisha 181 00:11:13,230 --> 00:11:16,710 baadhi bendera za ziada kwa ajili compiler. 182 00:11:16,710 --> 00:11:22,050 >> Mbali na hilo, sisi ni kutoa ni amri kawaida wote, ikiwa ni pamoja na 183 00:11:22,050 --> 00:11:23,430 amri hizi mbili. 184 00:11:23,430 --> 00:11:30,270 Hivyo -lsdl2-picha Hushughulikia kuunganisha katika SDL maktaba ya picha. 185 00:11:30,270 --> 00:11:36,200 Na-LM kweli kinafanya kuunganisha katika kiwango cha C math maktaba. 186 00:11:36,200 --> 00:11:40,630 Kwa hiyo sisi si kwenda haja wale kwa wote wa C mafaili yetu, 187 00:11:40,630 --> 00:11:43,900 lakini sisi tu kuziweka katika ili tuweze kutumia Makefile sawa kwa kila kitu 188 00:11:43,900 --> 00:11:44,816 bila marekebisho. 189 00:11:44,816 --> 00:11:46,970 190 00:11:46,970 --> 00:11:50,080 >> Juu hapa katika vyanzo, hii ni mahali ambapo wewe d 191 00:11:50,080 --> 00:11:53,680 kuweka mafaili kwamba walikuwa wanakwenda kukusanya kwa ajili ya mradi wako. 192 00:11:53,680 --> 00:11:57,570 Lakini kwa kuwa kila mmoja C wangu mafaili hapa ina kazi kuu, 193 00:11:57,570 --> 00:12:00,000 itakuja kupata kuchanganyikiwa kama sisi kuziweka zote katika. 194 00:12:00,000 --> 00:12:06,930 Hivyo nina kwenda kwa kusema tu, kwa sasa, hello1_sdl.c, 195 00:12:06,930 --> 00:12:11,150 ambayo ni moja sisi alimwangalia. 196 00:12:11,150 --> 00:12:18,740 Hivyo kama mimi kwenda nyuma zaidi hapa, siwezi kufanya kufanya. 197 00:12:18,740 --> 00:12:22,160 Na yale iliyo yafanya ni kama tu ulioandaliwa kwamba faili kwanza. 198 00:12:22,160 --> 00:12:28,780 Na kisha tunaweza aina ./game, kwa sababu ni kutekelezwa ni zinazozalishwa. 199 00:12:28,780 --> 00:12:31,660 Na wote ilivyokuwa mara magazeti initialization mafanikio. 200 00:12:31,660 --> 00:12:33,300 Hivyo sisi alifanya kitu sahihi. 201 00:12:33,300 --> 00:12:36,200 Lakini hiyo ilikuwa ni aina ya boring, kwa sababu hatukuona dirisha, 202 00:12:36,200 --> 00:12:37,900 hakuna kitu wakiogelea. 203 00:12:37,900 --> 00:12:41,030 >> Kubwa sana, tulipata SDL initialized. 204 00:12:41,030 --> 00:12:43,520 Sasa, hebu kuondoka na kitu kidogo zaidi ya kuvutia. 205 00:12:43,520 --> 00:12:54,700 Hivyo hapa tuna hello2_window.c, na hii ni kwenda kuwa kidogo zaidi 206 00:12:54,700 --> 00:13:00,010 tata C mpango huo initializes SDL tu kama kabla, 207 00:13:00,010 --> 00:13:04,250 ila sasa sisi ni pia kwenda initialize SDL timer. 208 00:13:04,250 --> 00:13:07,720 Na hii ni kwenda hebu kupata timer ndani 209 00:13:07,720 --> 00:13:10,550 na kazi ya matumizi yanayohusiana na wakati. 210 00:13:10,550 --> 00:13:11,920 >> Na kisha hebu angalia chini hapa. 211 00:13:11,920 --> 00:13:16,840 Tunachofanya ni tuna pointer hii kwa SDL dirisha struct, ambayo 212 00:13:16,840 --> 00:13:21,160 ni kwenda kuwa kuundwa kwa wito huu kwa kazi, SDL kuunda dirisha. 213 00:13:21,160 --> 00:13:25,380 Sasa, hii inachukua mengi ya hoja, hivyo hebu kwenda kuangalia nyaraka. 214 00:13:25,380 --> 00:13:27,930 Hivyo tena, mimi nina kwenda kwa API kwa jamii, mimi nina 215 00:13:27,930 --> 00:13:33,820 wakishuka video hapa, na kwanza sehemu, kwa kuonyesha usimamizi dirisha. 216 00:13:33,820 --> 00:13:36,470 Hivyo hii ina sehemu tani ya mambo ndani yake, 217 00:13:36,470 --> 00:13:39,970 lakini kama wewe kuangalia njia kazi hizi, itabidi 218 00:13:39,970 --> 00:13:43,620 kuona kwamba pengine ni moja sisi wanataka inaitwa SDL kuunda dirisha, 219 00:13:43,620 --> 00:13:46,600 ambayo hufanyika kuwa haki juu. 220 00:13:46,600 --> 00:13:49,080 >> Na hivyo hii ni nyaraka kwa ajili ya kazi hii. 221 00:13:49,080 --> 00:13:53,710 Dirisha kwenda na cheo, x na msimamo y kwenye screen, 222 00:13:53,710 --> 00:13:56,960 itakuja na upana, urefu, na kisha kwenda kuchukua baadhi bendera. 223 00:13:56,960 --> 00:14:01,220 Sasa, sisi si kweli huduma kuhusu yoyote ya bendera hizi sasa hivi, 224 00:14:01,220 --> 00:14:04,560 lakini kama wewe alitaka kufanya kitu kama kufanya kamili dirisha screen, 225 00:14:04,560 --> 00:14:07,920 unaweza kuchukua kuangalia hilo. 226 00:14:07,920 --> 00:14:13,190 Kwa sasa, tunakwenda tu kutumia maadili haya maalum, 227 00:14:13,190 --> 00:14:18,775 SDL dirisha pamoja na unaozingatia kwa x na y ili 228 00:14:18,775 --> 00:14:21,800 tu kujenga dirisha katikati ya screen yetu. 229 00:14:21,800 --> 00:14:24,370 >> Hivyo kwamba ni nini kwamba anafanya. 230 00:14:24,370 --> 00:14:27,960 Na kama dirisha hutokea kwa kuwa null, maana kuna kosa, 231 00:14:27,960 --> 00:14:32,570 kisha tena tunakwenda tu kwa magazeti makosa kwa kutumia SDL kupata kosa. 232 00:14:32,570 --> 00:14:36,570 Na kisha kwa sababu sisi initialized SDL, sisi sasa haja ya kulifunga. 233 00:14:36,570 --> 00:14:40,900 Hivyo tunatoa wito SDL kujiondoa kabla kurudi moja kwa kuu. 234 00:14:40,900 --> 00:14:42,905 >> Hivyo tuna dirisha hili wazi hopefully. 235 00:14:42,905 --> 00:14:44,613 Na nini tunakwenda kufanya ni tunakwenda 236 00:14:44,613 --> 00:14:50,340 kuwaita SDL kwa milliseconds 5000, ambayo ni sawa na sekunde tano. 237 00:14:50,340 --> 00:14:55,640 Na wakati sisi ni kosa na kwamba, itakuja kuharibu dirisha, 238 00:14:55,640 --> 00:14:59,470 kusafisha maktaba SDL, na kujinasua katika mpango huo. 239 00:14:59,470 --> 00:15:05,240 Basi hebu kwenda mbele na kutoa kwamba risasi. 240 00:15:05,240 --> 00:15:08,660 >> Hivyo sasa badala ya kubadilisha Makefile kila wakati, 241 00:15:08,660 --> 00:15:12,180 Naweza tu kufanya kufanya, na kisha juu ya mstari amri, 242 00:15:12,180 --> 00:15:16,090 kusema vyanzo sawa na halafu faili tuko kuandaa. 243 00:15:16,090 --> 00:15:17,090 Hivyo ni hello2_window.c. 244 00:15:17,090 --> 00:15:21,390 245 00:15:21,390 --> 00:15:21,890 Ajabu. 246 00:15:21,890 --> 00:15:22,970 Hakuna erros. 247 00:15:22,970 --> 00:15:26,085 Sasa, kama sisi kukimbia kutekelezwa yetu, tunaona dirisha hili. 248 00:15:26,085 --> 00:15:27,960 Sasa kuna wachache matatizo na dirisha. 249 00:15:27,960 --> 00:15:32,820 Tunaweza kusonga ni kuzunguka, lakini ina hii Junk nyuma ndani yake. 250 00:15:32,820 --> 00:15:34,660 Hivyo hatuna inayotolewa kitu chochote, na hivyo ni 251 00:15:34,660 --> 00:15:38,210 tu kamili ya taka, ambayo ni kiasi pretty nini tunatarajia. 252 00:15:38,210 --> 00:15:41,010 >> Aidha, hatuwezi funga dirisha. 253 00:15:41,010 --> 00:15:44,780 Mimi uendelezaji X huu katika kona na hakuna kitu kinatokea. 254 00:15:44,780 --> 00:15:47,840 Hivyo tutaweza kuona jinsi ya kurekebisha kwamba katika kidogo. 255 00:15:47,840 --> 00:15:51,750 Basi hebu kurekebisha sehemu ambapo dirisha ni kamili ya takataka kwanza. 256 00:15:51,750 --> 00:16:00,850 Hivyo kama sisi kwenda juu ya hello3_image.c, nini tunaweza kuona ni kwamba tumekuwa aliongeza kuwa wachache 257 00:16:00,850 --> 00:16:03,360 mambo zaidi hapa. 258 00:16:03,360 --> 00:16:08,740 Tumekuwa aliongeza kichwa hii mpya faili ya kupata kazi timer. 259 00:16:08,740 --> 00:16:11,490 Nadhani sisi alifanya hivyo katika mwisho moja, pia, na sikuwa kutaja hayo. 260 00:16:11,490 --> 00:16:13,550 Lakini sasa kwa sababu tuko kufanya kazi na picha, 261 00:16:13,550 --> 00:16:18,720 tunahitaji ni pamoja na SDL picha header faili vilevile. 262 00:16:18,720 --> 00:16:22,087 Hivyo kitu kimoja ni kama kabla, initializing SDL hapa, 263 00:16:22,087 --> 00:16:23,420 sawa kukabiliana na kujenga madirisha. 264 00:16:23,420 --> 00:16:25,380 Tumeona kwamba kabla ya sasa. 265 00:16:25,380 --> 00:16:29,870 >> Sasa tunahitaji kujenga kitu kinachoitwa renderer, ambayo ni aina ya huenda pamoja 266 00:16:29,870 --> 00:16:30,800 kwa dirisha. 267 00:16:30,800 --> 00:16:33,860 Lakini ni aina ya abstract kitu hiyo ni 268 00:16:33,860 --> 00:16:37,370 msimamizi wa kufanya haya yote kuchora shughuli kwa dirisha. 269 00:16:37,370 --> 00:16:41,580 Na ni kweli sambamba kwa mpango kubeba 270 00:16:41,580 --> 00:16:47,880 ndani ya graphics vifaa katika yako kompyuta au simu yako au chochote. 271 00:16:47,880 --> 00:16:51,005 Hivyo bendera tunataka kupitisha it-- na unaweza kuangalia nyaraka 272 00:16:51,005 --> 00:16:56,160 kupata maelezo zaidi here-- ni kwenda kuwa SDL atatoa kasi, ambayo 273 00:16:56,160 --> 00:16:58,550 ina maana itakuja kuwa kutumia graphics vifaa 274 00:16:58,550 --> 00:17:01,490 na si tu kuigwa katika programu. 275 00:17:01,490 --> 00:17:07,390 >> Na sisi ni kwenda kutumia SDL Kionyeshi PRESENTVSYNC. 276 00:17:07,390 --> 00:17:12,280 VSync ni jambo kwamba tu hufanya graphics yako kuangalia bora na kuzuia 277 00:17:12,280 --> 00:17:14,970 hii kitu inayoitwa screen ugaidi, ambapo nusu 278 00:17:14,970 --> 00:17:17,720 ya sura moja na nusu ya ujao sura kupata inayotolewa kwa wakati mmoja 279 00:17:17,720 --> 00:17:20,056 na inaonekana kubwa. 280 00:17:20,056 --> 00:17:23,130 Lakini tena, unaweza kwenda kusoma juu ya hilo juu yako mwenyewe. 281 00:17:23,130 --> 00:17:24,319 >> Hivyo tuna baadhi bendera hapa. 282 00:17:24,319 --> 00:17:27,810 Na hivyo sisi ni kwenda tu kuwaita huu SDL kazi kujenga renderer. 283 00:17:27,810 --> 00:17:31,340 Tunakwenda kuwapa dirisha kujiunga na kwamba renderer. 284 00:17:31,340 --> 00:17:34,520 Hasi moja ina maana sisi hawajali nini graphics dereva sisi ni kwenda kutumia. 285 00:17:34,520 --> 00:17:36,603 Hivyo kwamba lazima pretty much iwe hasi moja, 286 00:17:36,603 --> 00:17:39,010 isipokuwa wewe kujua kuhusu graphics madereva. 287 00:17:39,010 --> 00:17:41,650 Na kisha tunakwenda tu kupita bendera yetu. 288 00:17:41,650 --> 00:17:47,240 Hivyo kama kwamba anarudi null, basi tuko kwenda magazeti makosa kama kawaida, 289 00:17:47,240 --> 00:17:49,550 lakini kisha sisi ni pia kwenda kuharibu dirisha 290 00:17:49,550 --> 00:17:54,970 kusafisha rasilimali hizo kabla wito SDL kujiondoa na kurudi. 291 00:17:54,970 --> 00:17:58,110 >> Sasa, sehemu ya kuvutia hapa ni mahali ambapo sisi shehena mfano wetu 292 00:17:58,110 --> 00:18:00,870 kutumia hii IMG_load kazi. 293 00:18:00,870 --> 00:18:04,050 Hii ni kazi tu tunakwenda kutumia kutoka SDL maktaba ya picha. 294 00:18:04,050 --> 00:18:05,480 Ni moja tu tunahitaji. 295 00:18:05,480 --> 00:18:12,950 Ni kazi ambayo inachukua kamba kuwa ni njia ya rasilimali yoyote picha. 296 00:18:12,950 --> 00:18:18,024 Na inaweza kuwa .png, GIF, bitmap, yeyote mambo hayo. 297 00:18:18,024 --> 00:18:19,690 Na hii ndiyo maana kazi hii ni nzuri. 298 00:18:19,690 --> 00:18:22,560 Inaweza kushughulikia pretty much mfumo wowote. 299 00:18:22,560 --> 00:18:27,240 Mizigo yake katika kumbukumbu na maduka hayo kama kitu kinachoitwa SDL uso. 300 00:18:27,240 --> 00:18:34,660 >> Sasa SDL uso ni tu struct kwamba inawakilisha takwimu picha katika kumbukumbu. 301 00:18:34,660 --> 00:18:38,054 Hivyo unaweza kusoma zaidi kuhusu kwamba katika nyaraka hizo mbili. 302 00:18:38,054 --> 00:18:40,720 Na kama makosa hayo, kisha tuko kwenda kufanya jambo zima ambapo 303 00:18:40,720 --> 00:18:44,480 sisi magazeti makosa, karibu yetu rasilimali, na kisha kuacha mpango. 304 00:18:44,480 --> 00:18:48,970 Sasa jambo la kuvutia ni, kabla ya tunaweza kuchora picha hii kwa dirisha, 305 00:18:48,970 --> 00:18:51,390 tunahitaji kweli kufanya hivyo texture. 306 00:18:51,390 --> 00:18:54,460 Sasa sambamba texture na takwimu picha kubeba 307 00:18:54,460 --> 00:18:57,820 katika kumbukumbu vifaa mchoro wa ya. 308 00:18:57,820 --> 00:19:00,720 >> Hivyo uso ni katika kuu kumbukumbu, mara kwa mara kumbukumbu 309 00:19:00,720 --> 00:19:05,550 kwamba sisi tumekuwa kutumia zote muhula, na umbo ni katika hii VRAM tofauti 310 00:19:05,550 --> 00:19:09,410 kumbukumbu kwamba udhibiti graphics kadi. 311 00:19:09,410 --> 00:19:13,170 Hivyo sisi kuwaita kazi hii SDL_CreateTextureFromSurface. 312 00:19:13,170 --> 00:19:17,104 Sisi kuwapa renderer yetu na uso wetu. 313 00:19:17,104 --> 00:19:19,020 Na kisha sisi ni kweli kufanywa na uso, 314 00:19:19,020 --> 00:19:20,311 hivyo sisi ni kwenda tu bure hilo. 315 00:19:20,311 --> 00:19:22,210 Hatuna haja yake tena. 316 00:19:22,210 --> 00:19:26,650 Na kisha hivyo kama wito huu errored na kurudi null, 317 00:19:26,650 --> 00:19:29,630 kisha tunakwenda kufanya nzima kosa kutoa taarifa kitu tena. 318 00:19:29,630 --> 00:19:30,920 >> Sawa. 319 00:19:30,920 --> 00:19:34,810 Hapa, sisi kupata katika baadhi halisi utoaji kazi. 320 00:19:34,810 --> 00:19:37,730 Hivyo wito SDL_RenderClear na kupita 321 00:19:37,730 --> 00:19:42,550 renderer kuhusishwa na dirisha letu tu hufanya dirisha kwenda nyeusi. 322 00:19:42,550 --> 00:19:47,650 Hivyo ni kuondosha kwamba Junk kuwa tuliona katika dirisha yetu kabla na inafanya kuwa nyeusi. 323 00:19:47,650 --> 00:19:50,750 Na kisha tunakwenda kuwaita SDL_RenderCopy, 324 00:19:50,750 --> 00:19:53,010 kuwapa renderer yetu, texture yetu. 325 00:19:53,010 --> 00:19:55,800 Na tutaweza majadiliano juu ya kile mashamba hayo ni katika kidogo. 326 00:19:55,800 --> 00:19:57,830 Lakini hiyo ni kwenda kuchukua data texture 327 00:19:57,830 --> 00:20:03,100 na nakala yake kwenye wetu dirisha kuteka picha. 328 00:20:03,100 --> 00:20:07,020 Kwa hiyo baada ya tumefanya nakala hii data kwenye dirisha letu, 329 00:20:07,020 --> 00:20:11,180 tuna kufanya kazi hii ya ziada aitwaye SDL_RenderPresent. 330 00:20:11,180 --> 00:20:15,360 >> Na hii ni ya kuvutia kwa sababu hii anapata 331 00:20:15,360 --> 00:20:18,770 katika mada inayoitwa mara mbili buffering. 332 00:20:18,770 --> 00:20:24,380 Hivyo mara mbili buffering ni mbinu ambayo hufanya graphics yako kuangalia mengi zaidi. 333 00:20:24,380 --> 00:20:28,240 Tena, ni kuzuia kwamba screen kuchanika Nilikuwa kuzungumza juu ya awali, ambapo 334 00:20:28,240 --> 00:20:29,590 una mipaka miwili. 335 00:20:29,590 --> 00:20:32,260 Kuna nyuma buffer katika kumbukumbu na buffer mbele. 336 00:20:32,260 --> 00:20:36,410 Buffer mbele ni halisi nini juu ya screen yako kwa sasa. 337 00:20:36,410 --> 00:20:42,070 Kwa hiyo sisi kufanya yote haya kuteka tofauti, kama SDL atatoa nakala au SDL_RenderClear 338 00:20:42,070 --> 00:20:43,080 kwa buffer nyuma. 339 00:20:43,080 --> 00:20:44,800 Basi kurekebisha mambo katika buffer nyuma. 340 00:20:44,800 --> 00:20:48,970 Hapa sisi tupate kuwa kuchora huu mraba ya kijani kwa nyuma buffer. 341 00:20:48,970 --> 00:20:52,300 >> Hivyo basi wakati sisi ni kosa kufanya wetu atatoa shughuli, ambayo 342 00:20:52,300 --> 00:20:55,700 inaweza kuchukua kweli kwa muda mrefu muda, nini tunakwenda kufanya 343 00:20:55,700 --> 00:20:57,860 ni kubadili mipaka. 344 00:20:57,860 --> 00:21:00,720 Hivyo ni literally tu inachukua mbele buffer na nyuma buffer 345 00:21:00,720 --> 00:21:02,990 na swichi yao, hivyo kwamba, mara mmoja, 346 00:21:02,990 --> 00:21:06,630 katika operesheni moja, badala ya labda mamia au maelfu, 347 00:21:06,630 --> 00:21:10,910 wote wa wetu wapya kulipwa vitu ni juu ya screen. 348 00:21:10,910 --> 00:21:13,160 Na hii inazuia mambo kama screen kuogea 349 00:21:13,160 --> 00:21:16,710 wakati tumekuwa inayotolewa nusu tu ya vitu yetu kwa sura. 350 00:21:16,710 --> 00:21:21,280 Hivyo kwamba ni kwa nini sisi haja ya simu SDL_RenderPresent, ikiwa ni pamoja 351 00:21:21,280 --> 00:21:23,320 kama SDL_RenderCopy. 352 00:21:23,320 --> 00:21:25,749 >> Tena, tunakwenda tu kusubiri kwa sekunde tano. 353 00:21:25,749 --> 00:21:27,540 Kisha tunakwenda kusafisha rasilimali zetu. 354 00:21:27,540 --> 00:21:29,540 Tuna wachache kabisa zaidi wakati huu. 355 00:21:29,540 --> 00:21:31,750 Na kisha tunakwenda tu exit mpango. 356 00:21:31,750 --> 00:21:35,350 Basi hebu kufanya hivyo. 357 00:21:35,350 --> 00:21:41,880 Mimi nina kwenda aina ya kufanya, na kisha vyanzo sawa hujambo hii sasa ni 3image.c. 358 00:21:41,880 --> 00:21:49,632 359 00:21:49,632 --> 00:21:52,240 Haki wote, kwamba ulioandaliwa hakuna makosa. 360 00:21:52,240 --> 00:21:57,210 Na unaweza kuona hapa Nimekuwa sasa inayotolewa nje ya picha yangu, Hello, CS50! 361 00:21:57,210 --> 00:22:00,560 kwa dirisha yetu, ambayo kutoweka baada ya sekunde tano. 362 00:22:00,560 --> 00:22:02,090 >> Sasa, hii bado ina matatizo, sawa? 363 00:22:02,090 --> 00:22:05,750 Hii si maombi nzuri, kwa sababu wakati mimi kujaribu karibu ya dirisha, 364 00:22:05,750 --> 00:22:06,500 hakuna kinachotokea. 365 00:22:06,500 --> 00:22:09,540 Hiyo x bado msikivu. 366 00:22:09,540 --> 00:22:17,420 Basi hebu tuangalie faili ijayo, hello4animation. 367 00:22:17,420 --> 00:22:21,850 Hivyo hii ni faili hiyo ni kwenda kuanzisha 368 00:22:21,850 --> 00:22:25,124 kusonga na harakati kwa mfano wetu. 369 00:22:25,124 --> 00:22:27,040 Hivyo sisi ni kwenda kufanya kitu kimoja kama kabla, 370 00:22:27,040 --> 00:22:30,190 kuanzisha SDL, kujenga dirisha, kujenga renderer, 371 00:22:30,190 --> 00:22:33,030 shehena picha katika kumbukumbu, kujenga texture. 372 00:22:33,030 --> 00:22:35,090 Tumeona yote ya kwamba kabla. 373 00:22:35,090 --> 00:22:36,770 Sasa, hii ni mpya. 374 00:22:36,770 --> 00:22:42,305 Tunakwenda kuwa muundo inayoitwa rect SDL, ambayo ni tu mstatili. 375 00:22:42,305 --> 00:22:49,950 Kama sisi kwenda zaidi ya hapa, tunaweza kufanya search kwa SDL rect, 376 00:22:49,950 --> 00:22:54,040 na unaweza kuona ni rahisi sana muundo. 377 00:22:54,040 --> 00:22:56,760 Ina x, y kwa nafasi, na 378 00:22:56,760 --> 00:23:02,080 ina upana na urefu kwa ukubwa wa mstatili. 379 00:23:02,080 --> 00:23:07,785 >> Hivyo nini tunakwenda kufanya ni tuko kwenda kufafanua hii SDL rect dest, 380 00:23:07,785 --> 00:23:09,480 kwa marudio. 381 00:23:09,480 --> 00:23:14,130 Na hii ni mahali juu ya screen ambapo 382 00:23:14,130 --> 00:23:16,005 tunakwenda kuwa kuchora mfano wetu, haki hiyo 383 00:23:16,005 --> 00:23:17,880 kama sisi ni kwenda kuwa kusonga picha kote, 384 00:23:17,880 --> 00:23:20,300 kisha marudio ambapo tunakwenda kuteka picha 385 00:23:20,300 --> 00:23:22,620 haja ya kuwa na kuhamia karibu. 386 00:23:22,620 --> 00:23:24,910 Hivyo sisi ni kwenda kuwaita hii kazi SDL_QueryTexture. 387 00:23:24,910 --> 00:23:27,550 388 00:23:27,550 --> 00:23:33,500 Na taarifa mimi nina kupita anuani ya dest.w, ambayo ni upana, 389 00:23:33,500 --> 00:23:36,950 na dest.h, ambayo ni urefu. 390 00:23:36,950 --> 00:23:40,425 Na hivyo SDL_QueryTexture ni kwenda kuhifadhi katika mashamba hayo upana 391 00:23:40,425 --> 00:23:41,675 na urefu wa umbo letu. 392 00:23:41,675 --> 00:23:44,680 393 00:23:44,680 --> 00:23:47,030 >> Na kisha nini mimi kwenda kufanya ni mimi nina kwenda 394 00:23:47,030 --> 00:23:55,580 kuweka dest.x kuwa dirisha upana bala dest.w, ambayo ni 395 00:23:55,580 --> 00:23:59,000 upana wa sprite, kugawanywa na 2. 396 00:23:59,000 --> 00:24:03,860 Na hii ni kwenda kuweka it up hivyo kwamba picha ni kikamilifu unaozingatia 397 00:24:03,860 --> 00:24:06,780 katika dirisha yetu, sawa? 398 00:24:06,780 --> 00:24:08,652 Hivyo sasa nina y msimamo. 399 00:24:08,652 --> 00:24:10,360 Na hii ni kwenda kuwa kutofautiana hiyo ni 400 00:24:10,360 --> 00:24:16,390 kubadilisha, kwa sababu tunakwenda kuwa kusonga picha katika mwelekeo y. 401 00:24:16,390 --> 00:24:19,050 Na sasa tuna kitu aitwaye uhuishaji kitanzi. 402 00:24:19,050 --> 00:24:21,180 >> Hivyo ni jinsi gani uhuishaji kazi? 403 00:24:21,180 --> 00:24:27,630 Naam, jicho binadamu inaweza kuchunguza 12 tofauti picha katika kila pili, sawa? 404 00:24:27,630 --> 00:24:33,060 Hivyo kama wewe flash 12 picha kadi saa yangu katika pili, nikaona kila mmoja picha hizo 405 00:24:33,060 --> 00:24:35,950 kama tofauti yake mwenyewe picha ya mtu binafsi. 406 00:24:35,950 --> 00:24:39,690 Sasa, kama wewe flash zaidi picha saa yangu katika pili, 407 00:24:39,690 --> 00:24:42,140 kisha jicho langu kuanza blur yao pamoja 408 00:24:42,140 --> 00:24:46,920 na napenda kujua kama mwendo, badala ya picha moja tofauti. 409 00:24:46,920 --> 00:24:51,930 Hivyo, kwa mfano sinema, na televisheni, wao flash picha wakati wewe mara 24 410 00:24:51,930 --> 00:24:52,570 pili. 411 00:24:52,570 --> 00:24:55,110 Hivyo hiyo ni 24 muafaka kwa pili. 412 00:24:55,110 --> 00:25:00,136 Kompyuta skrini, kwa upande mwingine, mara nyingi ni saa 60 muafaka kwa pili. 413 00:25:00,136 --> 00:25:01,260 Hiyo ni mahitaji kasi yao. 414 00:25:01,260 --> 00:25:04,650 Hiyo ni mara ngapi wao kupata mahitaji picha kwenye screen. 415 00:25:04,650 --> 00:25:08,960 Hivyo lengo letu ni kwenda kuwa 60 muafaka kwa pili kwa ajili ya michezo yetu. 416 00:25:08,960 --> 00:25:11,770 417 00:25:11,770 --> 00:25:13,710 >> Basi hebu angalia kwamba katika kanuni. 418 00:25:13,710 --> 00:25:19,064 Hivyo kwa kila sura, tuko kwanza kwenda wazi dirisha. 419 00:25:19,064 --> 00:25:20,230 Hii ni mfano mkuu. 420 00:25:20,230 --> 00:25:22,450 Daima wazi dirisha kila sura, na kisha 421 00:25:22,450 --> 00:25:25,210 kufanya yote ya kuchora yako shughuli, na kisha mwishoni, 422 00:25:25,210 --> 00:25:29,610 Je, RenderPresent kuonyesha kila kitu katika sura ya. 423 00:25:29,610 --> 00:25:33,910 Na kisha utaenda na kusubiri mwishoni 424 00:25:33,910 --> 00:25:36,340 kusubiri hadi ijayo sura lazima kuanza. 425 00:25:36,340 --> 00:25:38,650 >> Hivyo kama mimi alikuwa akifanya mengi ya tata hesabu hapa 426 00:25:38,650 --> 00:25:43,100 kwamba alichukua zaidi ya 16 milliseconds, itakuwa vigumu kwa mimi 427 00:25:43,100 --> 00:25:46,890 kupata kwamba kiwango cha frame ya 60 kwamba Nilitaka, kwa sababu sura ya kila ni 428 00:25:46,890 --> 00:25:48,750 kuchukua muda mrefu sana kwa compute. 429 00:25:48,750 --> 00:25:52,340 Aidha, sisi ni kweli kufanya aina ya kiasi kidogo cha kazi 430 00:25:52,340 --> 00:25:54,820 hapa, kwa sababu kuna tu jambo moja sisi ni kuchora. 431 00:25:54,820 --> 00:25:59,390 Hivyo mimi tu kusubiri 1/60 wa pili, ambayo ni urefu 432 00:25:59,390 --> 00:26:01,520 ya sura katika kati ya muafaka. 433 00:26:01,520 --> 00:26:05,610 Hivyo mimi nina aina ya kujifanya kufanya kazi yangu yote inachukua muda sifuri. 434 00:26:05,610 --> 00:26:09,050 Lakini katika mchezo halisi, wewe d na Ondoa 435 00:26:09,050 --> 00:26:13,760 kiasi cha muda ilichukua kufanya hii kazi yote kutoka muda wako mapumziko. 436 00:26:13,760 --> 00:26:16,970 >> Hivyo anyway, nini mimi kweli kufanya katika kitanzi hii? 437 00:26:16,970 --> 00:26:19,070 Mimi wazi dirisha. 438 00:26:19,070 --> 00:26:27,470 Mimi kuweka dest.y, ambayo ni int kwa y yangu halisi nafasi kutupwa katika int. 439 00:26:27,470 --> 00:26:32,070 Sasa, nataka kuelea azimio kwa y yangu nafasi katika mchezo wangu, 440 00:26:32,070 --> 00:26:34,150 lakini kisha kwa kweli kuteka ni kwenye screen, 441 00:26:34,150 --> 00:26:39,070 inahitaji ints, kwa sababu ni katika vitengo ya saizi, hivyo kwamba ni nini kutupwa ni kwa. 442 00:26:39,070 --> 00:26:41,745 Mimi nina kwenda kuteka picha. 443 00:26:41,745 --> 00:26:45,180 Hivyo hii ni chanzo mstatili. 444 00:26:45,180 --> 00:26:47,060 Na hii ni marudio mstatili. 445 00:26:47,060 --> 00:26:50,310 Hivyo mimi kupita null kwa chanzo Mstatili 446 00:26:50,310 --> 00:26:53,426 kusema nataka kuteka texture yangu yote. 447 00:26:53,426 --> 00:26:55,300 Lakini kama alikuwa na mengi ya textures katika mchezo wako 448 00:26:55,300 --> 00:26:59,120 na wao uko wote katika moja kubwa ramani texture kwamba alikuwa kubeba katika SDL kama moja tu 449 00:26:59,120 --> 00:27:02,850 texture, ungeweza kutumia chanzo Mstatili 450 00:27:02,850 --> 00:27:06,750 kuchukua moja ya textures ndogo, moja ya sprites ndogo, 451 00:27:06,750 --> 00:27:09,450 nje ya kwamba kubwa ramani texture. 452 00:27:09,450 --> 00:27:14,740 >> Hivyo tena, mimi nina kupita atatoa wangu, wangu texture, na sasa marudio. 453 00:27:14,740 --> 00:27:18,320 Hii ni kwenda kuwa ambapo katika dirisha ni kwenda kuwa inayotolewa. 454 00:27:18,320 --> 00:27:21,390 Na kisha, kwa sababu mimi nina changamfu kitu, mimi haja ya harakati, 455 00:27:21,390 --> 00:27:25,150 Mimi nina kwenda kuwa uppdatering sprite msimamo juu ya sura ya kila. 456 00:27:25,150 --> 00:27:30,190 Hivyo nina hii mara kwa mara aitwaye kitabu kasi katika vitengo ya saizi kwa pili. 457 00:27:30,190 --> 00:27:34,320 Sasa, kila wakati sisi kufanya harakati, sura ni 1/60 tu ya pili. 458 00:27:34,320 --> 00:27:36,740 Hivyo nina kwenda kugawa kwamba kwa 60. 459 00:27:36,740 --> 00:27:42,350 Na kisha, hebu angalia, mimi nina subtracting kwamba kutoka nafasi y. 460 00:27:42,350 --> 00:27:44,470 Kwa nini mimi subtracting? 461 00:27:44,470 --> 00:27:46,169 Tutaweza kupata kwamba katika pili. 462 00:27:46,169 --> 00:27:48,460 Hivyo basi mimi kusafisha rasilimali yangu na mpango juu. 463 00:27:48,460 --> 00:27:49,830 >> Basi hebu kufanya hivyo. 464 00:27:49,830 --> 00:27:52,450 465 00:27:52,450 --> 00:28:03,570 Basi hebu kwenda katika kufanya SRCS = hello4 animation.c, wote haki? 466 00:28:03,570 --> 00:28:05,720 Mchezo. 467 00:28:05,720 --> 00:28:06,770 Kuna kwenda. 468 00:28:06,770 --> 00:28:12,690 Hivyo mimi kuwa ni scrolling up dirisha, ambayo ni pretty nadhifu. 469 00:28:12,690 --> 00:28:17,110 Lakini kushikilia, nilikuwa subtracting kutoka nafasi y kila wakati. 470 00:28:17,110 --> 00:28:18,910 Nini kinaendelea huko? 471 00:28:18,910 --> 00:28:24,010 Naam, zinageuka kuwa katika SDL, na kwa kweli, katika zaidi graphics kompyuta, 472 00:28:24,010 --> 00:28:28,890 asili ya mfumo wa kuratibu ni juu kushoto wa dirisha. 473 00:28:28,890 --> 00:28:34,960 >> Hivyo mwelekeo chanya x huenda hela dirisha yako na haki. 474 00:28:34,960 --> 00:28:38,110 Na chanya y mwelekeo kweli inakwenda chini. 475 00:28:38,110 --> 00:28:40,470 Hivyo tena, asili katika kushoto juu ya dirisha yako, 476 00:28:40,470 --> 00:28:46,190 chanya y mwelekeo ni chini, na chanya x ni kwenda kulia. 477 00:28:46,190 --> 00:28:48,770 Hivyo wakati mimi Ondoa kutoka y nafasi, hiyo ni 478 00:28:48,770 --> 00:28:52,640 kwenda kufanya ni kwenda juu ya hasi y mwelekeo, ambayo ni up window. 479 00:28:52,640 --> 00:28:55,500 Hivyo kwamba ni nini kinaendelea huko. 480 00:28:55,500 --> 00:28:56,510 Baridi. 481 00:28:56,510 --> 00:28:59,240 >> Hebu tuangalie faili ijayo. 482 00:28:59,240 --> 00:29:05,700 Hapa ni sehemu ya kuonyesha ambapo sisi hatimaye 483 00:29:05,700 --> 00:29:08,920 kupata kwamba X katika kona ya dirisha kwamba walidhani karibu ya dirisha 484 00:29:08,920 --> 00:29:10,660 kufanya kazi. 485 00:29:10,660 --> 00:29:12,800 Hivyo nini kinaendelea? 486 00:29:12,800 --> 00:29:17,520 Sisi initialize SDL, kujenga dirisha, kujenga renderer, mzigo wa Kisasa, 487 00:29:17,520 --> 00:29:19,770 kujenga texture kama tumeona kabla. 488 00:29:19,770 --> 00:29:26,850 Tuna huo marudio Mstatili kama kabla, wito huo swala texture. 489 00:29:26,850 --> 00:29:29,780 Lakini wakati huu, tuko kisha kwenda kugawanya upana 490 00:29:29,780 --> 00:29:33,110 na urefu wa safari yetu na 4. 491 00:29:33,110 --> 00:29:36,430 Hii tu ina athari ya kuongeza mfano wetu chini wakati 492 00:29:36,430 --> 00:29:39,884 sisi kuonyesha ni katika dirisha na watu wanne. 493 00:29:39,884 --> 00:29:40,800 Hivyo hiyo ni pretty nadhifu. 494 00:29:40,800 --> 00:29:42,770 Tunaweza tu wadogo tu kama hiyo. 495 00:29:42,770 --> 00:29:45,970 Sisi ni kwenda kuanza sprite katikati ya screen. 496 00:29:45,970 --> 00:29:49,410 Na sasa tuna x na y kasi na re zote mbili kwenda kuanza saa sifuri. 497 00:29:49,410 --> 00:29:53,740 498 00:29:53,740 --> 00:29:55,880 >> Hii ni faili vibaya. 499 00:29:55,880 --> 00:29:56,380 Nasikitika. 500 00:29:56,380 --> 00:29:57,960 Hivyo hiyo ni kweli wote. 501 00:29:57,960 --> 00:30:00,170 Hayo ni yote bado katika faili hii. 502 00:30:00,170 --> 00:30:03,210 Tuna kugawanya na 4 na kila kitu. 503 00:30:03,210 --> 00:30:07,830 Hivyo hapa tuna wetu x na y nafasi kwa katikati ya dirisha. 504 00:30:07,830 --> 00:30:12,480 Na sisi kuwapa kasi ya awali ya kasi hii mara kwa mara, ambayo 505 00:30:12,480 --> 00:30:15,180 Naamini ni 300 saizi per pili. 506 00:30:15,180 --> 00:30:19,850 Sasa, tuna hii int inaweza tu kama vile kuwa bulin aitwaye karibu ombi. 507 00:30:19,850 --> 00:30:23,970 Na badala ya kufanya kitanzi usio juu ya timer hapa, 508 00:30:23,970 --> 00:30:29,180 tunakwenda kuwa changamfu kama muda mrefu kama karibu si ombi. 509 00:30:29,180 --> 00:30:30,960 >> Hivyo ni jinsi gani sisi mchakato matukio? 510 00:30:30,960 --> 00:30:35,600 Naam, SDL foleni juu ya matukio katika halisi foleni nyuma ya pazia. 511 00:30:35,600 --> 00:30:38,860 Na kisha kila sura, tunaweza dequeue matukio 512 00:30:38,860 --> 00:30:43,900 na ile foleni kwa kutumia hii SDL_PullEvent simu. 513 00:30:43,900 --> 00:30:46,730 Na tena, dhahiri kwenda kusoma kuhusu hili katika nyaraka. 514 00:30:46,730 --> 00:30:50,450 Kuna undani mengi zaidi na mengi kazi zaidi unaweza kutumia kwa hili. 515 00:30:50,450 --> 00:30:54,750 Sisi kupita anuani ndilo hili, SDL_Event 516 00:30:54,750 --> 00:30:56,990 kwamba sisi hapa juu ya stack. 517 00:30:56,990 --> 00:30:58,840 >> Sasa, ni nini SDL_event? 518 00:30:58,840 --> 00:31:02,356 Kwa sababu SDL, kama sisi kuangalia katika documentation-- hebu 519 00:31:02,356 --> 00:31:07,580 kuona, API kwa jamii, pembejeo matukio, tukio utunzaji, 520 00:31:07,580 --> 00:31:15,150 tunaweza kuangalia idadi matukio ya mbalimbali hapa 521 00:31:15,150 --> 00:31:18,600 na tunaweza kuona kuna tani wote kwa jumla. 522 00:31:18,600 --> 00:31:22,150 Hivyo ni jambo hili SDL_Event nini? 523 00:31:22,150 --> 00:31:28,190 524 00:31:28,190 --> 00:31:31,107 SDL_Event ni muungano. 525 00:31:31,107 --> 00:31:31,940 Wow, nini muungano? 526 00:31:31,940 --> 00:31:33,910 Wameweza pengine kamwe kusikia kwamba kabla. 527 00:31:33,910 --> 00:31:35,610 Na hiyo ni sawa. 528 00:31:35,610 --> 00:31:39,420 >> Muungano ni aina ya kama struct, isipokuwa struct 529 00:31:39,420 --> 00:31:41,960 ina nafasi kwa wote wa mashamba yake na kumbukumbu, 530 00:31:41,960 --> 00:31:45,060 ambapo chama cha ina tu nafasi ya kutosha na kifafa kubwa 531 00:31:45,060 --> 00:31:49,660 moja ya mashamba yake, maana yake inaweza tu kuhifadhi moja ya mashamba yake 532 00:31:49,660 --> 00:31:52,830 wakati huo, ambayo aina ya mantiki kwa matukio, sawa? 533 00:31:52,830 --> 00:31:55,810 Tunaweza kuwa na keyboard tukio au tukio dirisha, 534 00:31:55,810 --> 00:31:59,750 lakini tukio moja hawezi kuwa wote wawili a tukio keyboard na tukio dirisha, 535 00:31:59,750 --> 00:32:05,450 hivyo ni d kuwa silly kuwa na nafasi kwa ajili ya wote wa wale ndani ya tukio muungano wetu. 536 00:32:05,450 --> 00:32:07,770 Hivyo kama alitaka kujenga umoja yako mwenyewe, 537 00:32:07,770 --> 00:32:10,020 inaonekana sawa kama kujenga struct, 538 00:32:10,020 --> 00:32:14,140 ila kwa kuwa tunatumia neno la muungano badala ya struct Keyword. 539 00:32:14,140 --> 00:32:17,490 Na kumbuka, kwa wote wa mambo ndani ya chama chako, 540 00:32:17,490 --> 00:32:22,020 kutofautiana halisi kwamba ni chama cha inaweza tu kuwa moja ya maadili hayo 541 00:32:22,020 --> 00:32:24,780 kwa muda. 542 00:32:24,780 --> 00:32:29,940 >> Hivyo ni jinsi gani sisi tunasema ni aina gani ya tukio sisi tu popped mbali ya foleni hili? 543 00:32:29,940 --> 00:32:33,370 Naam, tunaweza kupima kwa event.type. 544 00:32:33,370 --> 00:32:35,792 Na kama hiyo ni sawa kwa SDL_Quit, tunajua 545 00:32:35,792 --> 00:32:37,500 ni tukio ambalo ilitokana wakati sisi 546 00:32:37,500 --> 00:32:39,510 kugonga kwamba X katika kona ya dirisha. 547 00:32:39,510 --> 00:32:44,270 Na tunaweza kuweka karibu aliomba sawa na 1. 548 00:32:44,270 --> 00:32:47,230 Wengine ni baadhi tu sauti kwamba umefanya kuona mbele. 549 00:32:47,230 --> 00:32:52,802 Basi hebu kwenda mbele na kufanya hii na kuona jinsi kazi. 550 00:32:52,802 --> 00:32:55,135 Hivyo mimi nina kwenda aina ya kufanya na kisha SRCS = hello5_events.c. 551 00:32:55,135 --> 00:33:03,760 552 00:33:03,760 --> 00:33:04,770 Kuna sisi kwenda. 553 00:33:04,770 --> 00:33:05,780 Michezo. 554 00:33:05,780 --> 00:33:08,920 >> Sasa, tunaweza kuona ni Hakika scaled chini na watu wanne. 555 00:33:08,920 --> 00:33:10,360 Na sasa ni bouncing kuzunguka. 556 00:33:10,360 --> 00:33:14,630 Mimi na baadhi ya kugundua mgongano kinachoendelea na pande mbili za dirisha 557 00:33:14,630 --> 00:33:16,840 tuweze tuangalie. 558 00:33:16,840 --> 00:33:21,190 Na kile kinachotokea wakati mimi kwenda kuifunga? 559 00:33:21,190 --> 00:33:22,120 Ni kufunga. 560 00:33:22,120 --> 00:33:22,740 Ajabu. 561 00:33:22,740 --> 00:33:24,290 Tumepokea tukio hilo. 562 00:33:24,290 --> 00:33:26,630 Na sisi kubebwa yake. 563 00:33:26,630 --> 00:33:30,730 >> Basi hebu kuangalia nyuma katika kanuni. 564 00:33:30,730 --> 00:33:33,020 Hivyo ni jinsi gani mimi kupata bouncing kuzunguka kama hayo? 565 00:33:33,020 --> 00:33:37,200 Kumbuka mimi kuweka wote x na y awali kwa kasi. 566 00:33:37,200 --> 00:33:39,260 Na kasi ni chanya mara kwa mara, hivyo hiyo ni 567 00:33:39,260 --> 00:33:42,680 kwenda kupata hiyo kuanzia nje kwenda chini na kwenda kulia. 568 00:33:42,680 --> 00:33:45,680 569 00:33:45,680 --> 00:33:50,310 >> Sasa, sura ya kila, pamoja na utunzaji matukio yoyote ambayo yanaweza kuwa ilitokea, 570 00:33:50,310 --> 00:33:57,520 Mimi nina kwenda kuchunguza kama sprite yangu anajaribu kwenda nje ya dirisha. 571 00:33:57,520 --> 00:34:03,610 Hivyo tunaweza kufanya hivyo kwa kuangalia tu x_pos kwa 0, y_pos 0, na kisha 572 00:34:03,610 --> 00:34:07,370 Pia x_pos na y_pos kwa dirisha upana na urefu dirisha. 573 00:34:07,370 --> 00:34:11,010 Taarifa Nimekuwa subtracted upana wa sprite. 574 00:34:11,010 --> 00:34:14,090 Na hii ni kwa sababu kama mimi si Ondoa upana wa sprite, 575 00:34:14,090 --> 00:34:17,760 ingekuwa tu kuangalia kwamba asili ya sprite 576 00:34:17,760 --> 00:34:19,690 hakwenda nje ya dirisha. 577 00:34:19,690 --> 00:34:21,480 Lakini tunataka nzima upana wa sprite 578 00:34:21,480 --> 00:34:24,030 daima kuwa ndani ya dirisha na urefu mzima wa sprite 579 00:34:24,030 --> 00:34:25,321 daima kuwa ndani ya dirisha. 580 00:34:25,321 --> 00:34:27,429 Hivyo kwamba ni nini kutoa ni kwa. 581 00:34:27,429 --> 00:34:30,080 Mengi ya jiometri hapa Unaweza kuwa na manufaa kwa kuteka ni nje 582 00:34:30,080 --> 00:34:33,929 juu ya karatasi na kuratibu mfumo wa kuona kinachoendelea. 583 00:34:33,929 --> 00:34:38,090 >> Hivyo kama mimi yanapogongana, mimi tu tu upya nafasi 584 00:34:38,090 --> 00:34:41,400 hivyo kwamba si kwenda nje ya screen. 585 00:34:41,400 --> 00:34:47,179 Na mimi nina kwenda kwa, ikiwa ni bounces kwenye moja ya sidewalls, 586 00:34:47,179 --> 00:34:51,469 Mimi nina kwenda yanatofautiana x kasi ili 587 00:34:51,469 --> 00:34:53,210 kuanza bouncing katika upande mwingine. 588 00:34:53,210 --> 00:34:56,210 Na vile vile, kama ni hits juu au chini, 589 00:34:56,210 --> 00:34:59,820 Mimi nina kwenda kuweka y kasi sawa na hasi y kasi, 590 00:34:59,820 --> 00:35:01,690 ili kwamba itakuwa bounce nyuma. 591 00:35:01,690 --> 00:35:03,860 Hivyo hiyo ni jinsi sisi got kwamba hapa. 592 00:35:03,860 --> 00:35:07,560 >> Na vyeo uboreshaji kama tumeona kabla, 593 00:35:07,560 --> 00:35:12,510 kugawanya na 60, kwa sababu tuko tu kuchukua 1/60 wa pili. 594 00:35:12,510 --> 00:35:15,750 Na kisha utoaji, sawa kama kabla. 595 00:35:15,750 --> 00:35:19,810 Na hivyo ndiyo kila kitu kwamba kinachoendelea faili hii. 596 00:35:19,810 --> 00:35:22,490 Hivyo hiyo ni jinsi sisi kufanya matukio. 597 00:35:22,490 --> 00:35:29,260 Jambo kuu kuchukua hapa ni hii kazi SDL_PullEvent. 598 00:35:29,260 --> 00:35:33,020 Na unapaswa dhahiri kusoma nyaraka zaidi kuhusu SDL_Event 599 00:35:33,020 --> 00:35:38,630 muungano, kwa sababu aina hii data ni sana, muhimu sana, kwa sababu sisi kuitumia 600 00:35:38,630 --> 00:35:40,690 kwa kila aina ya matukio. 601 00:35:40,690 --> 00:35:46,539 >> Kwa mfano, sisi kuitumia kwa ajili ya keyboard matukio, ambayo ni nini faili hili ni kwa. 602 00:35:46,539 --> 00:35:47,330 Basi je, tuna? 603 00:35:47,330 --> 00:35:50,180 Tuna kitu kimoja kama kabla, initialize SDL, kujenga dirisha, 604 00:35:50,180 --> 00:35:55,260 kujenga renderer, mzigo picha katika kumbukumbu, kujenga texture. 605 00:35:55,260 --> 00:36:00,530 Tena, tunakwenda na hii Mstatili dest, 606 00:36:00,530 --> 00:36:04,890 tunakwenda wadogo picha na nne, kufanya hivyo kidogo kidogo. 607 00:36:04,890 --> 00:36:08,000 Sasa, sisi ni kwenda kuanza sprite katikati ya screen. 608 00:36:08,000 --> 00:36:12,090 Lakini wakati huu, tunakwenda kuweka x awali na velocities y na sifuri, 609 00:36:12,090 --> 00:36:15,140 kwa sababu keyboard ni kwenda kudhibiti hizo. 610 00:36:15,140 --> 00:36:18,900 Na zaidi ya hapo, tunakwenda kuweka wimbo wa vigezo hivi 611 00:36:18,900 --> 00:36:20,450 juu, chini, kushoto, na haki. 612 00:36:20,450 --> 00:36:23,090 Na kwamba itakuja kushika wimbo wa kama tumekuwa 613 00:36:23,090 --> 00:36:27,370 taabu vifungo keyboard kwamba yanahusiana na juu, chini, kushoto, 614 00:36:27,370 --> 00:36:28,460 na kulia. 615 00:36:28,460 --> 00:36:32,440 >> Sasa, hii ni aina ya dhana kwa sababu tunaweza kutumia W, A, S, 616 00:36:32,440 --> 00:36:35,480 D hapa, au halisi funguo mshale. 617 00:36:35,480 --> 00:36:38,590 Tutaweza kuona kwamba katika haki ya pili. 618 00:36:38,590 --> 00:36:41,140 Hivyo sisi ni kwenda kwa mchakato tukio kama kabla. 619 00:36:41,140 --> 00:36:42,530 Sisi kuvuta tukio hilo. 620 00:36:42,530 --> 00:36:45,840 Lakini sasa tunakwenda kubadili juu ya aina ya tukio hilo. 621 00:36:45,840 --> 00:36:47,710 Kama ni SDL_Quit, tuko kwenda kuweka karibu 622 00:36:47,710 --> 00:36:49,990 aliomba moja, tu kama kabla. 623 00:36:49,990 --> 00:36:52,315 Ambacho kinafanya x katika kona ya dirisha, 624 00:36:52,315 --> 00:36:55,050 ili dirisha yetu kweli kufunga. 625 00:36:55,050 --> 00:37:00,110 >> Vinginevyo, kama sisi kupata muhimu SDL chini tukio, ambayo ina maana sisi taabu muhimu, 626 00:37:00,110 --> 00:37:04,470 kisha nini tunakwenda kufanya ni tuko kwenda kubadili juu ya jambo hili hapa, 627 00:37:04,470 --> 00:37:11,370 ambayo means-- hivyo event.key ina maana kutibu tukio muungano wetu, 628 00:37:11,370 --> 00:37:15,490 kwenda na kupata ufunguo tukio muundo ndani yake. 629 00:37:15,490 --> 00:37:18,810 Hivyo ni zinageuka kuwa hii muungano ni muundo tukio muhimu. 630 00:37:18,810 --> 00:37:22,820 Na kisha kwenda muhimu muundo wa tukio ya uwanja wake 631 00:37:22,820 --> 00:37:26,140 aitwaye keysym na kisha scancode. 632 00:37:26,140 --> 00:37:29,480 Na tena, dhahiri kusoma nyaraka kuhusu hili. 633 00:37:29,480 --> 00:37:31,220 Keyword pembejeo kuvutia kabisa. 634 00:37:31,220 --> 00:37:34,020 Unaweza kupata namba Scan au maadili ya msingi. 635 00:37:34,020 --> 00:37:38,590 Na ni kidogo hila, lakini nyaraka ni nzuri kabisa. 636 00:37:38,590 --> 00:37:43,380 >> Hivyo kama tunaona kificho Scan kwa vyombo vya habari wetu muhimu kuwa W au juu, 637 00:37:43,380 --> 00:37:45,450 tunakwenda kuanzisha sawa na 1. 638 00:37:45,450 --> 00:37:47,240 Na kisha sisi kuvunja nje ya kwamba kubadili. 639 00:37:47,240 --> 00:37:52,980 Kama ni A au kushoto, sisi kuweka kushoto na 1, et kadhalika, na kadhalika, kwa chini na kulia. 640 00:37:52,980 --> 00:37:57,080 Sasa, nje katika kubadili hii nje, kama tunaona ufunguo up tukio, 641 00:37:57,080 --> 00:38:00,730 hiyo ina maana tumekuwa iliyotolewa ufunguo na sisi ni tena kubwa ni. 642 00:38:00,730 --> 00:38:05,380 Hivyo nina kwenda kusema juu ni sawa na 0, kushoto ni sawa na 0, chini ni sawa na 0, haki 643 00:38:05,380 --> 00:38:08,260 sawa 0, nakadhalika. 644 00:38:08,260 --> 00:38:12,070 >> Na taarifa tulio nao katika kila moja ya haya kesi mbili kuweka haki karibu na kila mmoja 645 00:38:12,070 --> 00:38:14,490 na hakuna kificho tofauti kwa kesi ya kwanza, ambayo 646 00:38:14,490 --> 00:38:18,180 ina maana kwamba kama ni S au chini kulia hapa, 647 00:38:18,180 --> 00:38:20,520 ni kwenda kutekeleza kanuni hii. 648 00:38:20,520 --> 00:38:22,090 Hivyo hiyo ni pretty Handy. 649 00:38:22,090 --> 00:38:24,830 Ni kuzuia sisi kuwa na kufanya zaidi hali na ikiwa na mambo 650 00:38:24,830 --> 00:38:26,980 kama hiyo. 651 00:38:26,980 --> 00:38:29,420 >> Hivyo sisi ni kwenda kwa kuamua kasi. 652 00:38:29,420 --> 00:38:31,020 Sisi kuweka kasi kwa 0. 653 00:38:31,020 --> 00:38:33,910 Basi kama ni taabu juu na si chini, basi sisi 654 00:38:33,910 --> 00:38:37,450 kuweka y kasi kwa kasi hasi. 655 00:38:37,450 --> 00:38:42,930 Kumbuka hasi, kwa sababu hasi y mwelekeo ni juu. 656 00:38:42,930 --> 00:38:45,540 Na chanya y mwelekeo ni chini. 657 00:38:45,540 --> 00:38:47,510 Kama ni taabu chini na si juu, basi tuko 658 00:38:47,510 --> 00:38:53,860 kwenda kuweka kwa kasi chanya, ambayo ina maana kwenda chini ya screen. 659 00:38:53,860 --> 00:38:55,460 Same kitu na kushoto na kulia. 660 00:38:55,460 --> 00:38:58,200 >> Na kisha tunakwenda update vyeo tu kama ilivyokuwa kabla. 661 00:38:58,200 --> 00:39:00,740 Sisi ni kwenda kufanya mgongano kugundua na mipaka, 662 00:39:00,740 --> 00:39:04,290 lakini sisi siyo kwenda kwa upya kasi, kwa sababu kasi ni 663 00:39:04,290 --> 00:39:06,780 kudhibitiwa na keyboard. 664 00:39:06,780 --> 00:39:11,230 Lakini sisi ni kwenda upya vyeo kuitunza katika dirisha. 665 00:39:11,230 --> 00:39:14,400 Na tunakwenda kuweka vyeo katika struct 666 00:39:14,400 --> 00:39:17,400 na kisha kufanya yote utoaji mambo kutoka mbele. 667 00:39:17,400 --> 00:39:20,750 Basi hebu angalia nini anafanya. 668 00:39:20,750 --> 00:39:25,460 Hivyo kufanya SRCS-- hebu angalia, hii ni hello6_keyboard.c. 669 00:39:25,460 --> 00:39:38,140 670 00:39:38,140 --> 00:39:38,820 >> Oh, hakuna. 671 00:39:38,820 --> 00:39:40,150 Hivyo tulipata baadhi onyo hapa. 672 00:39:40,150 --> 00:39:43,840 Na kwamba tu kusema hatukuwa kuangalia kwa kila aina moja inawezekana 673 00:39:43,840 --> 00:39:45,610 wa tukio hilo. 674 00:39:45,610 --> 00:39:49,470 Hiyo ni sawa, kwa sababu kuna 236 kati yao au zaidi. 675 00:39:49,470 --> 00:39:51,760 Hivyo nina kwenda kwa kupuuza onyo hizo. 676 00:39:51,760 --> 00:39:53,530 Ni bado ulioandaliwa faini. 677 00:39:53,530 --> 00:39:56,100 Hivyo nina kwenda ya kucheza mchezo. 678 00:39:56,100 --> 00:39:57,590 Siyo kusonga mbele. 679 00:39:57,590 --> 00:40:04,150 Lakini sasa, wakati mimi mash kwenye keyboard yangu, Siwezi kufanya baadhi ya harakati WASD hapa, 680 00:40:04,150 --> 00:40:06,870 Mimi kutumia mshale funguo yangu pia. 681 00:40:06,870 --> 00:40:10,070 Na taarifa, hata kama niko uendelezaji wa kulia sasa hivi, 682 00:40:10,070 --> 00:40:13,804 si kwenda nje ya dirisha, kwa sababu mimi upya juu ya kila sura. 683 00:40:13,804 --> 00:40:14,720 Hivyo hiyo ni pretty nadhifu. 684 00:40:14,720 --> 00:40:19,420 Unaweza kufikiria kuhamia karibu Mario na baadhi funguo mshale au kitu kama hicho. 685 00:40:19,420 --> 00:40:22,880 Na ndiyo, X haina kazi. 686 00:40:22,880 --> 00:40:26,900 >> Faili hivyo mwisho tunakwenda kuangalia, hellow7_mouse. 687 00:40:26,900 --> 00:40:29,600 Hii ni kuhusu kupata pembejeo panya. 688 00:40:29,600 --> 00:40:34,790 Hivyo katika hili, sisi kuagiza hesabu kichwa, 689 00:40:34,790 --> 00:40:38,100 kwa sababu tunakwenda na kidogo ya math hapa. 690 00:40:38,100 --> 00:40:45,260 Umri huo, umri huo mambo, marudio, umri huo, kuonekana kwamba kabla. 691 00:40:45,260 --> 00:40:46,910 Naam, hii ni ya kuvutia. 692 00:40:46,910 --> 00:40:51,730 Hivyo sisi ni nyuma ya kuangalia tu kwa SDL kujiondoa tukio hilo. 693 00:40:51,730 --> 00:40:52,460 Kwanini hivyo? 694 00:40:52,460 --> 00:40:55,110 Hivyo unaweza kupata panya pembejeo kutokana na matukio. 695 00:40:55,110 --> 00:40:57,670 Kama wakati panya wakiongozwa, kupata tukio kwa ajili hiyo. 696 00:40:57,670 --> 00:41:00,520 Wakati kifungo panya ni taabu, unaweza kupata tukio kwa ajili hiyo. 697 00:41:00,520 --> 00:41:05,760 >> Lakini kuna mwingine, kidogo rahisi pengine, API kwa ajili ya kupata pembejeo panya. 698 00:41:05,760 --> 00:41:09,500 Na hiyo ndiyo tu SDL kupata panya serikali. 699 00:41:09,500 --> 00:41:14,370 Hivyo nina int x na kwa y kwa nafasi ya mshale. 700 00:41:14,370 --> 00:41:18,910 Mimi kupita kwa SDL_GetMouseState, ambayo unaweka haya. 701 00:41:18,910 --> 00:41:22,200 Na hii ni nafasi katika kuratibu mfumo wa dirisha. 702 00:41:22,200 --> 00:41:25,520 Hivyo kama wingi ni katika upande wa juu kushoto ya dirisha, kwamba ingekuwa 0, 0. 703 00:41:25,520 --> 00:41:28,040 704 00:41:28,040 --> 00:41:33,380 >> Sasa, nini mimi kwenda kufanya ni mimi nina kwenda kufanya kidogo ya math vector. 705 00:41:33,380 --> 00:41:36,910 I bet wewe walidhani ungekuwa si kuona kwamba katika CS50, lakini hapa ni. 706 00:41:36,910 --> 00:41:40,720 Mimi nina kwenda kufanya baadhi vector math kupata vector 707 00:41:40,720 --> 00:41:43,840 kutoka picha kwa mshale. 708 00:41:43,840 --> 00:41:53,280 Na hivyo kwa nini nina hii kutoa hapa? 709 00:41:53,280 --> 00:42:01,350 Naam, kama mimi tu kutumika dest .-- hivyo Mimi haja ya kutafsiri panya x 710 00:42:01,350 --> 00:42:05,166 na y kwa nusu upana na urefu wa picha, 711 00:42:05,166 --> 00:42:08,040 kwa sababu nataka kituo cha picha kuwa kwenda kuelekea panya, 712 00:42:08,040 --> 00:42:10,160 si asili ya picha. 713 00:42:10,160 --> 00:42:15,650 >> Hivyo hiyo ni tu kuhakikisha mimi kuzungumza kuhusu katikati ya picha hapa. 714 00:42:15,650 --> 00:42:19,510 Kisha sisi kupata delta x na y, ambayo Kuna tofauti gani kutoka lengo 715 00:42:19,510 --> 00:42:23,430 kwa hali halisi ya picha. 716 00:42:23,430 --> 00:42:25,690 Na kisha tunaweza kupata mbali na hapa, ambayo 717 00:42:25,690 --> 00:42:29,140 ni kwenda kuwa Pythagorean theorem, mraba mizizi ya x 718 00:42:29,140 --> 00:42:32,720 Mara x pamoja mara y y. 719 00:42:32,720 --> 00:42:38,400 >> Sasa ili kuzuia jitter, na siwezi kuonyesha wewe nini hii haina kama si kufanya hivyo, 720 00:42:38,400 --> 00:42:45,830 kama umbali kati ya mshale na kituo cha picha ni chini ya miaka mitano, 721 00:42:45,830 --> 00:42:48,730 Mimi tu si kwenda hoja picha. 722 00:42:48,730 --> 00:42:52,900 Vinginevyo, sisi kuweka kasi. 723 00:42:52,900 --> 00:42:55,960 Na sisi kuweka hivyo kwamba kasi siku zote kuwa mara kwa mara. 724 00:42:55,960 --> 00:42:58,770 Na matokeo halisi ya yote hisabati hii ni kwamba picha 725 00:42:58,770 --> 00:43:01,660 ni kwenda kuelekea kwenye mshale. 726 00:43:01,660 --> 00:43:08,470 >> Sasa, zinageuka kuwa SDL_GetMouseState, 727 00:43:08,470 --> 00:43:14,490 pamoja na kuweka x na y hoja hapa, 728 00:43:14,490 --> 00:43:21,340 pia anarudi int kwamba sambamba kwa hali ya kifungo panya. 729 00:43:21,340 --> 00:43:24,600 Hivyo hatuwezi kusoma kwamba moja kwa moja, lakini tunaweza 730 00:43:24,600 --> 00:43:29,090 kutumia macros haya, moja bitwise operator, si kwamba inatisha, 731 00:43:29,090 --> 00:43:30,650 tu bitwise na. 732 00:43:30,650 --> 00:43:38,320 Hivyo tunasema vifungo, ambayo ni matokeo ya SDL_GetMouseState yetu, kama kwamba 733 00:43:38,320 --> 00:43:43,990 na bitwise na, hii jumla hapa, SDL_BUTTON_LEFT. 734 00:43:43,990 --> 00:43:47,680 >> Hivyo hii ni kwenda tu kutatua kwa bitmap kwamba sambamba 735 00:43:47,680 --> 00:43:51,090 kwa upande wa kushoto mouse kuwa taabu. 736 00:43:51,090 --> 00:43:55,470 Na hivyo kama bitwise na hutokea na ni 737 00:43:55,470 --> 00:43:59,340 si sifuri, ambayo ina maana kushoto kifungo ilikuwa taabu, 738 00:43:59,340 --> 00:44:04,320 kisha sisi ni kweli kwenda yanatofautiana wote x na y velocities, 739 00:44:04,320 --> 00:44:06,700 ambayo itakuwa tu kufanya sanamu wamekimbia. 740 00:44:06,700 --> 00:44:07,980 Mwisho vyeo. 741 00:44:07,980 --> 00:44:10,920 Migongano detections, kuiona wote kabla, utoaji, sawa. 742 00:44:10,920 --> 00:44:11,510 Hebu kufanya hivyo. 743 00:44:11,510 --> 00:44:14,200 744 00:44:14,200 --> 00:44:16,050 Hivyo wewe got kufanya SRCS = hello7_mouse.c. 745 00:44:16,050 --> 00:44:21,720 746 00:44:21,720 --> 00:44:22,220 Kubwa. 747 00:44:22,220 --> 00:44:23,490 Hakuna makosa. 748 00:44:23,490 --> 00:44:24,900 Na mchezo. 749 00:44:24,900 --> 00:44:26,440 >> Hivyo hapa nina panya yangu. 750 00:44:26,440 --> 00:44:29,000 Na picha ni kweli Chasing panya yangu. 751 00:44:29,000 --> 00:44:33,140 Sasa, katika mchezo wewe kufanya, labda hii ni kama chasing adui 752 00:44:33,140 --> 00:44:35,240 tabia yako kidogo au chochote. 753 00:44:35,240 --> 00:44:37,440 Lakini hapa tuna picha Chasing panya. 754 00:44:37,440 --> 00:44:41,000 Na wakati mimi click, panya kuanza chasing picha 755 00:44:41,000 --> 00:44:42,860 na picha ni kukimbia kutoka panya. 756 00:44:42,860 --> 00:44:43,810 Hivyo hiyo ni pretty cool. 757 00:44:43,810 --> 00:44:47,770 Na taarifa tena, kuna bado kutambua mgongano hapa. 758 00:44:47,770 --> 00:44:53,930 >> Hivyo kwamba ni kidogo mwisho demo mimi na kuanzisha hapa. 759 00:44:53,930 --> 00:44:58,870 Na hebu tuangalie jambo moja zaidi. 760 00:44:58,870 --> 00:45:02,970 Hivyo nyuma hapa, nilivyoeleza jitter hii. 761 00:45:02,970 --> 00:45:05,000 Sawa. 762 00:45:05,000 --> 00:45:12,890 Hivyo kama umbali ni chini ya miaka mitano, saizi Mimi nilikuwa kuweka x na y kasi na sifuri. 763 00:45:12,890 --> 00:45:15,960 Nini kinatokea kama sisi kujikwamua kwamba? 764 00:45:15,960 --> 00:45:19,070 Hivyo nina kwenda tu kufanya hivyo. 765 00:45:19,070 --> 00:45:23,820 766 00:45:23,820 --> 00:45:30,150 Tafadhali udhuru mtindo huu kutisha, lakini sisi maoni nje kificho sahihi. 767 00:45:30,150 --> 00:45:38,080 Hivyo nina kwenda kuokoa na kufanya amri hiyo kutoka mbele kwa kufanya hivyo. 768 00:45:38,080 --> 00:45:38,785 >> Sawa. 769 00:45:38,785 --> 00:45:39,660 Na sasa nini kitatokea? 770 00:45:39,660 --> 00:45:43,260 771 00:45:43,260 --> 00:45:43,760 Nzuri. 772 00:45:43,760 --> 00:45:45,801 Bado tuko zifuatazo panya tu kama kabla, 773 00:45:45,801 --> 00:45:49,310 lakini wakati sisi kupata panya, sisi tumepewa jitter hii ya jumla. 774 00:45:49,310 --> 00:45:50,320 Nini kinaendelea huko? 775 00:45:50,320 --> 00:45:52,600 Naam, katika vector yetu hisabati, kumbuka tulikuwa 776 00:45:52,600 --> 00:45:57,540 kuchukua umbali kati mshale na katikati ya picha? 777 00:45:57,540 --> 00:46:00,710 Naam, kama kwamba mbinu 0, sisi kuanza kupata 778 00:46:00,710 --> 00:46:06,280 kama aina hii ya tabia mambo ambapo picha ni aina ya 779 00:46:06,280 --> 00:46:08,910 kama oscillating kuzunguka mshale. 780 00:46:08,910 --> 00:46:12,000 Na kwamba kujenga jitter hii. 781 00:46:12,000 --> 00:46:13,020 Na kwamba ni kweli mbaya. 782 00:46:13,020 --> 00:46:15,103 Na pengine hawana wanataka michezo yako kufanya hivyo, 783 00:46:15,103 --> 00:46:17,350 isipokuwa ni aina fulani ya athari maalum. 784 00:46:17,350 --> 00:46:21,960 >> Hivyo ndiyo sababu tuna tu hii holela 785 00:46:21,960 --> 00:46:27,150 kukatwa la tano saizi, ambapo tunasema ikiwa ni ndani ya tano saizi, tuko nzuri. 786 00:46:27,150 --> 00:46:29,560 Hatuna haja ya hoja picha tena. 787 00:46:29,560 --> 00:46:32,260 Hivyo kwamba ni nini kinaendelea huko. 788 00:46:32,260 --> 00:46:37,390 789 00:46:37,390 --> 00:46:40,870 >> Hivyo hiyo ni pretty kiasi. 790 00:46:40,870 --> 00:46:44,390 Wewe sasa kujua jinsi ya kujenga dirisha, mzigo wa Kisasa, 791 00:46:44,390 --> 00:46:49,330 kuteka picha ya dirisha, kupata pembejeo keyboard, kupata pembejeo panya, 792 00:46:49,330 --> 00:46:52,190 kuna kundi la wengine pembejeo kwamba wewe ungekuwa si 793 00:46:52,190 --> 00:46:56,070 kujua jinsi ya kupata kama wewe tu kutumia dakika chache kuangalia nyaraka. 794 00:46:56,070 --> 00:46:59,670 Hivyo kweli kuwa kabisa zana chache ovyo wako sasa 795 00:46:59,670 --> 00:47:01,650 kuandika mchezo full-fledged. 796 00:47:01,650 --> 00:47:05,030 >> Sasa, kila mchezo mahitaji ya baadhi ya redio, lakini nyaraka redio 797 00:47:05,030 --> 00:47:06,460 Pia nzuri sana. 798 00:47:06,460 --> 00:47:09,200 Na mimi niko tayari bet kwamba kama wewe kuelewa mambo yote 799 00:47:09,200 --> 00:47:14,560 kuongelea leo kwa picha, na nyuso, 800 00:47:14,560 --> 00:47:18,370 madirisha, na kila kitu, basi kuhesabia nje API redio sio 801 00:47:18,370 --> 00:47:21,170 kwenda kuwa mbaya. 802 00:47:21,170 --> 00:47:27,420 Hivyo mimi kuangalia mbele kuona nini kujenga na SDL. 803 00:47:27,420 --> 00:47:31,595