1 00:00:00,000 --> 00:00:05,069 2 00:00:05,069 --> 00:00:06,110 THOMAS elav: Okei. 3 00:00:06,110 --> 00:00:07,450 Tere kõigile. 4 00:00:07,450 --> 00:00:08,690 Ma olen Thomas Lively. 5 00:00:08,690 --> 00:00:15,160 See seminar saab olema kirjalikult 2D mänge C SDL. 6 00:00:15,160 --> 00:00:17,970 Nii et ma tean, et sa oled kõik küsib, jah, ma tõesti 7 00:00:17,970 --> 00:00:22,050 tahad mängida ja teha mänge, aga mis see SDL äri? 8 00:00:22,050 --> 00:00:25,320 Nii SDL on C raamatukogu. 9 00:00:25,320 --> 00:00:28,270 Ta seisab Simple Direct Layer. 10 00:00:28,270 --> 00:00:31,340 Ja see on rist platvorm, mängu areng raamatukogu. 11 00:00:31,340 --> 00:00:37,160 Ta töötab Windows, Mac, Linux, isegi iOS ja Android. 12 00:00:37,160 --> 00:00:40,380 Ta tegeleb asjad juurdepääsu audio süsteemid 13 00:00:40,380 --> 00:00:44,900 arvuti, klaviatuuri ja hiir, juhtpuldid, kui nad külge. 14 00:00:44,900 --> 00:00:48,300 On liikuv, see võib isegi teha touch sisestamise ja kõike seda. 15 00:00:48,300 --> 00:00:53,030 Ja muidugi, ta tegeleb graafika, joonistus asju ekraanil. 16 00:00:53,030 --> 00:00:56,470 >> Nii et see on väga laialt levinud, kuigi sa ei kuulnud seda varem. 17 00:00:56,470 --> 00:01:00,860 See on ehitatud viiakse näiteks Valve allikas mootor, 18 00:01:00,860 --> 00:01:04,970 kellele mänge nagu Portal ja Team Fortress 2. 19 00:01:04,970 --> 00:01:08,680 See on ka väga suur hulk indie mänge, mis tulevad, 20 00:01:08,680 --> 00:01:13,545 nii et ma olen põnevil, et näha, mida kõik teeme seda. 21 00:01:13,545 --> 00:01:20,000 >> Seminari eesmärgid on sulle sätestatud olema, ilmutades SDL. 22 00:01:20,000 --> 00:01:22,700 Me läheme õppida luua mängu aknas. 23 00:01:22,700 --> 00:01:26,130 Me läheme luua haldjaid, mis on pildid oma mängu 24 00:01:26,130 --> 00:01:27,744 mida saab liikuda. 25 00:01:27,744 --> 00:01:29,910 Me läheme õppida ja animeerida haldjaid, 26 00:01:29,910 --> 00:01:32,910 nii neid liigutada, teha need muutuvad ajas. 27 00:01:32,910 --> 00:01:35,580 Ja me ei kavatse õppida, kuidas lüüa klaviatuur ja hiir 28 00:01:35,580 --> 00:01:38,240 sisend arvutist. 29 00:01:38,240 --> 00:01:41,550 Mida me ei räägi umbes täna on 3D graafika, 30 00:01:41,550 --> 00:01:45,520 sest see on väga keeruline teema, et meil ei ole aega. 31 00:01:45,520 --> 00:01:49,010 Me ei õpi, kuidas mängida audio meie mängud. 32 00:01:49,010 --> 00:01:53,300 Ja me ei saa ehitada midagi, kuid Linux. 33 00:01:53,300 --> 00:01:58,330 >> Nüüd piirangutega on see, loodetavasti lõpuks seminari, 34 00:01:58,330 --> 00:02:01,660 Teil on rahul SDL dokumentatsiooni, 35 00:02:01,660 --> 00:02:05,370 nii et sa pead olema võimeline minema nuputada kuidas mängida audio ise. 36 00:02:05,370 --> 00:02:12,150 Ka hoone Mac või PC peaks töötama täpselt sama nagu hoone Linux, 37 00:02:12,150 --> 00:02:14,700 kuid setup läheb olla veidi erinev. 38 00:02:14,700 --> 00:02:17,700 Nii et sa peaksid suutma välja mõelda kuidas neid asju teha 39 00:02:17,700 --> 00:02:20,900 lõpuks tänane seminar. 40 00:02:20,900 --> 00:02:26,980 >> Nii et moodustada, me ei kavatse kasutada virtuaalmasina. 41 00:02:26,980 --> 00:02:31,010 Meil oleks kasutada CS50 IDE, sest me lihtsalt saab olema kirjalikult C. 42 00:02:31,010 --> 00:02:35,120 Aga kuna IDE ei ole brauser, me ei saa luua uusi aknaid või ekraan 43 00:02:35,120 --> 00:02:36,410 graafika on. 44 00:02:36,410 --> 00:02:38,450 Seega peame virtuaalne masin. 45 00:02:38,450 --> 00:02:47,790 Nii saab järgige siin manual.CS50.net/appliance/15 46 00:02:47,790 --> 00:02:53,290 paigaldada ametlikes CS50 aparaat, mis on vaid Linux virtuaalse 47 00:02:53,290 --> 00:02:55,110 masin. 48 00:02:55,110 --> 00:02:58,090 >> Ja siis, kui sul on et kõik seatud up-- see 49 00:02:58,090 --> 00:03:02,090 võib võtta natuke aega, sest väga suur download-- sa lähed 50 00:03:02,090 --> 00:03:07,060 töötamine VM sudo apt-get update. 51 00:03:07,060 --> 00:03:09,410 Ja mis tegelikult toimub uuendada kogu tarkvara 52 00:03:09,410 --> 00:03:12,670 pakette oma virtuaalne masin. 53 00:03:12,670 --> 00:03:20,130 >> Pärast seda, sa lähed sõitma sudo apt-get install, libsdl2-2.0-0, 54 00:03:20,130 --> 00:03:27,960 libsdl2-dbg, libsdl2-dev ja Lisaks libsdl2-image-2,0-0, 55 00:03:27,960 --> 00:03:32,560 libsdl2-image-dbg, ja libsdl2-image-dev. 56 00:03:32,560 --> 00:03:33,640 Mida see teeb? 57 00:03:33,640 --> 00:03:38,440 See lihtsalt installib siluda teavet, dokumente, päised, 58 00:03:38,440 --> 00:03:41,260 ja kahendfailid kaks raamatukogud. 59 00:03:41,260 --> 00:03:45,090 Regulaarne vana, SDL 2.0, ja muud teegi 60 00:03:45,090 --> 00:03:50,110 nimetatakse SDL Pilt, mis me ei kavatse olla kasutades 61 00:03:50,110 --> 00:03:54,560 laadida pildifaile meie mängu. 62 00:03:54,560 --> 00:03:57,860 >> Nii et kui teil on, et ka et just siis, kui ta küsib, 63 00:03:57,860 --> 00:04:01,100 sa lihtsalt kirjuta jah, Enter paigaldada need pakid, 64 00:04:01,100 --> 00:04:04,430 ja siis peaks olema hea minna. 65 00:04:04,430 --> 00:04:14,800 Nii et saada jaotus koodi, siis can-- Oh, see ei ole uuendatud. 66 00:04:14,800 --> 00:04:18,480 Kui sul ei ole github account-- Kui teil on github konto 67 00:04:18,480 --> 00:04:24,450 seda saab teha Git kloon käsu repo 68 00:04:24,450 --> 00:04:30,490 ja mis alla laadida Git repo kõik tunnuskoodi, 69 00:04:30,490 --> 00:04:31,700 nii, et sul on kood. 70 00:04:31,700 --> 00:04:36,470 >> Kui te ei ole github konto, mida sa peaksid tegema, on tüüpi 71 00:04:36,470 --> 00:04:48,867 wgithttps: //github.com/tlively/sdl seminar-- ja siin see on erinevalt-- 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 Nii jälle, et on täpselt sama URL, välja arvatud see saab olema 75 00:04:59,220 --> 00:05:09,010 tlively / SDL_seminar / master.zip ja te kasutate wgit allalaadimist. 76 00:05:09,010 --> 00:05:12,940 Ja siis saate lihtsalt unzip, et arhiiv 77 00:05:12,940 --> 00:05:14,900 ja siis pead kõik lähtekoodi. 78 00:05:14,900 --> 00:05:17,580 Nii kahju. 79 00:05:17,580 --> 00:05:23,880 Ja siis koodi ka võõrustajaks CS50 seminar kodulehel paar 80 00:05:23,880 --> 00:05:25,230 päeva. 81 00:05:25,230 --> 00:05:26,590 >> Hästi. 82 00:05:26,590 --> 00:05:29,932 Niisiis, kuidas me Alustamiseks kirjalikult oma mängu? 83 00:05:29,932 --> 00:05:31,890 Noh, esimene asi, me ei kavatse teha tahad 84 00:05:31,890 --> 00:05:34,740 on vaadata SDL dokumentatsiooni. 85 00:05:34,740 --> 00:05:37,020 Nii et siin on VM. 86 00:05:37,020 --> 00:05:38,720 Ja siin on veebilehel. 87 00:05:38,720 --> 00:05:40,340 Olen liikunud elada libsdl.org. 88 00:05:40,340 --> 00:05:43,110 89 00:05:43,110 --> 00:05:48,140 Mida ma teen siin on minna üle külgriba all dokumentatsiooni, 90 00:05:48,140 --> 00:05:51,040 ja klõpsa wiki. 91 00:05:51,040 --> 00:05:56,870 See toob mind wiki et on enamik dokumente SDL. 92 00:05:56,870 --> 00:06:01,360 Üle sidebar siin me oleme läheb klõpsake API kaupa, 93 00:06:01,360 --> 00:06:04,300 kuna annan meil kena kategooriline vaade 94 00:06:04,300 --> 00:06:07,770 Kogu API SDL. 95 00:06:07,770 --> 00:06:12,390 >> Nii näiteks on meil põhilised initsialiseerimise 96 00:06:12,390 --> 00:06:18,380 ja sulgeda, kõik omamoodi haldus- kraami SDL, 97 00:06:18,380 --> 00:06:21,630 ja siis on meil sektsioon väljapanek asju ekraanil. 98 00:06:21,630 --> 00:06:23,000 See video. 99 00:06:23,000 --> 00:06:25,790 Sisend sündmused, mis on saada sisend klaviatuurilt, 100 00:06:25,790 --> 00:06:29,710 saada sisend hiire ja juhtkangi, kui teil seda isegi. 101 00:06:29,710 --> 00:06:32,901 Seal jõu tagasiside eest asju nagu mäng kontrollerid, mis 102 00:06:32,901 --> 00:06:34,150 me ei hakka rääkima. 103 00:06:34,150 --> 00:06:35,630 Ja siin on heli. 104 00:06:35,630 --> 00:06:38,940 Ja siis on hunnik muid värk, et SDL teha saab. 105 00:06:38,940 --> 00:06:43,830 >> Aga täna me ei kavatse keskenduda lähtestamise siin 106 00:06:43,830 --> 00:06:48,332 piltide kuvamiseks video osas ning käitlemise sisend sündmused. 107 00:06:48,332 --> 00:06:50,290 Nii et need on peamised sektsioonid dokumentide 108 00:06:50,290 --> 00:06:53,050 et sa peaksid muretsema. 109 00:06:53,050 --> 00:06:57,170 Just for fun, kui me läheme üle siin ja klõpsake API nime järgi 110 00:06:57,170 --> 00:07:04,350 saame näha nimekirja iga ühe asjana SDL raamatukogu. 111 00:07:04,350 --> 00:07:11,330 Nii et kõik need funktsioonid, loendite, struktuure, hull summa kraami, 112 00:07:11,330 --> 00:07:12,820 tähestikulises järjekorras. 113 00:07:12,820 --> 00:07:14,580 Ja selgelt, kuni tead sa teed, 114 00:07:14,580 --> 00:07:19,100 see ei kavatse olla liiga abivalmis, mistõttu me API kaupa. 115 00:07:19,100 --> 00:07:20,810 >> Nii alustame. 116 00:07:20,810 --> 00:07:25,680 Loodetavasti olete juba Allalaaditud jaotus koodi. 117 00:07:25,680 --> 00:07:30,070 Ja mis siis saab teha, on õigus siin CS50 aparaat, 118 00:07:30,070 --> 00:07:31,150 lihtsalt avada terminal. 119 00:07:31,150 --> 00:07:33,750 120 00:07:33,750 --> 00:07:34,440 Siin me läheme. 121 00:07:34,440 --> 00:07:40,740 Nii et ma olen juba alla laadinud jaotus koodi abil .zip 122 00:07:40,740 --> 00:07:41,690 meetodit. 123 00:07:41,690 --> 00:07:43,140 Ja ma olen mahalaadimist seda. 124 00:07:43,140 --> 00:07:46,120 Nii et siin see on SDL seminar kapten. 125 00:07:46,120 --> 00:07:49,750 Nii et ma lähen sinna kataloogi. 126 00:07:49,750 --> 00:07:55,310 Ja mida me näeme siin et meil on seitse C faile. 127 00:07:55,310 --> 00:07:58,070 Ja see saab koodi me ei kavatse vaadates täna. 128 00:07:58,070 --> 00:08:00,040 Meil on makefile'i. 129 00:08:00,040 --> 00:08:06,950 Ja meil on ressursse kataloog, mis lihtsalt on pilt 130 00:08:06,950 --> 00:08:09,070 mis sest te näete varsti. 131 00:08:09,070 --> 00:08:16,060 >> Nii saab avada neid faile kasutades G-Edit toimetaja. 132 00:08:16,060 --> 00:08:22,000 Ma tahan, et avada kõik failid, mis Kõigepealt tere ja lõpeb .c. 133 00:08:22,000 --> 00:08:23,380 Siin me läheme. 134 00:08:23,380 --> 00:08:28,180 Nii et see väike aken, nii et me oleme üritagi teha, et suurem. 135 00:08:28,180 --> 00:08:28,900 Ei, see läks ära. 136 00:08:28,900 --> 00:08:32,836 137 00:08:32,836 --> 00:08:34,570 >> Hästi. 138 00:08:34,570 --> 00:08:37,959 Nii et siin on kõige esimene file me ei kavatse vaadata. 139 00:08:37,959 --> 00:08:39,000 Seda nimetatakse hello1_sdl.c. 140 00:08:39,000 --> 00:08:41,890 141 00:08:41,890 --> 00:08:47,980 Ja seda kõike teeb, on initsialiseerida SDL raamatukogu, nii et me saame seda kasutama hakata. 142 00:08:47,980 --> 00:08:51,550 Kuidas sa tead, et tulla kuni see kood ise? 143 00:08:51,550 --> 00:08:53,850 Noh, kui me vaatame üle dokumentatsiooniga 144 00:08:53,850 --> 00:08:58,040 ja läheme initsialiseerimise ja sulgeda osas 145 00:08:58,040 --> 00:09:02,230 see läheb meile kõigile kuidas initsialiseerida SDL. 146 00:09:02,230 --> 00:09:06,630 Nii kindlasti lugeda seda mõni teine ​​kord. 147 00:09:06,630 --> 00:09:09,230 See ei ütle teile kõigile selle kohta, mis siin toimub. 148 00:09:09,230 --> 00:09:14,360 Kuid peamine asja tuum on selles, et peame nimetame seda funktsiooni SDL IT 149 00:09:14,360 --> 00:09:18,910 ja liigu see, milliseid asju tahame raamatukogu initsialiseerida. 150 00:09:18,910 --> 00:09:23,620 Nii meie puhul me lihtsalt läheb initsialiseerida video nüüd, 151 00:09:23,620 --> 00:09:26,690 nii et saame alustada piltide kuvamiseks. 152 00:09:26,690 --> 00:09:32,370 >> Üle siin, näete, kui me klõpsate SDL see, me 153 00:09:32,370 --> 00:09:36,160 võib saada isegi rohkem infot, sealhulgas tagasipöördumise väärtust. 154 00:09:36,160 --> 00:09:39,050 Nii et me näeme siin, et seda returnes null edu. 155 00:09:39,050 --> 00:09:43,320 Nii meie koodi, me ei kavatse kas see ei tagasta null, 156 00:09:43,320 --> 00:09:47,020 ja kui ta ei tagasta null, nii et see ei õnnestunud, 157 00:09:47,020 --> 00:09:50,650 siis me lähme lihtsalt print viga kasutades seda muud ülesanded, 158 00:09:50,650 --> 00:09:56,260 SDL get viga, mis tagastab stringi kirjeldades esinenud vea. 159 00:09:56,260 --> 00:09:58,510 Me läheme printida, et viga ja siis me lihtsalt 160 00:09:58,510 --> 00:10:02,270 läheb väljuda programmi veakoodi. 161 00:10:02,270 --> 00:10:06,470 >> Siis veel üks asi, mida me vajame teha on, enne programmi väljapääsu, 162 00:10:06,470 --> 00:10:10,830 kui me edukalt vormindatud SDL, Me lihtsalt vaja kutsuda SDL loobuda. 163 00:10:10,830 --> 00:10:15,750 Ja see läheb hakkama puhastamiseks kõik SDL sisemiste ressursside juures. 164 00:10:15,750 --> 00:10:21,240 Nii dokumentatsiooni there-- uuesti, siin me oleme initsialiseerimise 165 00:10:21,240 --> 00:10:23,640 ja sulgeda osa dokumentatsiooni. 166 00:10:23,640 --> 00:10:26,680 Sa võid klõpsata funktsiooni siin, SDL loobuda, 167 00:10:26,680 --> 00:10:28,700 ja saate lugeda kõike, mis samuti. 168 00:10:28,700 --> 00:10:31,400 Ja palju neid funktsiooni dokumentatsiooni lehekülge 169 00:10:31,400 --> 00:10:35,630 on näiteks koodi, nii et see on väga hea vahend. 170 00:10:35,630 --> 00:10:39,610 Kindlasti veeta aega lugedes osad selle wiki 171 00:10:39,610 --> 00:10:42,520 kui sa lähed tegema Selle projekti. 172 00:10:42,520 --> 00:10:43,760 >> Hästi. 173 00:10:43,760 --> 00:10:46,590 Nii et kogu meie programmi. 174 00:10:46,590 --> 00:10:53,935 Mida me saame teha nüüd on-- ma olen läheb avama Makefile'i siin 175 00:10:53,935 --> 00:10:56,150 nii et ma lähen võtta vaadata, kuidas see toimib. 176 00:10:56,150 --> 00:10:59,500 Ja see on väga lihtne Makefile'i sarnane sellega, mida olete näinud. 177 00:10:59,500 --> 00:11:04,010 Üks peamisi erinevusi on see, et siin, see 178 00:11:04,010 --> 00:11:07,870 läheb sisestada tulemus jooksmine Selle käsu, mis olete juba 179 00:11:07,870 --> 00:11:10,850 paigaldatud, kui olete installinud SDL. 180 00:11:10,850 --> 00:11:13,230 Ja see on käsk et läheb genereerima 181 00:11:13,230 --> 00:11:16,710 mõned ekstra lipud koostaja. 182 00:11:16,710 --> 00:11:22,050 >> Lisaks sellele, anname selle kõiki tavalisi käske, samuti 183 00:11:22,050 --> 00:11:23,430 Nende kahe käske. 184 00:11:23,430 --> 00:11:30,270 Nii -lsdl2 pildi käepidemed ühendab ka SDL raamatukogu pilt. 185 00:11:30,270 --> 00:11:36,200 Ja -lm tegelikult tegeleb sidumine standardis C matemaatika raamatukogu. 186 00:11:36,200 --> 00:11:40,630 Nii et me ei kavatse vaja Neil kõigile meie C faile, 187 00:11:40,630 --> 00:11:43,900 aga me lihtsalt panna neid nii, et me saame kasutada sama makefile'i kõike 188 00:11:43,900 --> 00:11:44,816 ilma muudatusteta. 189 00:11:44,816 --> 00:11:46,970 190 00:11:46,970 --> 00:11:50,080 >> Üle siin allikatest, see on koht, kus sa tahaks 191 00:11:50,080 --> 00:11:53,680 pane failid, et sa läksid koostada oma projekti. 192 00:11:53,680 --> 00:11:57,570 Aga kuna iga üks mu C ideks on peamine funktsioon, 193 00:11:57,570 --> 00:12:00,000 see läheb Segaduse Kui me paneme neid kõiki. 194 00:12:00,000 --> 00:12:06,930 Nii et ma lähen lihtsalt öelda, nüüd, hello1_sdl.c, 195 00:12:06,930 --> 00:12:11,150 mis on üks me lihtsalt vaatasin. 196 00:12:11,150 --> 00:12:18,740 Nii et kui ma lähen tagasi üle siin, ma suudan teha. 197 00:12:18,740 --> 00:12:22,160 Ja mis ta tegi on see lihtsalt koostatud, et esimene fail. 198 00:12:22,160 --> 00:12:28,780 Ja siis saame kirjutada ./game, sest see on käivitatav seda toodetakse. 199 00:12:28,780 --> 00:12:31,660 Ja kõik see ei olnud print initsialiseerimise edukas. 200 00:12:31,660 --> 00:12:33,300 Nii et me tegime midagi õigesti. 201 00:12:33,300 --> 00:12:36,200 Aga see oli selline igav, sest me ei näe aknas 202 00:12:36,200 --> 00:12:37,900 midagi liikus ringi. 203 00:12:37,900 --> 00:12:41,030 >> Nii tore, me saime SDL vormindatud. 204 00:12:41,030 --> 00:12:43,520 Nüüd liigume millegi natuke huvitavamaks. 205 00:12:43,520 --> 00:12:54,700 Nii et siin on meil hello2_window.c ja see saab olema veidi rohkem 206 00:12:54,700 --> 00:13:00,010 keeruline C programm, mis algväärtustab SDL nagu enne, 207 00:13:00,010 --> 00:13:04,250 va nüüd oleme ka läheb initsialiseerida SDL taimer. 208 00:13:04,250 --> 00:13:07,720 Ja see läheb meile juurdepääsu sisemise taimeri 209 00:13:07,720 --> 00:13:10,550 ja kasutada funktsioone, mis on seotud aja. 210 00:13:10,550 --> 00:13:11,920 >> Ja siis vaatame siin. 211 00:13:11,920 --> 00:13:16,840 Mida me teeme, on meil see pointer kaasa SDL aknas struct, mis 212 00:13:16,840 --> 00:13:21,160 läheb loodud see kõne funktsioonile, SDL luua aknas. 213 00:13:21,160 --> 00:13:25,380 Nüüd, see võtab palju argumente, nii lähme vaatame dokumentatsiooni. 214 00:13:25,380 --> 00:13:27,930 Nii jälle, ma lähen API kategooria, ma olen 215 00:13:27,930 --> 00:13:33,820 läheb alla video siin, ja esimene paragrahvi väljapanek aknas juhtimise. 216 00:13:33,820 --> 00:13:36,470 Nii et see osa on ton asju see, 217 00:13:36,470 --> 00:13:39,970 aga kui sa vaatad läbi neid funktsioone, saate 218 00:13:39,970 --> 00:13:43,620 näha, et ilmselt üks me tahan nimetatakse SDL luua aknas 219 00:13:43,620 --> 00:13:46,600 mis juhtub olema õigus ülaosas. 220 00:13:46,600 --> 00:13:49,080 >> Ja nii see on dokumentatsiooni selle funktsiooni. 221 00:13:49,080 --> 00:13:53,710 Aken läheb on pealkiri, x ja y asukoha ekraanil, 222 00:13:53,710 --> 00:13:56,960 see saab olema laiusega, kõrgus, ja siis see läheb võtma mõned lipud. 223 00:13:56,960 --> 00:14:01,220 Nüüd, me ei tegelikult hoolivad kõik need lipud kohe, 224 00:14:01,220 --> 00:14:04,560 aga kui sa tahad midagi teha nagu make täisekraani aken, 225 00:14:04,560 --> 00:14:07,920 sa võiksid heita pilk selle. 226 00:14:07,920 --> 00:14:13,190 Praegu me lihtsalt läheb kasutada neid erilisi väärtusi, 227 00:14:13,190 --> 00:14:18,775 SDL aknas pluss keskele x ja y, et 228 00:14:18,775 --> 00:14:21,800 lihtsalt luua aken keskel meie ekraanil. 229 00:14:21,800 --> 00:14:24,370 >> Nii et mida see teeb. 230 00:14:24,370 --> 00:14:27,960 Ja kui akna juhtub olema null, mis tähendab, et on viga, 231 00:14:27,960 --> 00:14:32,570 siis jälle me lihtsalt läheb prindi viga SDL get viga. 232 00:14:32,570 --> 00:14:36,570 Ja siis kuna me vormindatud SDL, nüüd on meil vaja sulgeda. 233 00:14:36,570 --> 00:14:40,900 Nii me nimetame SDL loobuda enne tagasi üks peamine. 234 00:14:40,900 --> 00:14:42,905 >> Nii et meil on see aken avada loodetavasti. 235 00:14:42,905 --> 00:14:44,613 Ja mida me ei kavatse tegema, on me läheme 236 00:14:44,613 --> 00:14:50,340 helistada SDL 5000 millisekundit, mis on sama kui viis sekundit. 237 00:14:50,340 --> 00:14:55,640 Ja kui me teinud, et see saab hävitada aknas 238 00:14:55,640 --> 00:14:59,470 koristada SDL raamatukogu ja programmist väljuda. 239 00:14:59,470 --> 00:15:05,240 Nii lähme edasi ja anda, et tulistas. 240 00:15:05,240 --> 00:15:08,660 >> Nüüd muutmise asemel Makefile'i iga kord, 241 00:15:08,660 --> 00:15:12,180 Ma lihtsalt ei tee, ja siis käsurealt 242 00:15:12,180 --> 00:15:16,090 öelda allikatest võrdub ja seejärel Faili me koostamisel. 243 00:15:16,090 --> 00:15:17,090 Nii et see on hello2_window.c. 244 00:15:17,090 --> 00:15:21,390 245 00:15:21,390 --> 00:15:21,890 Fantastiline. 246 00:15:21,890 --> 00:15:22,970 No erros. 247 00:15:22,970 --> 00:15:26,085 Nüüd, kui võtame meie käivitatav, me näeme seda akent. 248 00:15:26,085 --> 00:15:27,960 Nüüd on paar probleeme aknas. 249 00:15:27,960 --> 00:15:32,820 Me saame seda liigutatakse, kuid see on Selle taustal junk sees on. 250 00:15:32,820 --> 00:15:34,660 Nii et me ei ole koostatud midagi, ja nii see on 251 00:15:34,660 --> 00:15:38,210 lihtsalt täis prügi, mis on päris palju, mida me ootame. 252 00:15:38,210 --> 00:15:41,010 >> Veelgi enam, me ei saa akna sulgeda. 253 00:15:41,010 --> 00:15:44,780 Ma selle nupu X nurgas ja midagi juhtub. 254 00:15:44,780 --> 00:15:47,840 Nii me näeme, kuidas määrata et natuke. 255 00:15:47,840 --> 00:15:51,750 Nii saab määrata osa, kus aken on täis prügi esimene. 256 00:15:51,750 --> 00:16:00,850 Nii et kui me läheme üle hello3_image.c, mida näeme, et me oleme lisanud mõned 257 00:16:00,850 --> 00:16:03,360 rohkem asju siin. 258 00:16:03,360 --> 00:16:08,740 Lisasime see uus päise kaudu esitada saada ajastifunktsiooniga. 259 00:16:08,740 --> 00:16:11,490 Ma arvan, et me tegime seda eelmisel üks, liiga, ja ma ei maininud seda. 260 00:16:11,490 --> 00:16:13,550 Aga nüüd, sest me oleme töötab koos piltidega, 261 00:16:13,550 --> 00:16:18,720 vajame lisada SDL image päisefail samuti. 262 00:16:18,720 --> 00:16:22,087 Nii et see on sama asi nagu Enne, initializing SDL siin 263 00:16:22,087 --> 00:16:23,420 Sama asi on luua aknad. 264 00:16:23,420 --> 00:16:25,380 Me oleme näinud, et enne praegu. 265 00:16:25,380 --> 00:16:29,870 >> Nüüd tuleb meil luua midagi, mida nimetatakse rasvasulataja, mis justkui läheb mööda 266 00:16:29,870 --> 00:16:30,800 aknaga. 267 00:16:30,800 --> 00:16:33,860 Aga see on omamoodi abstraktne objekt, mis on 268 00:16:33,860 --> 00:16:37,370 vastutab teeme kõik need joonistus toimingud akent. 269 00:16:37,370 --> 00:16:41,580 Ja see vastab tegelikult et programmi koormatud 270 00:16:41,580 --> 00:16:47,880 arvesse graafika riistvara teie arvuti või telefoni või mis iganes. 271 00:16:47,880 --> 00:16:51,005 Nii lipud tahame edasi see-- ja te saate vaadata dokumentatsioon 272 00:16:51,005 --> 00:16:56,160 saada täpsemalt siin-- ei kavatse tuleb SDL krohvikihid kiirenenud, mis 273 00:16:56,160 --> 00:16:58,550 tähendab see saab olema kasutades graafika riistvara 274 00:16:58,550 --> 00:17:01,490 ja mitte ainult eeskuju tarkvara. 275 00:17:01,490 --> 00:17:07,390 >> Ja me ei kavatse kasutada SDL RENDERER PRESENTVSYNC. 276 00:17:07,390 --> 00:17:12,280 VSYNC on asi, mis lihtsalt teeb Sinu graafika vaata parem ja takistab 277 00:17:12,280 --> 00:17:14,970 see asi, mida nimetatakse ekraan terror, kus pool 278 00:17:14,970 --> 00:17:17,720 Ühe raami ja pool järgmise raam laskuge samal ajal 279 00:17:17,720 --> 00:17:20,056 ja see tundub kohutav. 280 00:17:20,056 --> 00:17:23,130 Aga jälle, võid minna lugema sellest oma. 281 00:17:23,130 --> 00:17:24,319 >> Nii et meil on mõned lipud siin. 282 00:17:24,319 --> 00:17:27,810 Ja nii me lihtsalt läheb helistada Selle funktsiooni SDL luua renderdusmootoriga. 283 00:17:27,810 --> 00:17:31,340 Me läheme anna see aken seostaks selle renderdusmootoriga. 284 00:17:31,340 --> 00:17:34,520 Negatiivne üks tähendab, et me ei hooli, mida graafikadraiver me ei kavatse kasutada. 285 00:17:34,520 --> 00:17:36,603 Nii et peaks päris palju alati negatiivne, 286 00:17:36,603 --> 00:17:39,010 kui sa tead graafika draiverid. 287 00:17:39,010 --> 00:17:41,650 Ja siis me lihtsalt läheb andke seda meie lippu. 288 00:17:41,650 --> 00:17:47,240 Nii et kui mis tagastab null, siis me oleme trükkimineku viga nagu tavaliselt, 289 00:17:47,240 --> 00:17:49,550 aga siis me ka läheb hävitada akna 290 00:17:49,550 --> 00:17:54,970 puhastada neid vahendeid enne kutsudes SDL väljuda ja tagasi. 291 00:17:54,970 --> 00:17:58,110 >> Nüüd huvitavam osa siin on koht, kus me koormus meie pilti 292 00:17:58,110 --> 00:18:00,870 Selle funktsiooni abil IMG_load. 293 00:18:00,870 --> 00:18:04,050 See on ainus funktsioon läheme kasutada alates SDL raamatukogu pilt. 294 00:18:04,050 --> 00:18:05,480 See on ainus, mida me vajame. 295 00:18:05,480 --> 00:18:12,950 See on funktsioon, mis võtab stringi mis on tee ühtegi pilti ressurss. 296 00:18:12,950 --> 00:18:18,024 Ja see võib olla PNG, GIF, bitmap, mõni neist asjadest. 297 00:18:18,024 --> 00:18:19,690 Ja see ongi see funktsioon on nii kena. 298 00:18:19,690 --> 00:18:22,560 Seda võib käsitleda päris palju tahes vormis. 299 00:18:22,560 --> 00:18:27,240 Saadetised mällu ja salvestab selle kui asi nimega SDL pinnale. 300 00:18:27,240 --> 00:18:34,660 >> Nüüd SDL pind on vaid struct mis esindab kujutise andmete mälus. 301 00:18:34,660 --> 00:18:38,054 Nii saab lähemalt lugeda et dokumentatsioonis kaks. 302 00:18:38,054 --> 00:18:40,720 Ja kui see viga, siis me oleme kavatsed teha kogu asi, kus 303 00:18:40,720 --> 00:18:44,480 Me printida viga, sulgeda ressursse ja seejärel sulgege programm. 304 00:18:44,480 --> 00:18:48,970 Nüüd huvitav asi on, enne saame teha seda pilti akna 305 00:18:48,970 --> 00:18:51,390 peame tegelikult oleks tekstuuri. 306 00:18:51,390 --> 00:18:54,460 Nüüd tekstuur vastab pildi andmed laetakse 307 00:18:54,460 --> 00:18:57,820 arvesse graafika riistvara mällu. 308 00:18:57,820 --> 00:19:00,720 >> Nii pinnale on peamine mälu, regulaarne mälu 309 00:19:00,720 --> 00:19:05,550 et me oleme kasutanud kõiki poolaasta ja tekstuur on selles eraldi VRAM 310 00:19:05,550 --> 00:19:09,410 mälu, videokaart kontrolli. 311 00:19:09,410 --> 00:19:13,170 Nii et me nimetame seda funktsiooni SDL_CreateTextureFromSurface. 312 00:19:13,170 --> 00:19:17,104 Anname siis meie renderdusmootoriga ja meie pinnal. 313 00:19:17,104 --> 00:19:19,020 Ja siis me tegelikult teinud pinnaga, 314 00:19:19,020 --> 00:19:20,311 nii me lihtsalt läheb vabastatud. 315 00:19:20,311 --> 00:19:22,210 Me ei vaja seda enam. 316 00:19:22,210 --> 00:19:26,650 Ja siis nii et kui see kõne errored ja tagasi null, 317 00:19:26,650 --> 00:19:29,630 siis me teeme kogu Tõrketeavituse asi uuesti. 318 00:19:29,630 --> 00:19:30,920 >> Hästi. 319 00:19:30,920 --> 00:19:34,810 Siin me sattuda mõnda tegelik renderdamine toimib. 320 00:19:34,810 --> 00:19:37,730 Nii helistades SDL_RenderClear ja saata see 321 00:19:37,730 --> 00:19:42,550 renderdusmootor seotud meie aknas lihtsalt teeb akna mustaks. 322 00:19:42,550 --> 00:19:47,650 Nii see eemaldab et rämps, et me nägime Meie aknas enne ja muudab mustaks. 323 00:19:47,650 --> 00:19:50,750 Ja siis me läheme helistada SDL_RenderCopy, 324 00:19:50,750 --> 00:19:53,010 annab see meie renderdusmootoriga meie tekstuuri. 325 00:19:53,010 --> 00:19:55,800 Ja me räägime, mida Nendes valdkondades on natuke. 326 00:19:55,800 --> 00:19:57,830 Aga see läheb võtta tekstuuri andmeid 327 00:19:57,830 --> 00:20:03,100 ja kopeerida selle peale meie akna joonistamiseks pilti. 328 00:20:03,100 --> 00:20:07,020 Nii et pärast oleme teinud seda koopiat andmed peale meie aknas 329 00:20:07,020 --> 00:20:11,180 Me ei pea seda tegema ekstra funktsiooni nimetatakse SDL_RenderPresent. 330 00:20:11,180 --> 00:20:15,360 >> Ja see on huvitav sest see muutub 331 00:20:15,360 --> 00:20:18,770 arvesse teema nimega topeltpuhverduseks. 332 00:20:18,770 --> 00:20:24,380 Nii topeltpuhverduseks on meetod, mis muudab graafika otsida palju parem. 333 00:20:24,380 --> 00:20:28,240 Jällegi, see takistab selle ekraani rebimine Ma rääkisin varem, kus 334 00:20:28,240 --> 00:20:29,590 Teil on kaks puhvrid. 335 00:20:29,590 --> 00:20:32,260 Seal on tagasi puhvri mälu ja ees puhvri. 336 00:20:32,260 --> 00:20:36,410 Ees puhver on sõna otseses mõttes Mis ekraanile hetkel. 337 00:20:36,410 --> 00:20:42,070 Nii et me kõik need teha muutusi, nagu SDL muuta koopia või SDL_RenderClear 338 00:20:42,070 --> 00:20:43,080 taha puhvri. 339 00:20:43,080 --> 00:20:44,800 Nii nad muuta asju taga puhver. 340 00:20:44,800 --> 00:20:48,970 Siin võiks olla joonistus seda roheline ruut, et tagasi puhvri. 341 00:20:48,970 --> 00:20:52,300 >> Nii siis, kui me teinud teed Meie muuta operatsioone, mis 342 00:20:52,300 --> 00:20:55,700 võib võtta päris pika aeg, mida me teeme 343 00:20:55,700 --> 00:20:57,860 on vaja minna puhvrid. 344 00:20:57,860 --> 00:21:00,720 Nii et see sõna otseses mõttes lihtsalt võtab ees puhver ja tagasi puhver 345 00:21:00,720 --> 00:21:02,990 ja lülitab neid nii et kohe, 346 00:21:02,990 --> 00:21:06,630 ühe operatsiooniga asemel võibolla sadu või tuhandeid, 347 00:21:06,630 --> 00:21:10,910 kõik meie äsja sulatatud objektid on ekraanil. 348 00:21:10,910 --> 00:21:13,160 Ja see takistab asja nagu ekraani värskendav 349 00:21:13,160 --> 00:21:16,710 Kui me oleme vaid tõmmatakse poole Meie objektid kaadris. 350 00:21:16,710 --> 00:21:21,280 Nii et miks meil on vaja helistada SDL_RenderPresent, samuti 351 00:21:21,280 --> 00:21:23,320 kui SDL_RenderCopy. 352 00:21:23,320 --> 00:21:25,749 >> Jällegi, me lihtsalt läheb ootama viis sekundit. 353 00:21:25,749 --> 00:21:27,540 Siis me ei kavatse koristada meie ressursse. 354 00:21:27,540 --> 00:21:29,540 Meil on üsna vähe rohkem seekord. 355 00:21:29,540 --> 00:21:31,750 Ja siis me lihtsalt läheb programmist väljuda. 356 00:21:31,750 --> 00:21:35,350 Nii teeme seda. 357 00:21:35,350 --> 00:21:41,880 Ma lähen kirjutama make ja seejärel allikad võrdub hello-- see on nüüd 3image.c. 358 00:21:41,880 --> 00:21:49,632 359 00:21:49,632 --> 00:21:52,240 Kõik õige, et koostatud vigu. 360 00:21:52,240 --> 00:21:57,210 Ja näed siin ma olen nüüd välja toodud minu pilt, Tere, CS50! 361 00:21:57,210 --> 00:22:00,560 meie akna, mis kaob pärast viie sekundiga. 362 00:22:00,560 --> 00:22:02,090 >> Nüüd, see on veel probleeme, eks? 363 00:22:02,090 --> 00:22:05,750 See ei ole hea rakendus, sest kui ma üritan akna sulgeda, 364 00:22:05,750 --> 00:22:06,500 midagi ei juhtu. 365 00:22:06,500 --> 00:22:09,540 See x ole veel tundlik. 366 00:22:09,540 --> 00:22:17,420 Võtame pilk Järgmise faili hello4animation. 367 00:22:17,420 --> 00:22:21,850 Nii et see on faili mis läheb sisse 368 00:22:21,850 --> 00:22:25,124 Liikumine ja liikumine meie pilt. 369 00:22:25,124 --> 00:22:27,040 Nii et me läheme tegema sama asi nagu enne, 370 00:22:27,040 --> 00:22:30,190 algatada SDL, luua aken, luua renderdusmootoriga 371 00:22:30,190 --> 00:22:33,030 koormus pildi mälu, luua tekstuuri. 372 00:22:33,030 --> 00:22:35,090 Me oleme näinud kõike seda enne. 373 00:22:35,090 --> 00:22:36,770 Nüüd on see uus. 374 00:22:36,770 --> 00:22:42,305 Me läheme on struktuuri nimetatakse SDL ristkülik, mis on ristkülik. 375 00:22:42,305 --> 00:22:49,950 Kui me läheme siia, saame ei otsi SDL ristkülik, 376 00:22:49,950 --> 00:22:54,040 ja näed, et see on väga lihtsa struktuuriga. 377 00:22:54,040 --> 00:22:56,760 See on x, y for positsiooni, ja see 378 00:22:56,760 --> 00:23:02,080 on laius ja kõrgus for suurusest ristkülik. 379 00:23:02,080 --> 00:23:07,785 >> Mida me teeme on me läheb määratleda selle SDL ristkülik dest, 380 00:23:07,785 --> 00:23:09,480 sihtkohale. 381 00:23:09,480 --> 00:23:14,130 Ja see on koht, Ekraanil, kus 382 00:23:14,130 --> 00:23:16,005 me ei kavatse joonistus meie pilt, eks siis 383 00:23:16,005 --> 00:23:17,880 Kui me ei kavatse olla liikuv pilt ümber, 384 00:23:17,880 --> 00:23:20,300 siis kohtades, kus me ei kavatse teha pilti 385 00:23:20,300 --> 00:23:22,620 tuleb ringi liiguvad. 386 00:23:22,620 --> 00:23:24,910 Nii et me läheme nimetame seda funktsiooni SDL_QueryTexture. 387 00:23:24,910 --> 00:23:27,550 388 00:23:27,550 --> 00:23:33,500 Ja teate ma möödaminnes aadress of dest.w, mis on laiust, 389 00:23:33,500 --> 00:23:36,950 ja dest.h, mis on kõrgusest. 390 00:23:36,950 --> 00:23:40,425 Ja nii SDL_QueryTexture läheb talletada nende valdkondade laius 391 00:23:40,425 --> 00:23:41,675 ja kõrgus meie tekstuuri. 392 00:23:41,675 --> 00:23:44,680 393 00:23:44,680 --> 00:23:47,030 >> Ja siis ma lähen teha on Ma lähen 394 00:23:47,030 --> 00:23:55,580 seada dest.x olema aken laius miinus dest.w, mis on 395 00:23:55,580 --> 00:23:59,000 laiuse sprite jagatuna 2. 396 00:23:59,000 --> 00:24:03,860 Ja see saab seda seadistada nii, et pilt on täiesti keskele 397 00:24:03,860 --> 00:24:06,780 meie akna, eks? 398 00:24:06,780 --> 00:24:08,652 Nüüd on mul y positsiooni. 399 00:24:08,652 --> 00:24:10,360 Ja see läheb on muutuja, mis on 400 00:24:10,360 --> 00:24:16,390 muutumas, sest me ei kavatse olla liikuv pilt y suunas. 401 00:24:16,390 --> 00:24:19,050 Ja nüüd on meil midagi nimetatakse animatsiooni loop. 402 00:24:19,050 --> 00:24:21,180 >> Niisiis, kuidas animatsioon toimib? 403 00:24:21,180 --> 00:24:27,630 Noh, inimsilm suudab tuvastada 12 erinevat pildid iga teine, eks? 404 00:24:27,630 --> 00:24:33,060 Nii et kui sa vilkuma 12 pilti kaardid mind teises, ma nägin kõiki neid pilte 405 00:24:33,060 --> 00:24:35,950 kui oma isikupäraseid pilti. 406 00:24:35,950 --> 00:24:39,690 Nüüd, kui te vilkuma rohkem pildid minu teine, 407 00:24:39,690 --> 00:24:42,140 siis mu silma hakkaks hägustada neid koos 408 00:24:42,140 --> 00:24:46,920 ja ma seda tajuda algatusel, ühe asemel eraldiseisev pilt. 409 00:24:46,920 --> 00:24:51,930 Nii näiteks filmi ja televisiooni, nad vilguvad pildid sa 24 korda 410 00:24:51,930 --> 00:24:52,570 teise. 411 00:24:52,570 --> 00:24:55,110 Nii et 24 kaadrit sekundis. 412 00:24:55,110 --> 00:25:00,136 Arvuti ekraanidel, teisalt Sageli on 60 kaadrit sekundis. 413 00:25:00,136 --> 00:25:01,260 See on nende refresh kiirus. 414 00:25:01,260 --> 00:25:04,650 See, kui tihti nad värskendada pilt ekraanil. 415 00:25:04,650 --> 00:25:08,960 Nii et meie eesmärk saab olema 60 kaadrit sekundis meie mängud. 416 00:25:08,960 --> 00:25:11,770 417 00:25:11,770 --> 00:25:13,710 >> Vaatame, mis koodi. 418 00:25:13,710 --> 00:25:19,064 Nii iga kaadri, me oleme esimene läheb puhtaks aknas. 419 00:25:19,064 --> 00:25:20,230 See on üldine muster. 420 00:25:20,230 --> 00:25:22,450 Sa alati selge akna iga kaadri ning seejärel 421 00:25:22,450 --> 00:25:25,210 teha kõik oma joonistus operatsioone, ja siis lõpus, 422 00:25:25,210 --> 00:25:29,610 ei RenderPresent näidata kõik raami. 423 00:25:29,610 --> 00:25:33,910 Ja siis sa lähed on oodata aasta lõpus 424 00:25:33,910 --> 00:25:36,340 ootama kuni järgmise raam peaks algama. 425 00:25:36,340 --> 00:25:38,650 >> Nii et kui ma tegin palju keeruliste arvutuste siin 426 00:25:38,650 --> 00:25:43,100 et võttis rohkem kui 16 millisekundit, oleks mul võimatu 427 00:25:43,100 --> 00:25:46,890 saada, et kaadrisagedusega 60, et Ma tahtsin, sest iga kaadri 428 00:25:46,890 --> 00:25:48,750 võtab liiga kaua aega arvutada. 429 00:25:48,750 --> 00:25:52,340 Lisaks, me tõesti teeme omamoodi tühine hulk tööd 430 00:25:52,340 --> 00:25:54,820 siin, sest seal on ainult üks asi, mida me oleme joonistus. 431 00:25:54,820 --> 00:25:59,390 Nii et ma lihtsalt ootama 1/60 kohta Teine, mida on pikkus 432 00:25:59,390 --> 00:26:01,520 raami vahele raamid. 433 00:26:01,520 --> 00:26:05,610 Nii et ma olen mingi teeseldes teed kõik minu töö võtab null korda. 434 00:26:05,610 --> 00:26:09,050 Aga reaalses mängus sa pead lahutama 435 00:26:09,050 --> 00:26:13,760 kui palju aega kulus teha kõik selle töö oma puhkeajal. 436 00:26:13,760 --> 00:26:16,970 >> Igatahes, mida ma olen tegelikult teeb see loop? 437 00:26:16,970 --> 00:26:19,070 Ma puhtaks aknas. 438 00:26:19,070 --> 00:26:27,470 Seadsin dest.y, mis on int minu tegelik y positsiooni heideti int. 439 00:26:27,470 --> 00:26:32,070 Nüüd, ma tahan float resolutsiooni minu y positsiooni minu mäng, 440 00:26:32,070 --> 00:26:34,150 kuid siis tegelikult joonistada ekraanile, 441 00:26:34,150 --> 00:26:39,070 ta vajab ints, sest see ühikutes pikslit, nii et on, mida enamus on. 442 00:26:39,070 --> 00:26:41,745 Ma lähen joonistada pilt. 443 00:26:41,745 --> 00:26:45,180 Nii et see on allikas ristkülik. 444 00:26:45,180 --> 00:26:47,060 Ja see on kohtades ristkülik. 445 00:26:47,060 --> 00:26:50,310 Nii ma möödunud null jaoks allikas ristkülik 446 00:26:50,310 --> 00:26:53,426 öelda, et ma tahan juhtida kogu mu tekstuuri. 447 00:26:53,426 --> 00:26:55,300 Aga kui sul oleks palju tekstuurid oma mängu 448 00:26:55,300 --> 00:26:59,120 ja nad kõik on üks suur tekstuurikaarti mis oli laaditud SDL kui lihtsalt üks 449 00:26:59,120 --> 00:27:02,850 tekstuuri, siis võiks kasuta allikas ristkülik 450 00:27:02,850 --> 00:27:06,750 valida üks väiksemaid tekstuurid üks väiksemaid haldjaid, 451 00:27:06,750 --> 00:27:09,450 välja, et suur tekstuurikaarti. 452 00:27:09,450 --> 00:27:14,740 >> Nii jälle, ma möödaminnes minu muuda, minu tekstuuri, ja nüüd sihtpunkti. 453 00:27:14,740 --> 00:27:18,320 See saab olema, kus on aknas, et see läheb tõmmata. 454 00:27:18,320 --> 00:27:21,390 Ja siis, sest ma elavdamine midagi, ma vajan liikumist, 455 00:27:21,390 --> 00:27:25,150 Ma lähen ajakohastamine sprite seisukoha iga raami. 456 00:27:25,150 --> 00:27:30,190 Nii et mul on see pidev nn scroll kiirendada ühikutes pikslit sekundis. 457 00:27:30,190 --> 00:27:34,320 Nüüd, iga kord teeme liikumine, raam on ainult 1/60 sekundit. 458 00:27:34,320 --> 00:27:36,740 Nii et ma lähen jagada, et 60. 459 00:27:36,740 --> 00:27:42,350 Ja siis vaatame, ma olen lahutades et y positsiooni. 460 00:27:42,350 --> 00:27:44,470 Miks ma lahutades? 461 00:27:44,470 --> 00:27:46,169 Me jõuame selle teise. 462 00:27:46,169 --> 00:27:48,460 Nii ma siis koristada minu ressursid ja programmi üle. 463 00:27:48,460 --> 00:27:49,830 >> Nii muudame seda. 464 00:27:49,830 --> 00:27:52,450 465 00:27:52,450 --> 00:28:03,570 Nii saab minna make SRCS = hello4 animation.c, eks? 466 00:28:03,570 --> 00:28:05,720 Game. 467 00:28:05,720 --> 00:28:06,770 Palun. 468 00:28:06,770 --> 00:28:12,690 Nii et mul on see kerimine üles aken, mis on päris kena. 469 00:28:12,690 --> 00:28:17,110 Aga hoidke, olin lahutades alates y positsiooni iga kord. 470 00:28:17,110 --> 00:28:18,910 Mis seal toimub? 471 00:28:18,910 --> 00:28:24,010 Noh, selgub, et SDL, ja tegelikult enamikus arvutigraafika, 472 00:28:24,010 --> 00:28:28,890 päritolu kohta koordinaatide süsteemi on ülemises vasakus aknas. 473 00:28:28,890 --> 00:28:34,960 >> Nii positiivsete x suunas läheb kogu oma akna paremal. 474 00:28:34,960 --> 00:28:38,110 Ja positiivne y suunas tegelikult loojub. 475 00:28:38,110 --> 00:28:40,470 Nii jälle, päritolu on in ülemises vasakus aken, 476 00:28:40,470 --> 00:28:46,190 positiivne y suunas on maas, ja positiivne x on õige. 477 00:28:46,190 --> 00:28:48,770 Nii et kui ma lahutama y positsiooni, mis on 478 00:28:48,770 --> 00:28:52,640 kavatsen teha seda minna negatiivseks y suunas, mis on üles akent. 479 00:28:52,640 --> 00:28:55,500 Nii et see, mis toimub seal. 480 00:28:55,500 --> 00:28:56,510 Cool. 481 00:28:56,510 --> 00:28:59,240 >> Vaatame järgmise faili. 482 00:28:59,240 --> 00:29:05,700 Siin on osa näidata, kus me lõpuks 483 00:29:05,700 --> 00:29:08,920 saada, et X nurgas aken et see peaks akna sulgeda 484 00:29:08,920 --> 00:29:10,660 töötama. 485 00:29:10,660 --> 00:29:12,800 Mis toimub? 486 00:29:12,800 --> 00:29:17,520 Me initsialiseerida SDL, luua aken, luua renderdusmootoriga laadida pilti, 487 00:29:17,520 --> 00:29:19,770 luua tekstuuri nagu me oleme näinud. 488 00:29:19,770 --> 00:29:26,850 Meil on sama kohtades ristkülik nagu enne, sama kõne päringu tekstuuri. 489 00:29:26,850 --> 00:29:29,780 Aga seekord me oleme siis läheb jagavad laius 490 00:29:29,780 --> 00:29:33,110 ja kõrgus meie sihtpunkti 4. 491 00:29:33,110 --> 00:29:36,430 See on ainult tagajärg tagi meie pildi alla, kui 492 00:29:36,430 --> 00:29:39,884 näitame seda akent neli. 493 00:29:39,884 --> 00:29:40,800 Nii et päris kena. 494 00:29:40,800 --> 00:29:42,770 Me lihtsalt skaala just niimoodi. 495 00:29:42,770 --> 00:29:45,970 Me läheme alustada sprite keskel ekraani. 496 00:29:45,970 --> 00:29:49,410 Ja nüüd on meil x ja y kiiruse ja nad mõlemad kavatse alustada nullist. 497 00:29:49,410 --> 00:29:53,740 498 00:29:53,740 --> 00:29:55,880 >> See on vale faili. 499 00:29:55,880 --> 00:29:56,380 Mul on kahju. 500 00:29:56,380 --> 00:29:57,960 Nii et kõik on tõsi. 501 00:29:57,960 --> 00:30:00,170 See on kõik veel seda faili. 502 00:30:00,170 --> 00:30:03,210 Meil on lõhe 4 ja puha. 503 00:30:03,210 --> 00:30:07,830 Nii et siin on meil x ja y positsiooni jaoks Akna keskel. 504 00:30:07,830 --> 00:30:12,480 Ja me anname selle algkiirus Selle ühtlase kiirusega, mis 505 00:30:12,480 --> 00:30:15,180 Usun 300 pikslit sekundis. 506 00:30:15,180 --> 00:30:19,850 Nüüd on meil see int võiks sama hästi olla loogiline nimetatakse lähedale nõutud. 507 00:30:19,850 --> 00:30:23,970 Ja selle asemel, et teeme lõppahelasse taimer siin 508 00:30:23,970 --> 00:30:29,180 me ei kavatse olla elavdamine kui Niikaua kui lähedale ei nõuta. 509 00:30:29,180 --> 00:30:30,960 >> Niisiis, kuidas me töötleme sündmusi? 510 00:30:30,960 --> 00:30:35,600 Noh, SDL järjekorrad kuni sündmusi grammatiline järjekorda kulisside taga. 511 00:30:35,600 --> 00:30:38,860 Ja siis iga kaadri saame dequeue sündmused 512 00:30:38,860 --> 00:30:43,900 sellest järjekorda kasutades Selle kõne SDL_PullEvent. 513 00:30:43,900 --> 00:30:46,730 Ja jälle kindlasti minna lugema selle dokumentatsioonis. 514 00:30:46,730 --> 00:30:50,450 Seal on palju rohkem üksikasju ja palju rohkem funktsioone, mida saab kasutada seda. 515 00:30:50,450 --> 00:30:54,750 Me andke seda aadressi see asi, SDL_Event 516 00:30:54,750 --> 00:30:56,990 et meil on siin pakis. 517 00:30:56,990 --> 00:30:58,840 >> Nüüd, mis on SDL_event? 518 00:30:58,840 --> 00:31:02,356 Kuna SDL, kui me vaatame documentation-- olgem 519 00:31:02,356 --> 00:31:07,580 vaata API kaupa, sisend sündmuste, käsitsemise, 520 00:31:07,580 --> 00:31:15,150 saame vaadata number erinevate ürituste siin 521 00:31:15,150 --> 00:31:18,600 ja näeme seal terviku ton neist. 522 00:31:18,600 --> 00:31:22,150 Mis on selle SDL_Event asi? 523 00:31:22,150 --> 00:31:28,190 524 00:31:28,190 --> 00:31:31,107 SDL_Event on ametiühingu. 525 00:31:31,107 --> 00:31:31,940 Wow, milline on ametiühingu? 526 00:31:31,940 --> 00:31:33,910 Te olete ilmselt kunagi kuulnud, et enne. 527 00:31:33,910 --> 00:31:35,610 Ja see on OK. 528 00:31:35,610 --> 00:31:39,420 >> Riigi liit on selline nagu struct, välja arvatud struct 529 00:31:39,420 --> 00:31:41,960 on ruumi kõigile tema põldude ja mälu 530 00:31:41,960 --> 00:31:45,060 arvestades, et liidul on ainult piisavalt ruumi, et mahub suurim 531 00:31:45,060 --> 00:31:49,660 üks selle väljad, mis tähendab seda saab salvestada ainult ühe selle väljad 532 00:31:49,660 --> 00:31:52,830 korraga, millist mõtet sündmusi, eks? 533 00:31:52,830 --> 00:31:55,810 Me ei pea klaviatuuri sündmus või akna juhul 534 00:31:55,810 --> 00:31:59,750 kuid ühe sündmuse saa olla nii klaviatuuri korral ja akna korral, 535 00:31:59,750 --> 00:32:05,450 nii et see oleks tobe on ruumi need mõlemad sees meie üritus Liidus. 536 00:32:05,450 --> 00:32:07,770 Nii et kui sa tahad luua oma Liit, 537 00:32:07,770 --> 00:32:10,020 tundub täpselt sama kui luua struktuure, 538 00:32:10,020 --> 00:32:14,140 välja arvatud see, mida me kasutame Liidu märksõna asemel struct märksõna. 539 00:32:14,140 --> 00:32:17,490 Ja pidage meeles, et kõik asjad sees Liidu 540 00:32:17,490 --> 00:32:22,020 tegelik muutuja, mis on Euroopa Liidu saab olla vaid üks neist väärtustest 541 00:32:22,020 --> 00:32:24,780 korraga. 542 00:32:24,780 --> 00:32:29,940 >> Niisiis, kuidas me saame öelda, millist sündmus me lihtsalt hüppasid välja selle järjekorda? 543 00:32:29,940 --> 00:32:33,370 Noh, me saame testida event.type. 544 00:32:33,370 --> 00:32:35,792 Ja kui see on võrdne to SDL_Quit teame 545 00:32:35,792 --> 00:32:37,500 see on juhul, tekkis siis, kui me 546 00:32:37,500 --> 00:32:39,510 tabanud, et X nurgas aken. 547 00:32:39,510 --> 00:32:44,270 Ja saame lähedale nõutud võrdub 1. 548 00:32:44,270 --> 00:32:47,230 Ülejäänu on vaid mõned animatsioon et olete näinud. 549 00:32:47,230 --> 00:32:52,802 Nii saab minna ja teha seda ja näha, kui hästi see töötab. 550 00:32:52,802 --> 00:32:55,135 Nii et ma lähen kirjuta mark ja siis SRCS = hello5_events.c. 551 00:32:55,135 --> 00:33:03,760 552 00:33:03,760 --> 00:33:04,770 Seal me läheme. 553 00:33:04,770 --> 00:33:05,780 Mängud. 554 00:33:05,780 --> 00:33:08,920 >> Nüüd näeme, et see oli tõepoolest vähendanud neli. 555 00:33:08,920 --> 00:33:10,360 Ja nüüd on kopsakas ringi. 556 00:33:10,360 --> 00:33:14,630 Mul on mõned kokkupõrke avastamise toimub koos akna ääri 557 00:33:14,630 --> 00:33:16,840 et suudame heita pilk. 558 00:33:16,840 --> 00:33:21,190 Ja mis juhtub, kui ma lähen sulgeda? 559 00:33:21,190 --> 00:33:22,120 See sulgeb. 560 00:33:22,120 --> 00:33:22,740 Fantastiline. 561 00:33:22,740 --> 00:33:24,290 Saime sel juhul. 562 00:33:24,290 --> 00:33:26,630 Ja me käideldakse seda. 563 00:33:26,630 --> 00:33:30,730 >> Nii vaatame tagasi koodi. 564 00:33:30,730 --> 00:33:33,020 Nii et kuidas ma saan seda kopsakas umbes niimoodi? 565 00:33:33,020 --> 00:33:37,200 Pea meeles, ma panen nii x ja y esialgu kiirusega. 566 00:33:37,200 --> 00:33:39,260 Ja kiirus on positiivne pidev, nii et see 567 00:33:39,260 --> 00:33:42,680 hakka seda alustamist läheb alla ja paremale. 568 00:33:42,680 --> 00:33:45,680 569 00:33:45,680 --> 00:33:50,310 >> Nüüd, iga raam, lisaks käitlemine kõik sündmused, mis võisid aset leida, 570 00:33:50,310 --> 00:33:57,520 Ma lähen, et tuvastada, kas mu sprite üritab minna aknast välja. 571 00:33:57,520 --> 00:34:03,610 Nii saame teha, et just checking x_pos 0, y_pos 0 ja seejärel 572 00:34:03,610 --> 00:34:07,370 Samuti x_pos ja y_pos koos akna laius ja akna kõrgus. 573 00:34:07,370 --> 00:34:11,010 Pange tähele, ma olen maha laius sprite. 574 00:34:11,010 --> 00:34:14,090 Ja seda sellepärast, et kui ma ei lahutada laius sprite, 575 00:34:14,090 --> 00:34:17,760 oleks ainult kontrollida, päritolu sprite 576 00:34:17,760 --> 00:34:19,690 ei lähe väljaspool akent. 577 00:34:19,690 --> 00:34:21,480 Aga me tahame kogu laius sprite 578 00:34:21,480 --> 00:34:24,030 et alati sees akna ja Kogu kõrgus sprite 579 00:34:24,030 --> 00:34:25,321 et alati sees aknas. 580 00:34:25,321 --> 00:34:27,429 Nii see on, mida lahutamine on. 581 00:34:27,429 --> 00:34:30,080 Palju geomeetria Siin saad kasulik seda välja tõmmata 582 00:34:30,080 --> 00:34:33,929 paberile koordinaatide süsteemi, et näha, mis toimub. 583 00:34:33,929 --> 00:34:38,090 >> Nii et kui ma põrkuvad, ma lihtsalt lihtsalt reset positsiooni 584 00:34:38,090 --> 00:34:41,400 nii, et see ei hakka ekraanilt välja. 585 00:34:41,400 --> 00:34:47,179 Ja ma lähen, kui see põrkab ühel külgseinte, 586 00:34:47,179 --> 00:34:51,469 Ma lähen tühista x kiiruse nii, et see 587 00:34:51,469 --> 00:34:53,210 algab kopsakas teises suunas. 588 00:34:53,210 --> 00:34:56,210 Ja sarnaselt, kui see tabab üla- või alaosas, 589 00:34:56,210 --> 00:34:59,820 Ma lähen määrata y kiirus võrdne negatiivse y kiirus, 590 00:34:59,820 --> 00:35:01,690 nii et see põrge tagasi. 591 00:35:01,690 --> 00:35:03,860 Nii et see, kuidas me saime, et siin. 592 00:35:03,860 --> 00:35:07,560 >> Ja ajakohastamise seisukohad nagu me oleme näinud, 593 00:35:07,560 --> 00:35:12,510 jagada 60, sest me oleme ainult käitlemise 1/60 sekundit. 594 00:35:12,510 --> 00:35:15,750 Ja siis muudab, täpselt sama nagu enne. 595 00:35:15,750 --> 00:35:19,810 Ja nii see kõik mis juhtus selle faili. 596 00:35:19,810 --> 00:35:22,490 Nii see on, kuidas me sündmusi. 597 00:35:22,490 --> 00:35:29,260 Peaasi, et ära siin on see SDL_PullEvent funktsiooni. 598 00:35:29,260 --> 00:35:33,020 Ja siis tuleb kindlasti lugeda dokumentatsiooni rohkem SDL_Event 599 00:35:33,020 --> 00:35:38,630 Euroopa Liit, sest see andmetüüp on väga, väga tähtis, sest me kasutame seda 600 00:35:38,630 --> 00:35:40,690 igasuguseid üritusi. 601 00:35:40,690 --> 00:35:46,539 >> Näiteks me seda kasutada klaviatuuri sündmusi, mis on see, mida see fail on. 602 00:35:46,539 --> 00:35:47,330 Mis meil on? 603 00:35:47,330 --> 00:35:50,180 Meil on sama asi nagu enne, initsialiseerida SDL, luua aknas 604 00:35:50,180 --> 00:35:55,260 luua renderdusmootoriga laadida pilti mällu, luua tekstuuri. 605 00:35:55,260 --> 00:36:00,530 Jällegi, me ei kavatse on see dest ristkülik, 606 00:36:00,530 --> 00:36:04,890 me ei kavatse skaala pilti neli, teha natuke väiksem. 607 00:36:04,890 --> 00:36:08,000 Nüüd on meil alustada sprite on ekraani keskel. 608 00:36:08,000 --> 00:36:12,090 Aga seekord, me ei kavatse seada esialgse x ja y kiirused nulli, 609 00:36:12,090 --> 00:36:15,140 sest klaviatuur on läheb hõlma neid. 610 00:36:15,140 --> 00:36:18,900 Ja pealegi, me ei kavatse jälgida nende muutujate 611 00:36:18,900 --> 00:36:20,450 üles, alla, vasakule ja paremale. 612 00:36:20,450 --> 00:36:23,090 Ja see läheb, et hoida jälgida, kas me oleme 613 00:36:23,090 --> 00:36:27,370 vajutatud klaviatuuri nuppe, et vastavad üles, alla, vasakule, 614 00:36:27,370 --> 00:36:28,460 ja õige. 615 00:36:28,460 --> 00:36:32,440 >> Nüüd, see on selline fancy sest me ei kasuta W, A, S, 616 00:36:32,440 --> 00:36:35,480 D siin või tegelik nooleklahve. 617 00:36:35,480 --> 00:36:38,590 Me näeme, et üks hetk. 618 00:36:38,590 --> 00:36:41,140 Nii et me läheme töötlema Kui just nagu enne. 619 00:36:41,140 --> 00:36:42,530 Me tõmmata korral. 620 00:36:42,530 --> 00:36:45,840 Aga nüüd me ei kavatse lülitage sündmuse tüüp. 621 00:36:45,840 --> 00:36:47,710 Kui see on SDL_Quit, me oleme läheb seatud lähedal 622 00:36:47,710 --> 00:36:49,990 paluti üks, just nagu enne. 623 00:36:49,990 --> 00:36:52,315 See tegeleb x nurgas aken, 624 00:36:52,315 --> 00:36:55,050 nii et meie aknas tegelikult sulgub. 625 00:36:55,050 --> 00:37:00,110 >> Vastasel juhul, kui saame SDL klahvi sündmus, mis tähendab, et me vajutanud, 626 00:37:00,110 --> 00:37:04,470 siis mida me teeme on me läheb lülitage see asi siin, 627 00:37:04,470 --> 00:37:11,370 mis means-- nii event.key tähendab kohtleme oma sündmus Liidu 628 00:37:11,370 --> 00:37:15,490 minna ja saada võti Kui ehitis on. 629 00:37:15,490 --> 00:37:18,810 Nii selgub, et see Liit on oluline sündmus struktuuri. 630 00:37:18,810 --> 00:37:22,820 Ja siis minge võti Ürituse struktuur selle valdkonna 631 00:37:22,820 --> 00:37:26,140 nimetatakse keysym ja siis scancode. 632 00:37:26,140 --> 00:37:29,480 Ja jälle kindlasti lugeda dokumendid selle kohta. 633 00:37:29,480 --> 00:37:31,220 Märksõna sisendite üsna huvitav. 634 00:37:31,220 --> 00:37:34,020 Saad skaneerida koodid või võti koodid. 635 00:37:34,020 --> 00:37:38,590 Ja see on natuke peenem, kuid dokumentatsioon on üsna hea. 636 00:37:38,590 --> 00:37:43,380 >> Nii et kui me näeme scan kood Meie klahvivajutust on W või üles 637 00:37:43,380 --> 00:37:45,450 me ei kavatse luua võrdne 1. 638 00:37:45,450 --> 00:37:47,240 Ja siis me murda, et lüliti. 639 00:37:47,240 --> 00:37:52,980 Kui see on A- või vasakule, seadsime vasakult 1, et cetera, et cetera, et alla ja paremale. 640 00:37:52,980 --> 00:37:57,080 Nüüd, läbi selle välimiste lüliti, Kui me näeme olulist up üritus, 641 00:37:57,080 --> 00:38:00,730 see tähendab, et oleme välja peamised ja me enam seda vajutamata. 642 00:38:00,730 --> 00:38:05,380 Nii et ma lähen ütlen up võrdub 0, Vasakul on 0, alla võrdub 0, õigus 643 00:38:05,380 --> 00:38:08,260 võrdub 0, jne. 644 00:38:08,260 --> 00:38:12,070 >> Ja märkate meil kõik need Kahel juhul panna kõrvuti teiste 645 00:38:12,070 --> 00:38:14,490 ilma eraldi koodi esimest juhtumi asjaoludest, mis 646 00:38:14,490 --> 00:38:18,180 tähendab, et kas see on S või alla siinsamas, 647 00:38:18,180 --> 00:38:20,520 see läheb täide see kood. 648 00:38:20,520 --> 00:38:22,090 Nii et on päris mugav. 649 00:38:22,090 --> 00:38:24,830 See ei lase meil oleks vaja teha rohkem tingimused ja IFS ja asjad 650 00:38:24,830 --> 00:38:26,980 nagu see. 651 00:38:26,980 --> 00:38:29,420 >> Nii et me läheme määrata kiiruse. 652 00:38:29,420 --> 00:38:31,020 Seame kiirus 0. 653 00:38:31,020 --> 00:38:33,910 Siis, kui üles vajutatakse ja mitte alla, siis me 654 00:38:33,910 --> 00:38:37,450 määrata y kiirus negatiivne kiirus. 655 00:38:37,450 --> 00:38:42,930 Pea meeles, negatiivne, sest negatiivne y suunas on läbi. 656 00:38:42,930 --> 00:38:45,540 Ja positiivne y suunas on maas. 657 00:38:45,540 --> 00:38:47,510 Kui alla on vajutatud ja mitte üles, siis me oleme 658 00:38:47,510 --> 00:38:53,860 läheb seadke see positiivne kiirus, mis tähendab allakäik ekraani. 659 00:38:53,860 --> 00:38:55,460 Sama asi vasakule ja paremale. 660 00:38:55,460 --> 00:38:58,200 >> Ja siis me läheme uuendama seisukohti nagu enne. 661 00:38:58,200 --> 00:39:00,740 Me teeme kokkupõrget avastamine koos piire, 662 00:39:00,740 --> 00:39:04,290 kuid me ei kavatse nullida liikumiskiirus, sest kiirus on vaid 663 00:39:04,290 --> 00:39:06,780 kontrolli all klaviatuuri. 664 00:39:06,780 --> 00:39:11,230 Aga me nullida positsioone hoida seda akent. 665 00:39:11,230 --> 00:39:14,400 Ja me ei kavatse seada positsioone struct 666 00:39:14,400 --> 00:39:17,400 ja siis teevad kõik muudab asju enne. 667 00:39:17,400 --> 00:39:20,750 Vaatame, mida ta teeb. 668 00:39:20,750 --> 00:39:25,460 Nii et SRCS-- vaatame, see on hello6_keyboard.c. 669 00:39:25,460 --> 00:39:38,140 670 00:39:38,140 --> 00:39:38,820 >> Oh ei. 671 00:39:38,820 --> 00:39:40,150 Nii saime hoiatused siin. 672 00:39:40,150 --> 00:39:43,840 Ja see on lihtsalt öeldes me ei kontrollida iga tahtsid 673 00:39:43,840 --> 00:39:45,610 koht. 674 00:39:45,610 --> 00:39:49,470 See on OK, sest seal on 236 neist või nii. 675 00:39:49,470 --> 00:39:51,760 Nii et ma lähen ignoreerida neid hoiatusi. 676 00:39:51,760 --> 00:39:53,530 See on ikka koostatud trahvi. 677 00:39:53,530 --> 00:39:56,100 Nii et ma lähen mängu mängida. 678 00:39:56,100 --> 00:39:57,590 See ei liigu. 679 00:39:57,590 --> 00:40:04,150 Aga nüüd, kui ma puder minu klaviatuur, Võin teha mõned WASD liikumise siin 680 00:40:04,150 --> 00:40:06,870 Ma saan kasutada nooleklahve samuti. 681 00:40:06,870 --> 00:40:10,070 Ja märka, kuigi ma olen vajutades õige kohe, 682 00:40:10,070 --> 00:40:13,804 ta ei kavatse aknast välja, sest ma reset see igale kaadrile. 683 00:40:13,804 --> 00:40:14,720 Nii et päris kena. 684 00:40:14,720 --> 00:40:19,420 Võite ette kujutada, liikudes Mario mõned nooleklahve või midagi sellist. 685 00:40:19,420 --> 00:40:22,880 Ja jah, X ei tööta. 686 00:40:22,880 --> 00:40:26,900 >> Nii lõpliku faili läheme vaadata, hellow7_mouse. 687 00:40:26,900 --> 00:40:29,600 See on umbes saada hiire sisend. 688 00:40:29,600 --> 00:40:34,790 Nii et üks, me importida matemaatika päise kaudu, 689 00:40:34,790 --> 00:40:38,100 sest me ei kavatse olla natuke matemaatikat siin. 690 00:40:38,100 --> 00:40:45,260 Sama vana, sama vana kraami, kohtades, sama vana, seda varem näinud. 691 00:40:45,260 --> 00:40:46,910 Noh, see on huvitav. 692 00:40:46,910 --> 00:40:51,730 Nii et me oleme tagasi kontrollime ainult jaoks SDL loobuda sündmus. 693 00:40:51,730 --> 00:40:52,460 Miks nii? 694 00:40:52,460 --> 00:40:55,110 Nii saad hiire sisend sündmused. 695 00:40:55,110 --> 00:40:57,670 Nagu siis, kui hiir liigutada, saad sündmus selle eest. 696 00:40:57,670 --> 00:41:00,520 Kui hiire nuppu, saad sündmus selle eest. 697 00:41:00,520 --> 00:41:05,760 >> Aga seal on veel veidi lihtsamaks ehk API saada hiire sisend. 698 00:41:05,760 --> 00:41:09,500 Ja see on lihtsalt SDL get hiire riik. 699 00:41:09,500 --> 00:41:14,370 Nii et mul on int x ja y kursori asukohas. 700 00:41:14,370 --> 00:41:18,910 Ma andke seda SDL_GetMouseState, milles neid. 701 00:41:18,910 --> 00:41:22,200 Ja see on positsioon koordinaatide süsteemi akent. 702 00:41:22,200 --> 00:41:25,520 Nii et kui mass on ülemises vasakus akna, et oleks 0, 0. 703 00:41:25,520 --> 00:41:28,040 704 00:41:28,040 --> 00:41:33,380 >> Nüüd, mida ma lähen tegema, on ma lähen teha natuke vektor matemaatikat. 705 00:41:33,380 --> 00:41:36,910 Vean kihla, et sa arvasid, et sa ei näha, et CS50, kuid siin see on. 706 00:41:36,910 --> 00:41:40,720 Ma teen mõned vektori matemaatika saada vektori 707 00:41:40,720 --> 00:41:43,840 pildi kursori. 708 00:41:43,840 --> 00:41:53,280 Ja miks ma pean Selle lahutamine siin? 709 00:41:53,280 --> 00:42:01,350 Noh, kui ma lihtsalt kasutatav dest .-- nii Mul on vaja tõlkida hiire x 710 00:42:01,350 --> 00:42:05,166 ja y poole võrra laiuse ja kõrgus pilti, 711 00:42:05,166 --> 00:42:08,040 sest ma tahan keskel pilt läheb suunas hiir, 712 00:42:08,040 --> 00:42:10,160 mitte päritolu pilti. 713 00:42:10,160 --> 00:42:15,650 >> Nii et lihtsalt veendumaks, et ma räägin umbes keset pilti siin. 714 00:42:15,650 --> 00:42:19,510 Siis saame delta x ja y, mis vahe on sihtmärgist 715 00:42:19,510 --> 00:42:23,430 tegeliku positsiooni pilti. 716 00:42:23,430 --> 00:42:25,690 Ja siis saame kaugus siin, mis 717 00:42:25,690 --> 00:42:29,140 läheb Pythagorase teoreemi, ruutjuur x 718 00:42:29,140 --> 00:42:32,720 korda x pluss y korda y. 719 00:42:32,720 --> 00:42:38,400 >> Nüüd, et vältida närvitsema ja ma näitan teile, mida see teeb, kui ma ei tee seda, 720 00:42:38,400 --> 00:42:45,830 Kui vahemaa kursor ja Pildi keskel on vähem kui viis, 721 00:42:45,830 --> 00:42:48,730 Ma lihtsalt ei kavatse liigutada kujutist. 722 00:42:48,730 --> 00:42:52,900 Muidu me seame kiirus. 723 00:42:52,900 --> 00:42:55,960 Ja seadsime nii, et kiirus on alati konstantne. 724 00:42:55,960 --> 00:42:58,770 Ja tulemit kõik see matemaatika on see, et pilti 725 00:42:58,770 --> 00:43:01,660 läheb liikuma kursor. 726 00:43:01,660 --> 00:43:08,470 >> Nüüd selgub, et SDL_GetMouseState, 727 00:43:08,470 --> 00:43:14,490 Lisaks seades x ja y argumendid siin 728 00:43:14,490 --> 00:43:21,340 Samuti tagastab int, mis vastab Riigile hiire nupud. 729 00:43:21,340 --> 00:43:24,600 Nii et me ei saa lugeda, et otse, kuid me saame 730 00:43:24,600 --> 00:43:29,090 kasutada neid makrosid, ühe bitwise operaator, mitte et jube, 731 00:43:29,090 --> 00:43:30,650 vaid bitwise ja. 732 00:43:30,650 --> 00:43:38,320 Nii me ütleme nupud, mis on tingitud Meie SDL_GetMouseState, kui see 733 00:43:38,320 --> 00:43:43,990 ja bitwise ja see makro Siin SDL_BUTTON_LEFT. 734 00:43:43,990 --> 00:43:47,680 >> Nii see läheb lihtsalt lahendada et bitmap, mis vastab 735 00:43:47,680 --> 00:43:51,090 vasakule hiire nuppu vajutatud. 736 00:43:51,090 --> 00:43:55,470 Ja nii kui bitwise ja toimub ja see on 737 00:43:55,470 --> 00:43:59,340 ei ole null, mis tähendab, vasakut nuppu vajutati, 738 00:43:59,340 --> 00:44:04,320 siis me tegelikult läheb tühista nii x ja y kiirustega 739 00:44:04,320 --> 00:44:06,700 mis lihtsalt teeb pildi Põgenenud. 740 00:44:06,700 --> 00:44:07,980 Värskenda seisukohti. 741 00:44:07,980 --> 00:44:10,920 Kokkupõrked avastused, näinud kõik enne, muutes kõik õige. 742 00:44:10,920 --> 00:44:11,510 Teeme seda. 743 00:44:11,510 --> 00:44:14,200 744 00:44:14,200 --> 00:44:16,050 Nii et sa pead tegema SRCS = hello7_mouse.c. 745 00:44:16,050 --> 00:44:21,720 746 00:44:21,720 --> 00:44:22,220 Hea. 747 00:44:22,220 --> 00:44:23,490 Vigu ei ole. 748 00:44:23,490 --> 00:44:24,900 Ja mängu. 749 00:44:24,900 --> 00:44:26,440 >> Nii et siin on mul hiir. 750 00:44:26,440 --> 00:44:29,000 Ja pilt on tõepoolest death minu hiir. 751 00:44:29,000 --> 00:44:33,140 Nüüd on mängu teete, võib-olla see on nagu vaenlane Tagaajamine 752 00:44:33,140 --> 00:44:35,240 su väike tegelane või mis iganes. 753 00:44:35,240 --> 00:44:37,440 Aga siin on meil image tagaajamine hiirt. 754 00:44:37,440 --> 00:44:41,000 Ja kui ma vajutan, hiir algab tagaajamine pilti 755 00:44:41,000 --> 00:44:42,860 ja pilt on põgened hiir. 756 00:44:42,860 --> 00:44:43,810 Nii et on päris lahe. 757 00:44:43,810 --> 00:44:47,770 Ja teate uuesti, seal on veel kokkupõrke avastamise siin. 758 00:44:47,770 --> 00:44:53,930 >> Nii et on lõpliku vähe demo ma panin siin. 759 00:44:53,930 --> 00:44:58,870 Ja olgem heita pilk veel üks asi. 760 00:44:58,870 --> 00:45:02,970 Nii siia tagasi, mainisin seda värinat. 761 00:45:02,970 --> 00:45:05,000 Hästi. 762 00:45:05,000 --> 00:45:12,890 Seega, kui vahe on väiksem kui viis pikslit, Olin milles x ja y kiirus nulli. 763 00:45:12,890 --> 00:45:15,960 Mis juhtub, kui me vabaneda on? 764 00:45:15,960 --> 00:45:19,070 Nii et ma lähen lihtsalt seda teha. 765 00:45:19,070 --> 00:45:23,820 766 00:45:23,820 --> 00:45:30,150 Palun vabandust selle kohutava stiili, kuid me kommentaariks õige koodi. 767 00:45:30,150 --> 00:45:38,080 Nii et ma lähen päästma ja teha Sama käsk enne seda tegema. 768 00:45:38,080 --> 00:45:38,785 >> Hästi. 769 00:45:38,785 --> 00:45:39,660 Ja nüüd, mis juhtub? 770 00:45:39,660 --> 00:45:43,260 771 00:45:43,260 --> 00:45:43,760 Väga hea. 772 00:45:43,760 --> 00:45:45,801 Me ikka pärast hiir nagu enne, 773 00:45:45,801 --> 00:45:49,310 aga kui me saame hiire, meil seda raske närvitsema. 774 00:45:49,310 --> 00:45:50,320 Mis seal toimub? 775 00:45:50,320 --> 00:45:52,600 Noh, meie vektori matemaatika, mäletan, olime 776 00:45:52,600 --> 00:45:57,540 võttes vaheline kaugus kursor ja kesklinnas pilti? 777 00:45:57,540 --> 00:46:00,710 Noh, kui see läheneb 0, siis alustada saada 778 00:46:00,710 --> 00:46:06,280 nagu selline hull käitumine kus pilt on omamoodi 779 00:46:06,280 --> 00:46:08,910 nagu vahelduvaid ümber kursor. 780 00:46:08,910 --> 00:46:12,000 Ja see loob see värin. 781 00:46:12,000 --> 00:46:13,020 Ja see on tõesti kole. 782 00:46:13,020 --> 00:46:15,103 Ja siis ilmselt ei tahad oma mänge tehes, 783 00:46:15,103 --> 00:46:17,350 kui see on mingi eriline mõju. 784 00:46:17,350 --> 00:46:21,960 >> Nii et miks meil lihtsalt see meelevaldne 785 00:46:21,960 --> 00:46:27,150 lõigatud viis pikslit, kus me ütleme kui see on viie pikslit, me oleme head. 786 00:46:27,150 --> 00:46:29,560 Meil ei ole vaja liigutada kujutist enam. 787 00:46:29,560 --> 00:46:32,260 Nii et see, mis toimub seal. 788 00:46:32,260 --> 00:46:37,390 789 00:46:37,390 --> 00:46:40,870 >> Nii et on päris palju see. 790 00:46:40,870 --> 00:46:44,390 Nüüd tean, kuidas luua aken, laadige pilt, 791 00:46:44,390 --> 00:46:49,330 joonistada pilt akna saada klaviatuurilt sisestamine, saada hiire sisend, 792 00:46:49,330 --> 00:46:52,190 seal on hunnik muid sisend, et te ei teeks 793 00:46:52,190 --> 00:46:56,070 tea, kuidas, kui sa lihtsalt veeta Mõne minuti vaadates dokumentatsiooni. 794 00:46:56,070 --> 00:46:59,670 Nii et sa tegelikult üsna vähe vahendeid teie käsutuses nüüd 795 00:46:59,670 --> 00:47:01,650 kirjutada täieõiguslik mängu. 796 00:47:01,650 --> 00:47:05,030 >> Nüüd, iga mäng vajab audio, kuid audio dokumentatsioon 797 00:47:05,030 --> 00:47:06,460 on ka päris hea. 798 00:47:06,460 --> 00:47:09,200 Ja ma olen valmis kihla, et kui sa aru, kõik asjad 799 00:47:09,200 --> 00:47:14,560 me rääkisime täna piltide ja pinnad, 800 00:47:14,560 --> 00:47:18,370 aknad, ja kõike, siis figuring audio API ei ole 801 00:47:18,370 --> 00:47:21,170 saab olema, et halb. 802 00:47:21,170 --> 00:47:27,420 Nii et ma ootan mida sa luua koos SDL. 803 00:47:27,420 --> 00:47:31,595