1 00:00:00,000 --> 00:00:05,069 2 00:00:05,069 --> 00:00:06,110 THOMAS JAUTRA: Nu labi. 3 00:00:06,110 --> 00:00:07,450 Sveiki visiem. 4 00:00:07,450 --> 00:00:08,690 Es esmu Thomas Lively. 5 00:00:08,690 --> 00:00:15,160 Šis seminārs būs rakstiski 2D spēles C, izmantojot SDL. 6 00:00:15,160 --> 00:00:17,970 Tāpēc es zinu, ka tu esi visu jautā, jā, es tiešām 7 00:00:17,970 --> 00:00:22,050 vēlaties spēlēt spēles un padarīt spēles, bet to, kas ir šis SDL bizness? 8 00:00:22,050 --> 00:00:25,320 Tātad SDL ir C bibliotēka. 9 00:00:25,320 --> 00:00:28,270 Tas apzīmē Simple Directmedia Layer. 10 00:00:28,270 --> 00:00:31,340 Un tas ir pāri platformas, spēļu izstrāde bibliotēka. 11 00:00:31,340 --> 00:00:37,160 Tas darbojas uz Windows, Mac, Linux, pat iOS un Android. 12 00:00:37,160 --> 00:00:40,380 Tā rīkojas lietas, piemēram, piekļuve audio sistēmas 13 00:00:40,380 --> 00:00:44,900 par datoru, klaviatūru, un pele, kursorsviras, ja viņi pievienots. 14 00:00:44,900 --> 00:00:48,300 Par mobilo, tas var pat darīt pieskarties ievadi un viss kas. 15 00:00:48,300 --> 00:00:53,030 Un, protams, to rokturi grafikas, zīmēšanas lietas uz ekrāna. 16 00:00:53,030 --> 00:00:56,470 >> Tātad, tas ir ļoti plaši izmantots, kaut gan Jūs, iespējams, nav dzirdējuši par to pirms tam. 17 00:00:56,470 --> 00:01:00,860 Tas ir iebūvēts, piemēram, Valve avots dzinējs, 18 00:01:00,860 --> 00:01:04,970 kura pilnvaras spēles, piemēram, Portāls un Team Fortress 2. 19 00:01:04,970 --> 00:01:08,680 Tas ir arī ļoti liels skaits no indie spēles, kas nāk ārā, 20 00:01:08,680 --> 00:01:13,545 tāpēc es esmu satraukti, lai redzētu, kas jums viss būs veikt ar to. 21 00:01:13,545 --> 00:01:20,000 >> Semināra mērķi ir, lai saņemtu jums noteikti, lai būtu attīstīt ar SDL. 22 00:01:20,000 --> 00:01:22,700 Mēs ejam, lai uzzinātu, kā lai izveidotu spēles logu. 23 00:01:22,700 --> 00:01:26,130 Mēs ejam, lai radītu sprites, kas ir attēli savu spēli 24 00:01:26,130 --> 00:01:27,744 kas var pārvietoties. 25 00:01:27,744 --> 00:01:29,910 Mēs ejam, lai uzzinātu, kā lai un animēt sprites, 26 00:01:29,910 --> 00:01:32,910 tāpēc pārvietot tās apkārt, padarīt viņiem mainās laika gaitā. 27 00:01:32,910 --> 00:01:35,580 Un mēs ejam, lai uzzinātu, kā lai attēlotu tastatūru un peli 28 00:01:35,580 --> 00:01:38,240 ievade no datora. 29 00:01:38,240 --> 00:01:41,550 Ko mēs nebūs runāt Par šodien ir 3D grafika, 30 00:01:41,550 --> 00:01:45,520 jo tas ir ļoti sarežģīti temats, ka mums nav laika. 31 00:01:45,520 --> 00:01:49,010 Mēs ne iemācīties atskaņot audio uz mūsu spēlēm. 32 00:01:49,010 --> 00:01:53,300 Un mēs nebūsim ēka par kaut ko, bet Linux. 33 00:01:53,300 --> 00:01:58,330 >> Tagad brīdinājumi tur ir, ka, cerams, līdz gada beigām seminārs, 34 00:01:58,330 --> 00:02:01,660 jūs būsiet apmierināti ar SDL dokumentācija, 35 00:02:01,660 --> 00:02:05,370 lai jūs varētu doties izrēķināt kā spēlēt audio pats. 36 00:02:05,370 --> 00:02:12,150 Arī ēkas Mac vai PC jāstrādā tieši tāds pats kā celtniecības Linux, 37 00:02:12,150 --> 00:02:14,700 bet iestatīšanas gatavojas būt nedaudz atšķirīgs. 38 00:02:14,700 --> 00:02:17,700 Tātad jums vajadzētu būt iespējai izrēķināt , kā to darīt šīs lietas 39 00:02:17,700 --> 00:02:20,900 beigās šodienas seminārā. 40 00:02:20,900 --> 00:02:26,980 >> Tātad, kas izveidota, mēs ejam izmantot virtuālo mašīnu. 41 00:02:26,980 --> 00:02:31,010 Mēs varētu izmantot CS50 IDE, jo mēs esam tikai gatavojas rakstot C 42 00:02:31,010 --> 00:02:35,120 Bet, tā kā IDE nav pārlūks, mēs nevar radīt jaunus logus vai displejs 43 00:02:35,120 --> 00:02:36,410 grafikas tajā. 44 00:02:36,410 --> 00:02:38,450 Tāpēc mums ir nepieciešams virtuālo mašīnu. 45 00:02:38,450 --> 00:02:47,790 Tātad jūs varat sekot instrukcijām šeit manual.CS50.net/appliance/15~~pobj 46 00:02:47,790 --> 00:02:53,290 instalēt oficiālo CS50 ierīci, kas ir tikai Linux virtuālā 47 00:02:53,290 --> 00:02:55,110 mašīna. 48 00:02:55,110 --> 00:02:58,090 >> Un tad, kad jums ir ka visi, kas to up-- 49 00:02:58,090 --> 00:03:02,090 var aizņemt nedaudz, bet, jo ļoti liels download-- jūs dodas 50 00:03:02,090 --> 00:03:07,060 palaist ar VM sudo apt-get update. 51 00:03:07,060 --> 00:03:09,410 Un tas tiešām notiek atjaunināt visu programmatūru 52 00:03:09,410 --> 00:03:12,670 paketes uz jūsu virtuālo mašīnu. 53 00:03:12,670 --> 00:03:20,130 >> Pēc tam, jūs gatavojas palaist sudo apt-get install, libsdl2-2.0-0, 54 00:03:20,130 --> 00:03:27,960 libsdl2-dbg, libsdl2-dev, un papildus libsdl2-image-2,0-0, 55 00:03:27,960 --> 00:03:32,560 libsdl2-image-dbg, un libsdl2-image-dev. 56 00:03:32,560 --> 00:03:33,640 Tātad, ko tas dara? 57 00:03:33,640 --> 00:03:38,440 Ka tikai instalē debug informāciju, dokumentus, galvenes, 58 00:03:38,440 --> 00:03:41,260 un binaries divām bibliotēkām. 59 00:03:41,260 --> 00:03:45,090 Regulāra vecs, SDL 2.0, un citu bibliotēku 60 00:03:45,090 --> 00:03:50,110 sauc SDL Image, kas mēs ejam, lai, izmantojot 61 00:03:50,110 --> 00:03:54,560 ielādēt attēlu failus mūsu spēli. 62 00:03:54,560 --> 00:03:57,860 >> Tātad, kad jums ir, ka arī ka, tikai tad, kad tā lūdz, 63 00:03:57,860 --> 00:04:01,100 jūs vienkārši ierakstiet jā, hit Enter uzstādīt šīs paketes, 64 00:04:01,100 --> 00:04:04,430 un tad jums vajadzētu būt labi iet. 65 00:04:04,430 --> 00:04:14,800 Tātad, lai iegūtu sadales kodu, can-- Ak, dievs, tas nav atjaunināts. 66 00:04:14,800 --> 00:04:18,480 Ja vien jums ir GitHub account-- ja Jums ir GitHub kontu, 67 00:04:18,480 --> 00:04:24,450 jūs varat darīt šo GIT klons komandu uz repo 68 00:04:24,450 --> 00:04:30,490 un kas būs lejupielādēt GIT repo ar visu kodu tajā, 69 00:04:30,490 --> 00:04:31,700 tā, ka jums ir kodu. 70 00:04:31,700 --> 00:04:36,470 >> Ja jums nav GitHub konts, kas jums jādara, ir veids 71 00:04:36,470 --> 00:04:48,867 wgithttps: //github.com/tlively/sdl seminar-- un šeit tas ir 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 Tātad vēlreiz, tas ir tieši tā pati URL, izņemot tas būs 75 00:04:59,220 --> 00:05:09,010 tlively / SDL_seminar / master.zip un jūs izmantojat wgit lejupielādēt to. 76 00:05:09,010 --> 00:05:12,940 Un tad jūs varat vienkārši unzip ka arhīvs 77 00:05:12,940 --> 00:05:14,900 un tad jums ir visu pirmkodu. 78 00:05:14,900 --> 00:05:17,580 Tik žēl par to. 79 00:05:17,580 --> 00:05:23,880 Un tad kods tiks izvietots pie uz CS50 Semināra mājas lapa pāris 80 00:05:23,880 --> 00:05:25,230 dienas. 81 00:05:25,230 --> 00:05:26,590 >> Viss kārtībā. 82 00:05:26,590 --> 00:05:29,932 Tātad, kā mēs sāktu rakstot savu spēli? 83 00:05:29,932 --> 00:05:31,890 Nu, pirmā lieta mēs esam gatavojas vēlaties darīt 84 00:05:31,890 --> 00:05:34,740 ir apskatīt SDL dokumentāciju. 85 00:05:34,740 --> 00:05:37,020 Tātad, šeit ir VM. 86 00:05:37,020 --> 00:05:38,720 Un šeit ir mājas lapa. 87 00:05:38,720 --> 00:05:40,340 Esmu navigāciju dzīvot libsdl.org. 88 00:05:40,340 --> 00:05:43,110 89 00:05:43,110 --> 00:05:48,140 Ko es esmu gatavojas darīt, šeit ir iet pa uz sānjoslas, ar dokumentāciju, 90 00:05:48,140 --> 00:05:51,040 un noklikšķiniet uz wiki. 91 00:05:51,040 --> 00:05:56,870 Tas dos man wiki, ka ir lielākā daļa no dokumentācijas SDL. 92 00:05:56,870 --> 00:06:01,360 Virs uz sānjoslas šeit, mēs esam gatavojas noklikšķiniet API pa kategorijām, 93 00:06:01,360 --> 00:06:04,300 jo gatavojas sniegt mums jauku kategorisks viedoklis 94 00:06:04,300 --> 00:06:07,770 no visa API SDL. 95 00:06:07,770 --> 00:06:12,390 >> Tā, piemēram, mums ir pamata inicializācijas 96 00:06:12,390 --> 00:06:18,380 un slēgt, visu veida administratīvais sīkumi, izmantojot SDL, 97 00:06:18,380 --> 00:06:21,630 un tad mums ir sadaļu attēlot lietas uz ekrāna. 98 00:06:21,630 --> 00:06:23,000 Tas ir video. 99 00:06:23,000 --> 00:06:25,790 Ievades notikumus, tas kļūst ieeja no klaviatūras, 100 00:06:25,790 --> 00:06:29,710 iegūt datus no peli, un kursorsviru, ja esat to vēl. 101 00:06:29,710 --> 00:06:32,901 Tur ir spēks Atsauksmes par lietām piemēram, spēļu kontrolieri, kas 102 00:06:32,901 --> 00:06:34,150 mēs nebrauksim runāt. 103 00:06:34,150 --> 00:06:35,630 Un šeit ir audio. 104 00:06:35,630 --> 00:06:38,940 Un tad tur ir ķekars citu sīkumi, kas SDL var darīt jums. 105 00:06:38,940 --> 00:06:43,830 >> Bet šodien mēs esam gatavojas koncentrēties uz inicializācijas šeit, 106 00:06:43,830 --> 00:06:48,332 parādot attēlus video iedaļā, un apstrādes ievades notikumus. 107 00:06:48,332 --> 00:06:50,290 Tātad šie ir galvenie sekcijas dokumentāciju 108 00:06:50,290 --> 00:06:53,050 kas jums būtu jāuztraucas par. 109 00:06:53,050 --> 00:06:57,170 Just for fun, ja mēs ejam pa šeit un noklikšķiniet uz API pēc nosaukuma, 110 00:06:57,170 --> 00:07:04,350 mēs varam redzēt sarakstu ik single lieta SDL bibliotēkā. 111 00:07:04,350 --> 00:07:11,330 Tātad visas šīs funkcijas, uzskaitījumu, konstrukcijas, crazy summu sīkumi, 112 00:07:11,330 --> 00:07:12,820 alfabētiska secība. 113 00:07:12,820 --> 00:07:14,580 Un skaidri, līdz jūs zināt, jūs darāt, 114 00:07:14,580 --> 00:07:19,100 tas nebūs pārāk noderīgi, kas ir iemesls, kāpēc mēs to darām API pēc kategorijām. 115 00:07:19,100 --> 00:07:20,810 >> Tātad, pieņemsim sāktu. 116 00:07:20,810 --> 00:07:25,680 Cerams, ka jūs esat jau lejupielādēts sadales kodu. 117 00:07:25,680 --> 00:07:30,070 Un tā, ko jūs varat darīt, ir, vai ne šeit CS50 ierīces, 118 00:07:30,070 --> 00:07:31,150 vienkārši atvērt termināli. 119 00:07:31,150 --> 00:07:33,750 120 00:07:33,750 --> 00:07:34,440 Te nu mēs esam. 121 00:07:34,440 --> 00:07:40,740 Tāpēc es esmu jau lejupielādējis sadales kodu, izmantojot .zip 122 00:07:40,740 --> 00:07:41,690 metode. 123 00:07:41,690 --> 00:07:43,140 Un es esmu unzipped to. 124 00:07:43,140 --> 00:07:46,120 Tātad šeit tas ir SDL semināra kapteinis. 125 00:07:46,120 --> 00:07:49,750 Tāpēc es iešu uz šo direktoriju. 126 00:07:49,750 --> 00:07:55,310 Un ko mēs redzam šeit ir ka mums ir septiņi C failus. 127 00:07:55,310 --> 00:07:58,070 Un tas notiek uz kodu mēs gribam būt apskatot šodien. 128 00:07:58,070 --> 00:08:00,040 Mums ir makefile. 129 00:08:00,040 --> 00:08:06,950 Un mums ir resursu direktoriju, kas vienkārši ir attēlu 130 00:08:06,950 --> 00:08:09,070 ka jūs redzēt pietiekami drīz. 131 00:08:09,070 --> 00:08:16,060 >> Tātad pieņemsim atvērt šos failus izmantojot G-Edit redaktoru. 132 00:08:16,060 --> 00:08:22,000 Tāpēc es gribu atvērt visus failus, kas sākas ar sveiki un beidzas ar .c. 133 00:08:22,000 --> 00:08:23,380 Te nu mēs esam. 134 00:08:23,380 --> 00:08:28,180 Tā ka ir niecīga logs, tāpēc mēs esam gatavojas, lai mēģinātu darīt, ka lielāks. 135 00:08:28,180 --> 00:08:28,900 Nē, tā aizgāja. 136 00:08:28,900 --> 00:08:32,836 137 00:08:32,836 --> 00:08:34,570 >> Viss kārtībā. 138 00:08:34,570 --> 00:08:37,959 Tātad, šeit ir ļoti pirmais failu mēs ejam apskatīt. 139 00:08:37,959 --> 00:08:39,000 To sauc hello1_sdl.c. 140 00:08:39,000 --> 00:08:41,890 141 00:08:41,890 --> 00:08:47,980 Un tas viss dara, ir inicializēt SDL bibliotēka, lai mēs varētu sākt to lietot. 142 00:08:47,980 --> 00:08:51,550 Kā jūs zināt nākt līdz ar šo kodu sevi? 143 00:08:51,550 --> 00:08:53,850 Nu, ja mēs skatāmies vairāk pie dokumentiem 144 00:08:53,850 --> 00:08:58,040 un mēs iedziļināties inicializācijas un slēgt sadaļu, 145 00:08:58,040 --> 00:09:02,230 tas notiek, lai pastāstītu mums visiem par to, kā inicializēt SDL. 146 00:09:02,230 --> 00:09:06,630 Tātad noteikti izlasīt šo kādu citu reizi. 147 00:09:06,630 --> 00:09:09,230 Tas notiek, lai jums pastāstīt visu par to, kas notiek šeit. 148 00:09:09,230 --> 00:09:14,360 Bet galvenais lietas būtība ir tāda, ka mums ir nepieciešams, lai izsauktu šo funkciju SDL In It 149 00:09:14,360 --> 00:09:18,910 un nodot to, kāda veida lietas mēs vēlamies, lai bibliotēka inicializēt. 150 00:09:18,910 --> 00:09:23,620 Tātad mūsu gadījumā, mēs esam tikai gatavojas inicializēt video tagad, 151 00:09:23,620 --> 00:09:26,690 lai mēs varētu sākt attēlot attēlus. 152 00:09:26,690 --> 00:09:32,370 >> Nekā šeit, jūs varat redzēt, ja mēs noklikšķiniet uz SDL tajā, mēs 153 00:09:32,370 --> 00:09:36,160 var iegūt vēl vairāk informācijas, tostarp atgriešanās vērtību. 154 00:09:36,160 --> 00:09:39,050 Tātad mēs redzam šeit, ka tā returnes nulles uz panākumiem. 155 00:09:39,050 --> 00:09:43,320 Tātad mūsu kodu, mēs ejam, lai redzēt, ja tas neatgriežas nulle, 156 00:09:43,320 --> 00:09:47,020 un ja tas neatgriežas nulle, tāpēc tas nebija veiksmīgs, 157 00:09:47,020 --> 00:09:50,650 tad mēs ejam, lai vienkārši izdrukāt kļūda, izmantojot šo citas funkcijas, 158 00:09:50,650 --> 00:09:56,260 SDL get kļūda, kas atgriež virkni aprakstot kļūdu, kas noticis. 159 00:09:56,260 --> 00:09:58,510 Mēs ejam, lai drukātu, ka kļūda, un tad mēs esam tikai 160 00:09:58,510 --> 00:10:02,270 gatavojas iziet no programmas ar kļūdas kodu. 161 00:10:02,270 --> 00:10:06,470 >> Tad cita lieta, ka mums ir nepieciešams to darīt, ir, pirms programma izejām, 162 00:10:06,470 --> 00:10:10,830 ja mēs veiksmīgi inicializēts SDL, mums ir nepieciešams, lai izsauktu to SDL atmest. 163 00:10:10,830 --> 00:10:15,750 Un kas notiek, lai apstrādātu sakopšanu visas SDL iekšējos resursus, lai mums. 164 00:10:15,750 --> 00:10:21,240 Tāpēc dokumentācija there-- atkal, šeit mēs esam inicializācijas 165 00:10:21,240 --> 00:10:23,640 un slēgt sadaļu dokumentācijas. 166 00:10:23,640 --> 00:10:26,680 Jūs varat vienkārši noklikšķiniet uz funkcija šeit, SDL atmest, 167 00:10:26,680 --> 00:10:28,700 un jūs varat izlasīt visu par to, kā labi. 168 00:10:28,700 --> 00:10:31,400 Un daudz šīs funkcijas dokumentācijas lapas 169 00:10:31,400 --> 00:10:35,630 ir piemērs kods, tāpēc šis ir ļoti labs resurss. 170 00:10:35,630 --> 00:10:39,610 Noteikti pavadīt kādu laiku lasīšanas daļas šajā wiki 171 00:10:39,610 --> 00:10:42,520 ja jūs gatavojas darīt tas par projektu. 172 00:10:42,520 --> 00:10:43,760 >> Viss kārtībā. 173 00:10:43,760 --> 00:10:46,590 Tātad tas ir mūsu visu programmu. 174 00:10:46,590 --> 00:10:53,935 Ko mēs varam darīt tagad is-- es esmu gatavojas atvērt makefile šeit, 175 00:10:53,935 --> 00:10:56,150 tāpēc es esmu gatavojas veikt skatīties, kā tas darbojas. 176 00:10:56,150 --> 00:10:59,500 Un tas ir ļoti vienkāršs makefile, līdzīgs tam, ko jūs esat redzējis. 177 00:10:59,500 --> 00:11:04,010 Viens no galvenajām atšķirībām ir tā, ka šeit, šajā 178 00:11:04,010 --> 00:11:07,870 gatavojas ievietot rezultātu vadīšanas šī komanda, kas jūs esat jau 179 00:11:07,870 --> 00:11:10,850 uzstādīt, ja jūs uzinstalēju SDL. 180 00:11:10,850 --> 00:11:13,230 Un tas ir komanda kas notiek, lai radītu 181 00:11:13,230 --> 00:11:16,710 daži papildus karogi par kompilatoru. 182 00:11:16,710 --> 00:11:22,050 >> Papildus tam, mēs dodam to visas parastās komandas, kā arī 183 00:11:22,050 --> 00:11:23,430 šīs divas komandas. 184 00:11:23,430 --> 00:11:30,270 Tātad -lsdl2-image rokturi saistot ar SDL attēlu bibliotēkas. 185 00:11:30,270 --> 00:11:36,200 Un -lm faktiski rokturi sasaisti standarta C math bibliotēka. 186 00:11:36,200 --> 00:11:40,630 Tātad mēs neesam gatavojas nepieciešama tiem visiem mūsu C failu, 187 00:11:40,630 --> 00:11:43,900 bet mēs vienkārši viņus tā, ka mēs varam izmantot to pašu makefile par visu 188 00:11:43,900 --> 00:11:44,816 bez izmaiņām. 189 00:11:44,816 --> 00:11:46,970 190 00:11:46,970 --> 00:11:50,080 >> Vairāk nekā šeit avotiem, tas ir, ja jūs vēlaties 191 00:11:50,080 --> 00:11:53,680 likt failus, kas jums gatavojas sastādīt savam projektam. 192 00:11:53,680 --> 00:11:57,570 Bet, tā kā katru vienu no maniem C failus šeit ir galvenā funkcija, 193 00:11:57,570 --> 00:12:00,000 tas notiek, lai saņemtu sajaukt ja mēs viņus visus. 194 00:12:00,000 --> 00:12:06,930 Tāpēc es esmu gatavojas tikai teikt, tagad, hello1_sdl.c, 195 00:12:06,930 --> 00:12:11,150 kas ir viens mēs vienkārši paskatījās. 196 00:12:11,150 --> 00:12:18,740 Tātad, ja es iet atpakaļ pār šeit, es varu darīt darīt. 197 00:12:18,740 --> 00:12:22,160 Un ko tas darīja tas ir tikai apkopoti šo pirmo failu. 198 00:12:22,160 --> 00:12:28,780 Un tad mēs varam ierakstīt ./game, jo tas ir izpildāms tā ražota. 199 00:12:28,780 --> 00:12:31,660 Un viss tas tomēr bija print inicializācijas veiksmīga. 200 00:12:31,660 --> 00:12:33,300 Tātad mēs kaut ko labo. 201 00:12:33,300 --> 00:12:36,200 Bet tas bija sava veida garlaicīgi, jo mēs neredzēju logu, 202 00:12:36,200 --> 00:12:37,900 nekas netika pārvietojas. 203 00:12:37,900 --> 00:12:41,030 >> Tik liels, mēs saņēmām SDL inicializēts. 204 00:12:41,030 --> 00:12:43,520 Tagad, pieņemsim pāriet uz kaut ko nedaudz vairāk interesants. 205 00:12:43,520 --> 00:12:54,700 Tātad šeit mums ir hello2_window.c, un šis būs nedaudz vairāk 206 00:12:54,700 --> 00:13:00,010 sarežģīts C programmu, kas inicializē SDL tāpat kā līdz šim, 207 00:13:00,010 --> 00:13:04,250 izņemot tagad mēs esam arī gatavojas inicializēt SDL taimeri. 208 00:13:04,250 --> 00:13:07,720 Un tas notiek, lai mūs piekļūt iekšējo taimeri 209 00:13:07,720 --> 00:13:10,550 un izmantot funkcijas, kas attiecas uz laiku. 210 00:13:10,550 --> 00:13:11,920 >> Un tad pieņemsim skatīties uz leju šeit. 211 00:13:11,920 --> 00:13:16,840 Ko mēs darām, ir mums ir šī rādītājs ar SDL logu struct, kas 212 00:13:16,840 --> 00:13:21,160 tiks izveidota ar šo uzaicinājumu funkcijai, SDL veidot logu. 213 00:13:21,160 --> 00:13:25,380 Tagad, tas aizņem daudz argumentu, tāpēc iesim apskatīt dokumentāciju. 214 00:13:25,380 --> 00:13:27,930 Tātad vēlreiz, es esmu gatavojas API pa kategorijām, es esmu 215 00:13:27,930 --> 00:13:33,820 iet uz leju līdz video šeit, un pirmais sadaļa, parādot logu vadību. 216 00:13:33,820 --> 00:13:36,470 Tātad šī sadaļa ir ton sīkumi tajā, 217 00:13:36,470 --> 00:13:39,970 bet, ja paskatās caur šīs funkcijas, jūs 218 00:13:39,970 --> 00:13:43,620 redzēt, ka, iespējams, kādu mēs gribu sauc SDL radīt logu, 219 00:13:43,620 --> 00:13:46,600 kas notiek, ir pašā augšā. 220 00:13:46,600 --> 00:13:49,080 >> Un tā tas ir dokumentācija par šo funkciju. 221 00:13:49,080 --> 00:13:53,710 Logs nāksies nosaukumu, X un Y pozīcija uz ekrāna, 222 00:13:53,710 --> 00:13:56,960 tas nāksies platums, augstums, un tad tas notiek, lai veikt dažas karogus. 223 00:13:56,960 --> 00:14:01,220 Tagad, mums nav reāli rūp kāds no šiem karogiem tieši tagad, 224 00:14:01,220 --> 00:14:04,560 bet, ja jūs vēlētos darīt kaut ko piemēram, veikt pilna ekrāna logu, 225 00:14:04,560 --> 00:14:07,920 jūs varētu to apskatīt to. 226 00:14:07,920 --> 00:14:13,190 Tagad mēs esam tikai gatavojas izmantot šos īpašos vērtības, 227 00:14:13,190 --> 00:14:18,775 SDL logu plus centrēts par x un y, lai 228 00:14:18,775 --> 00:14:21,800 lai tikai radītu logu centrā mūsu ekrāna. 229 00:14:21,800 --> 00:14:24,370 >> Tātad tas, ko tas dara. 230 00:14:24,370 --> 00:14:27,960 Un, ja loga notiek, null, kas nozīmē, ka ir kļūda, 231 00:14:27,960 --> 00:14:32,570 tad atkal mēs esam tikai gatavojas izdrukāt kļūdu izmantojot SDL saņem kļūdas. 232 00:14:32,570 --> 00:14:36,570 Un tad tāpēc, ka mēs inicializēts SDL, mums tagad ir nepieciešams, lai to aizvērtu. 233 00:14:36,570 --> 00:14:40,900 Tāpēc mēs aicinām SDL atmest pirms atgriežoties vienu galveno. 234 00:14:40,900 --> 00:14:42,905 >> Tāpēc mums ir šis logs atvērts, cerams. 235 00:14:42,905 --> 00:14:44,613 Un ko mēs ejam to darīt, ir, mēs ejam 236 00:14:44,613 --> 00:14:50,340 aicināt SDL 5000 milisekundes, kas ir tāds pats kā piecām sekundēm. 237 00:14:50,340 --> 00:14:55,640 Un, kad mēs esam darīts ar to, tas notiek, lai iznīcinātu logu, 238 00:14:55,640 --> 00:14:59,470 sakopt SDL bibliotēku, un izietu no programmas. 239 00:14:59,470 --> 00:15:05,240 So iesim uz priekšu un dot, ka vārtsargu. 240 00:15:05,240 --> 00:15:08,660 >> Tāpēc tagad nevis mainīt Makefile katru reizi, 241 00:15:08,660 --> 00:15:12,180 Es varu vienkārši izdarīt, un tad uz komandrindas, 242 00:15:12,180 --> 00:15:16,090 saka avoti ir vienāds, un pēc tam fails mēs apkopošanai. 243 00:15:16,090 --> 00:15:17,090 Tātad, tas ir hello2_window.c. 244 00:15:17,090 --> 00:15:21,390 245 00:15:21,390 --> 00:15:21,890 Fantastic. 246 00:15:21,890 --> 00:15:22,970 Nav erros. 247 00:15:22,970 --> 00:15:26,085 Tagad, ja mēs vadīt mūsu izpildāmā, mēs redzam šo logu. 248 00:15:26,085 --> 00:15:27,960 Tagad tur ir maz problēmas ar logu. 249 00:15:27,960 --> 00:15:32,820 Mēs varam pārvietot to apkārt, bet tas ir šī fona junk iekšpusē no tā. 250 00:15:32,820 --> 00:15:34,660 Tātad mēs neesam sastādīts kaut kas, un tāpēc tas ir 251 00:15:34,660 --> 00:15:38,210 tikai pilns ar atkritumiem, kas ir diezgan daudz, ko mēs sagaidām. 252 00:15:38,210 --> 00:15:41,010 >> Bez tam, mēs nevaram aizvērt logu. 253 00:15:41,010 --> 00:15:44,780 Es esmu nospiežot šo ar X stūra un nekas notiek. 254 00:15:44,780 --> 00:15:47,840 Tātad mēs redzēsim, kā to salabot ka mazliet. 255 00:15:47,840 --> 00:15:51,750 Tātad, pieņemsim noteikt daļu, kur logs ir pilna ar atkritumiem vispirms. 256 00:15:51,750 --> 00:16:00,850 Tātad, ja mēs ejam pa to hello3_image.c, ko mēs varam redzēt, ir tas, ka mēs esam pievienojuši dažus 257 00:16:00,850 --> 00:16:03,360 vairāk lietas šeit. 258 00:16:03,360 --> 00:16:08,740 Mēs esam pievienojuši šo jauno galveni failu, lai iegūtu taimera funkciju. 259 00:16:08,740 --> 00:16:11,490 Es domāju, mēs to izdarījām, ka pēdējā viens, pārāk, un es neminēja to. 260 00:16:11,490 --> 00:16:13,550 Bet tagad, jo mēs esam strādājot ar attēliem, 261 00:16:13,550 --> 00:16:18,720 mums ir nepieciešams iekļaut SDL image header fails, kā arī. 262 00:16:18,720 --> 00:16:22,087 Tātad, tas ir tas pats, kas pirms inicializēšana SDL šeit, 263 00:16:22,087 --> 00:16:23,420 pats nodarbojas ar radot logiem. 264 00:16:23,420 --> 00:16:25,380 Mēs esam redzējuši, ka pirms tagad. 265 00:16:25,380 --> 00:16:29,870 >> Tagad mums ir nepieciešams, lai radītu kaut ko sauc attēlotājs, kāda veida iet kopā 266 00:16:29,870 --> 00:16:30,800 ar logu. 267 00:16:30,800 --> 00:16:33,860 Bet tas ir sava veida abstrakts objekts, kas ir 268 00:16:33,860 --> 00:16:37,370 atbild par darot visu šo zīmēšanas operācijas pie loga. 269 00:16:37,370 --> 00:16:41,580 Un tas tiešām atbilst programmai iekrauta 270 00:16:41,580 --> 00:16:47,880 uz grafikas aparatūras jūsu dators vai tālrunis vai neatkarīgi. 271 00:16:47,880 --> 00:16:51,005 Tātad karogi mēs gribam iet it-- un jūs varat ielūkoties dokumentācijā 272 00:16:51,005 --> 00:16:56,160 lai iegūtu detalizētāku informāciju here-- gatavojas kas SDL apmetuma paātrināta, kas 273 00:16:56,160 --> 00:16:58,550 nozīmē, ka tas būs izmantojot grafikas aparatūru 274 00:16:58,550 --> 00:17:01,490 un ne tikai atdarināt programmatūru. 275 00:17:01,490 --> 00:17:07,390 >> Un mēs ejam, lai izmantotu SDL attēlotājs PRESENTVSYNC. 276 00:17:07,390 --> 00:17:12,280 VSync ir lieta, kas vienkārši padara jūsu grafikas izskatās labāk un novērš 277 00:17:12,280 --> 00:17:14,970 šī lieta, ko sauc ekrāns terors, kur puse 278 00:17:14,970 --> 00:17:17,720 Viena rāmja un pusi no nākamā rāmis get sagatavots, tajā pašā laikā 279 00:17:17,720 --> 00:17:20,056 un tas izskatās šausmīgi. 280 00:17:20,056 --> 00:17:23,130 Bet atkal, jūs varat iet lasīt par to, ka par savu. 281 00:17:23,130 --> 00:17:24,319 >> Tātad mums ir daži karogus šeit. 282 00:17:24,319 --> 00:17:27,810 Un tāpēc mēs esam tikai gatavojas, lai izsauktu Šī funkcija SDL radīt attēlotājs. 283 00:17:27,810 --> 00:17:31,340 Mēs ejam, lai dotu tai logu asociēt ar šo attēlotājs. 284 00:17:31,340 --> 00:17:34,520 Negatīvs viens nozīmē, ka mums nav vienalga, ko grafikas draiveris mēs spēsim izmantot. 285 00:17:34,520 --> 00:17:36,603 Tā, ka būtu diezgan daudz vienmēr būs negatīva, 286 00:17:36,603 --> 00:17:39,010 ja vien jūs zināt par grafikas vadītājiem. 287 00:17:39,010 --> 00:17:41,650 Un tad mēs esam tikai gatavojas nodot to mūsu karogus. 288 00:17:41,650 --> 00:17:47,240 Tātad, ja tas atgriež null, tad mēs esam gatavojas drukāt kļūdas kā parasti, 289 00:17:47,240 --> 00:17:49,550 bet tad mēs esam arī gatavojas iznīcināt logu 290 00:17:49,550 --> 00:17:54,970 sakopt šos resursus pirms zvanot SDL atmest un atgriezties. 291 00:17:54,970 --> 00:17:58,110 >> Tagad interesanti daļa šeit ir, ja mēs slodze mūsu tēlu 292 00:17:58,110 --> 00:18:00,870 Izmantojot šo funkciju IMG_load. 293 00:18:00,870 --> 00:18:04,050 Šī ir vienīgā funkcija mēs ejam izmantot no SDL attēlu bibliotēkas. 294 00:18:04,050 --> 00:18:05,480 Tas ir tikai viens mums ir nepieciešams. 295 00:18:05,480 --> 00:18:12,950 Tā ir funkcija, kas notiek virkne tas ir ceļš jebkuru attēlu resursa. 296 00:18:12,950 --> 00:18:18,024 Un tas var būt .png, GIF, bitmap, kāda no šīm lietām. 297 00:18:18,024 --> 00:18:19,690 Un tas ir iemesls, kāpēc šī funkcija ir tik jauki. 298 00:18:19,690 --> 00:18:22,560 Tā var rīkoties diezgan daudz jebkurā formātā. 299 00:18:22,560 --> 00:18:27,240 Kravas to atmiņā un saglabā to kā lieta, ko sauc par SDL virsmu. 300 00:18:27,240 --> 00:18:34,660 >> Tagad SDL virsma ir tikai struct kas pārstāv attēla datus atmiņā. 301 00:18:34,660 --> 00:18:38,054 Tātad jūs varat izlasīt vairāk par ka dokumentācijā divi. 302 00:18:38,054 --> 00:18:40,720 Un, ja tas kļūdas, tad mēs esam darīsim visu lieta, kur 303 00:18:40,720 --> 00:18:44,480 mēs drukāt kļūdu, aizvērt resursi, un tad atmest programmu. 304 00:18:44,480 --> 00:18:48,970 Tagad interesanta lieta ir, pirms mēs varam izdarīt šo attēlu uz loga, 305 00:18:48,970 --> 00:18:51,390 mums ir nepieciešams, lai tiešām padarītu to tekstūra. 306 00:18:51,390 --> 00:18:54,460 Tagad tekstūras Atbilst ar attēla datiem piekrauts 307 00:18:54,460 --> 00:18:57,820 pārvērta Grafiskais aparatūras atmiņā. 308 00:18:57,820 --> 00:19:00,720 >> Tātad virsma ir galvenais atmiņa, regulāra atmiņa 309 00:19:00,720 --> 00:19:05,550 ka mēs esam, izmantojot visu semestri, un tekstūra ir šo atsevišķo VRAM 310 00:19:05,550 --> 00:19:09,410 Atmiņas ka grafikas karšu kontrole. 311 00:19:09,410 --> 00:19:13,170 Tāpēc mēs saucam šo funkciju SDL_CreateTextureFromSurface. 312 00:19:13,170 --> 00:19:17,104 Mēs arī tā mūsu attēlotājs un mūsu virsmu. 313 00:19:17,104 --> 00:19:19,020 Un tad mēs esam patiesībā darīts ar virsmu, 314 00:19:19,020 --> 00:19:20,311 tāpēc mēs esam tikai gatavojas atbrīvot to. 315 00:19:20,311 --> 00:19:22,210 Mums nav nepieciešams to vairs. 316 00:19:22,210 --> 00:19:26,650 Un tad tā, ja šis zvans errored un atgriezās null, 317 00:19:26,650 --> 00:19:29,630 tad mēs esam gatavojas darīt visu kļūda atkal ziņošanas lieta. 318 00:19:29,630 --> 00:19:30,920 >> Viss kārtībā. 319 00:19:30,920 --> 00:19:34,810 Lūk, mēs nokļūt kādu faktiskie izciršanas funkcijas. 320 00:19:34,810 --> 00:19:37,730 Tātad zvanot SDL_RenderClear un iet to 321 00:19:37,730 --> 00:19:42,550 attēlotājs, kas saistīti ar mūsu logu vienkārši padara logu iet melns. 322 00:19:42,550 --> 00:19:47,650 Tātad, tas noņem ka junk, ka mēs redzējām Mūsu logs pirms un padara to melns. 323 00:19:47,650 --> 00:19:50,750 Un tad mēs ejam zvanīt SDL_RenderCopy, 324 00:19:50,750 --> 00:19:53,010 arī tā mūsu attēlotājs, mūsu tekstūru. 325 00:19:53,010 --> 00:19:55,800 Un mēs runājam par to, ko Šie lauki ir mazliet. 326 00:19:55,800 --> 00:19:57,830 Bet kas notiek, lai ņemt tekstūra dati 327 00:19:57,830 --> 00:20:03,100 un kopēt to uz mūsu logu izdarīt attēlu. 328 00:20:03,100 --> 00:20:07,020 Tātad, kad mēs esam darījuši šo eksemplāru datus uz mūsu loga, 329 00:20:07,020 --> 00:20:11,180 mums ir jādara šo papildu funkciju sauc SDL_RenderPresent. 330 00:20:11,180 --> 00:20:15,360 >> Un tas ir interesanti jo tas izpaužas 331 00:20:15,360 --> 00:20:18,770 par tēmu sauc dubultā buferizācija. 332 00:20:18,770 --> 00:20:24,380 Tātad dubultā buferizācijas ir tehnika, kas padara jūsu grafikas izskatās daudz labāk. 333 00:20:24,380 --> 00:20:28,240 Atkal, tas novērš šo ekrānu pārplēst Es runāju par agrāk, kur 334 00:20:28,240 --> 00:20:29,590 jums ir divi buferi. 335 00:20:29,590 --> 00:20:32,260 Tur ir atpakaļ bufera atmiņa un priekšējais buferis. 336 00:20:32,260 --> 00:20:36,410 Priekšējais buferis ir burtiski kas ir uz ekrāna brīdī. 337 00:20:36,410 --> 00:20:42,070 Tātad mēs visi šie izdarīt variācijas, tāpat SDL padarīt kopiju vai SDL_RenderClear 338 00:20:42,070 --> 00:20:43,080 uz muguras bufera. 339 00:20:43,080 --> 00:20:44,800 Tāpēc viņi mainīt lietas aizmugurējā buferī. 340 00:20:44,800 --> 00:20:48,970 Šeit mēs varētu šo zīmējumu zaļš kvadrātveida uz muguras bufera. 341 00:20:48,970 --> 00:20:52,300 >> Tāpēc tad, kad mēs esam darījuši darām Mūsu padara darbības, kas 342 00:20:52,300 --> 00:20:55,700 var aizņemt ļoti ilgu laiku laiks, ko mēs gatavojamies darīt 343 00:20:55,700 --> 00:20:57,860 ir slēdzis buferi. 344 00:20:57,860 --> 00:21:00,720 Tātad, tas burtiski vienkārši ņem priekšējais buferis un atpakaļ buferis 345 00:21:00,720 --> 00:21:02,990 un slēdži tos, tāpēc ka, uzreiz, 346 00:21:02,990 --> 00:21:06,630 vienas operācijas laikā, tā vietā, lai varbūt simtiem vai tūkstošiem, 347 00:21:06,630 --> 00:21:10,910 visi mūsu nesen padarīti objekti ir uz ekrāna. 348 00:21:10,910 --> 00:21:13,160 Un tas novērš lietas piemēram, ekrāna atsvaidzinošu 349 00:21:13,160 --> 00:21:16,710 kad mēs esam tikai sagatavots puse Mūsu objektu rāmja. 350 00:21:16,710 --> 00:21:21,280 Tātad, tāpēc mums ir nepieciešams, lai izsauktu SDL_RenderPresent, kā arī 351 00:21:21,280 --> 00:21:23,320 kā SDL_RenderCopy. 352 00:21:23,320 --> 00:21:25,749 >> Atgādināsim, ka mēs esam tikai gatavojas gaidīt piecas sekundes. 353 00:21:25,749 --> 00:21:27,540 Tad mēs ejam sakopt mūsu resursus. 354 00:21:27,540 --> 00:21:29,540 Mums ir diezgan maz vairāk šoreiz. 355 00:21:29,540 --> 00:21:31,750 Un tad mēs esam tikai gatavojas lai izietu no programmas. 356 00:21:31,750 --> 00:21:35,350 Tātad, pieņemsim darīt. 357 00:21:35,350 --> 00:21:41,880 Es esmu gatavojas rakstīt izdarīt, un tad avotus vienāds hello-- tas tagad 3image.c. 358 00:21:41,880 --> 00:21:49,632 359 00:21:49,632 --> 00:21:52,240 Labi, ka apkopoti bez kļūdām. 360 00:21:52,240 --> 00:21:57,210 Un jūs varat redzēt šeit es esmu tagad izvilkta manu attēlu, Hello, CS50! 361 00:21:57,210 --> 00:22:00,560 mūsu loga, kas izzūd pēc piecām sekundēm. 362 00:22:00,560 --> 00:22:02,090 >> Tagad, tas joprojām ir problēmas, vai ne? 363 00:22:02,090 --> 00:22:05,750 Tas nav labs pieteikums, jo, kad es mēģināt, lai aizvērtu logu, 364 00:22:05,750 --> 00:22:06,500 nekas nenotiek. 365 00:22:06,500 --> 00:22:09,540 Ka x ir joprojām nav reaģēt. 366 00:22:09,540 --> 00:22:17,420 Tātad pieņemsim ieskatieties Nākamais failu, hello4animation. 367 00:22:17,420 --> 00:22:21,850 Tātad šis ir fails kas notiek, lai ieviestu 368 00:22:21,850 --> 00:22:25,124 aizkustinoša un kustība uz mūsu tēlu. 369 00:22:25,124 --> 00:22:27,040 Tāpēc mēs esam gatavojas darīt pats kā iepriekš, 370 00:22:27,040 --> 00:22:30,190 uzsākt SDL, izveidotu logu, izveidot attēlotājs, 371 00:22:30,190 --> 00:22:33,030 ielādēt attēlu atmiņa, izveidot tekstūru. 372 00:22:33,030 --> 00:22:35,090 Mēs esam redzējuši visu, kas pirms tam. 373 00:22:35,090 --> 00:22:36,770 Tagad tas ir jauns. 374 00:22:36,770 --> 00:22:42,305 Mēs ejam, lai ir struktūra, ko sauc SDL rect, kas ir tikai taisnstūris. 375 00:22:42,305 --> 00:22:49,950 Ja mēs ejam nekā šeit, mēs varam do meklēt SDL RECT, 376 00:22:49,950 --> 00:22:54,040 un jūs varat redzēt, ka tas ir ļoti vienkārša struktūra. 377 00:22:54,040 --> 00:22:56,760 Tā ir X, Y, lai stāvoklis, un tas 378 00:22:56,760 --> 00:23:02,080 ir platākas un augstumu izmērs taisnstūra. 379 00:23:02,080 --> 00:23:07,785 >> Tātad, ko mēs gatavojamies darīt, ir, mēs esam gatavojas definēt šo SDL Rect Dest, 380 00:23:07,785 --> 00:23:09,480 par galamērķi. 381 00:23:09,480 --> 00:23:14,130 Un šī ir vieta uz ekrāna, kur 382 00:23:14,130 --> 00:23:16,005 mēs ejam, lai būtu zīmēšanas Mūsu attēlu, labi So 383 00:23:16,005 --> 00:23:17,880 ja mēs gribam būt kustīgu attēlu apkārt, 384 00:23:17,880 --> 00:23:20,300 tad galamērķis, kur mēs spēsim izdarīt attēlu 385 00:23:20,300 --> 00:23:22,620 nepieciešams pārvietojas. 386 00:23:22,620 --> 00:23:24,910 Tātad mēs ejam, lai izsauktu šo funkcija SDL_QueryTexture. 387 00:23:24,910 --> 00:23:27,550 388 00:23:27,550 --> 00:23:33,500 Un paziņojums es esmu iet adresi no dest.w, kas ir platums, 389 00:23:33,500 --> 00:23:36,950 un dest.h, kas ir augstums. 390 00:23:36,950 --> 00:23:40,425 Un tā SDL_QueryTexture notiek uzglabāt šajās jomās platums 391 00:23:40,425 --> 00:23:41,675 un augstums mūsu tekstūras. 392 00:23:41,675 --> 00:23:44,680 393 00:23:44,680 --> 00:23:47,030 >> Un tad ko es esmu gatavojas to darīt, ir es eju 394 00:23:47,030 --> 00:23:55,580 noteikt dest.x būt logu platums mīnus dest.w, kas ir 395 00:23:55,580 --> 00:23:59,000 platums elfa, dalīts ar 2. 396 00:23:59,000 --> 00:24:03,860 Un tas notiek, lai uzstādītu to uz augšu, lai ka attēls ir pilnīgi centrēts 397 00:24:03,860 --> 00:24:06,780 mūsu logā, labi? 398 00:24:06,780 --> 00:24:08,652 Tāpēc tagad man ir y pozīciju. 399 00:24:08,652 --> 00:24:10,360 Un tas būs būt mainīga, kas ir 400 00:24:10,360 --> 00:24:16,390 mainās, jo mēs ejam, lai būtu kustīgu attēlu y virzienā. 401 00:24:16,390 --> 00:24:19,050 Un tagad mums ir kaut kas sauc animācijas cilpa. 402 00:24:19,050 --> 00:24:21,180 >> Tātad, kā tas animācija darbojas? 403 00:24:21,180 --> 00:24:27,630 Nu, cilvēka acs var atklāt 12 atšķirīgas attēlus katru sekundi, labi? 404 00:24:27,630 --> 00:24:33,060 Tātad, ja jūs flash 12 attēlu kārtis uz mani sekundē, es redzēju katru no šiem attēliem 405 00:24:33,060 --> 00:24:35,950 kā savu atšķirīgu individuālo tēlu. 406 00:24:35,950 --> 00:24:39,690 Tagad, ja jūs flash vairāk attēlus uz mani sekundē, 407 00:24:39,690 --> 00:24:42,140 tad manu acu sāktos izzust kopā 408 00:24:42,140 --> 00:24:46,920 un es varētu uztvert to kā kustības, nevis viena atsevišķa attēla. 409 00:24:46,920 --> 00:24:51,930 Tātad, piemēram, filmas un televīzijas, mirgo attēlus jums 24 reizes 410 00:24:51,930 --> 00:24:52,570 otrs. 411 00:24:52,570 --> 00:24:55,110 Tātad tas ir 24 kadriem sekundē. 412 00:24:55,110 --> 00:25:00,136 Datoru ekrāni, no otras puses, bieži vien ir pie 60 kadriem sekundē. 413 00:25:00,136 --> 00:25:01,260 Tas ir viņu atsvaidzināt ātrums. 414 00:25:01,260 --> 00:25:04,650 Tas, cik bieži viņi atsvaidzināt attēlu uz ekrāna. 415 00:25:04,650 --> 00:25:08,960 Tātad mūsu mērķis būs 60 kadri sekundē, kas ir mūsu spēles. 416 00:25:08,960 --> 00:25:11,770 417 00:25:11,770 --> 00:25:13,710 >> Tātad, pieņemsim redzēt, ka kodu. 418 00:25:13,710 --> 00:25:19,064 Tātad katram kadram, mēs vispirms gatavojas notīrītu logu. 419 00:25:19,064 --> 00:25:20,230 Tas ir vispārējs modelis. 420 00:25:20,230 --> 00:25:22,450 Jūs vienmēr skaidrs logs katra rāmja, un pēc tam 421 00:25:22,450 --> 00:25:25,210 darīt visu savu zīmējumu operāciju, un pēc tam beigās, 422 00:25:25,210 --> 00:25:29,610 do RenderPresent parādīt viss kadrā. 423 00:25:29,610 --> 00:25:33,910 Un tad jūs gatavojas ir jāgaida beigās 424 00:25:33,910 --> 00:25:36,340 jāgaida līdz nākamajai rāmis jāsāk. 425 00:25:36,340 --> 00:25:38,650 >> Tātad, ja man bija darīt daudz sarežģīts aprēķins šeit 426 00:25:38,650 --> 00:25:43,100 kas notika vairāk nekā 16 milisekundes, nebūtu iespējams par mani 427 00:25:43,100 --> 00:25:46,890 lai iegūtu šo kadru ātrumu 60, kas Es gribēju, jo katrs kadrs ir 428 00:25:46,890 --> 00:25:48,750 ņemot pārāk ilgi, lai aprēķinātu. 429 00:25:48,750 --> 00:25:52,340 Turklāt, mēs tiešām darām kārtot niecīgu darba apjomu 430 00:25:52,340 --> 00:25:54,820 šeit, jo tur ir tikai viena lieta, ko mēs esam zīmējumu. 431 00:25:54,820 --> 00:25:59,390 Tāpēc es tikai jāgaida 1/60 kādas otrkārt, kas ir garums 432 00:25:59,390 --> 00:26:01,520 no rāmja starp kadriem. 433 00:26:01,520 --> 00:26:05,610 Tāpēc es esmu veida izliekoties darīt viss mans darbs aizņem nulles laiku. 434 00:26:05,610 --> 00:26:09,050 Bet reālā spēlē, jūs ir atņemt 435 00:26:09,050 --> 00:26:13,760 daudz laika pagāja darīt viss šis darbs no jūsu atpūtas laiku. 436 00:26:13,760 --> 00:26:16,970 >> Tātad vienalga, ko es esmu faktiski dara šajā cilpa? 437 00:26:16,970 --> 00:26:19,070 Es notīrīt logu. 438 00:26:19,070 --> 00:26:27,470 Es noteikti dest.y, kas ir int mana aktuālā y amats iemesta int. 439 00:26:27,470 --> 00:26:32,070 Tagad, es gribu peldēt rezolūciju manu y stāvokli manu spēli, 440 00:26:32,070 --> 00:26:34,150 bet tad faktiski izdarīt to uz ekrāna, 441 00:26:34,150 --> 00:26:39,070 tai Ints, jo tas ir vienībās pikseļi, tā ka tas, ko cast ir. 442 00:26:39,070 --> 00:26:41,745 Es esmu gatavojas izdarīt attēlu. 443 00:26:41,745 --> 00:26:45,180 Tātad šis ir avots taisnstūris. 444 00:26:45,180 --> 00:26:47,060 Un tas ir galamērķis taisnstūris. 445 00:26:47,060 --> 00:26:50,310 Tāpēc es pagājis null par avots taisnstūris 446 00:26:50,310 --> 00:26:53,426 teikt, es gribu vērst visu manu tekstūru. 447 00:26:53,426 --> 00:26:55,300 Bet, ja jums bija daudz tekstūras jūsu spēli 448 00:26:55,300 --> 00:26:59,120 un viņi visi vienā lielā tekstūras kartē kas tika iepildīta SDL kā tikai viens 449 00:26:59,120 --> 00:27:02,850 tekstūra, jūs varētu izmantot avota taisnstūri 450 00:27:02,850 --> 00:27:06,750 izvēlēties vienu no mazākiem faktūru, viens no mazākajiem sprites, 451 00:27:06,750 --> 00:27:09,450 no šīs lielās tekstūras kartē. 452 00:27:09,450 --> 00:27:14,740 >> Tātad vēlreiz, es esmu iet manu padarīt, mana tekstūra, un tagad galamērķis. 453 00:27:14,740 --> 00:27:18,320 Tas būs tā, kurā logu tas būs jāizdara. 454 00:27:18,320 --> 00:27:21,390 Un tad, jo es esmu apguve kaut kas, man vajag kustību, 455 00:27:21,390 --> 00:27:25,150 Es esmu būs atjaunināšanu elfa nostāja par katru rāmja. 456 00:27:25,150 --> 00:27:30,190 Tāpēc man ir šī konstante sauc rulli paātrināt vienībās pikseļu sekundē. 457 00:27:30,190 --> 00:27:34,320 Tagad, katru reizi, kad mēs to kustību, rāmis ir tikai 1/60 daļa no sekundes. 458 00:27:34,320 --> 00:27:36,740 Tāpēc es esmu gatavojas sadalīt, ka līdz 60. 459 00:27:36,740 --> 00:27:42,350 Un tad, pieņemsim redzēt, es esmu atskaitot ka no y pozīcijas. 460 00:27:42,350 --> 00:27:44,470 Kāpēc es esmu atņemot? 461 00:27:44,470 --> 00:27:46,169 Mēs sāksim ka sekundē. 462 00:27:46,169 --> 00:27:48,460 Tātad es sakopt savus resursus un programma ir beigusies. 463 00:27:48,460 --> 00:27:49,830 >> Tātad, pieņemsim darīt, ka. 464 00:27:49,830 --> 00:27:52,450 465 00:27:52,450 --> 00:28:03,570 Tātad pieņemsim iedziļināties make SRCS = hello4 animation.c, labi? 466 00:28:03,570 --> 00:28:05,720 Spēle. 467 00:28:05,720 --> 00:28:06,770 Lūdzu. 468 00:28:06,770 --> 00:28:12,690 Tāpēc man ir tas ritinot augšup logs, kas ir diezgan veikls. 469 00:28:12,690 --> 00:28:17,110 Bet tur, es tika atņemot no y stāvoklī katru reizi. 470 00:28:17,110 --> 00:28:18,910 Kas notiek tur? 471 00:28:18,910 --> 00:28:24,010 Nu, izrādās, ka SDL, un Patiesībā, vairumā datorgrafikā, 472 00:28:24,010 --> 00:28:28,890 izcelsme par koordinātu sistēmu ir augšējā kreisajā stūrī loga. 473 00:28:28,890 --> 00:28:34,960 >> Tātad pozitīvais x virziens iet pāri jūsu loga pa labi. 474 00:28:34,960 --> 00:28:38,110 Un pozitīvā y virziens faktiski iet uz leju. 475 00:28:38,110 --> 00:28:40,470 Tātad vēlreiz, izcelsmi ir in augšējā kreisajā stūrī jūsu loga, 476 00:28:40,470 --> 00:28:46,190 pozitīvs y virziens ir uz leju, un pozitīvs x ir pa labi. 477 00:28:46,190 --> 00:28:48,770 Tātad, kad es atņemt no y pozīcija, kas ir 478 00:28:48,770 --> 00:28:52,640 gatavojas, lai tas iet uz negatīvo Y virzienā, kas ir atkarīgs no loga. 479 00:28:52,640 --> 00:28:55,500 Tātad tas, kas notiek tur. 480 00:28:55,500 --> 00:28:56,510 Cool. 481 00:28:56,510 --> 00:28:59,240 >> Apskatīsim nākamo failu. 482 00:28:59,240 --> 00:29:05,700 Šeit ir daļa no parādīt, kur mēs beidzot 483 00:29:05,700 --> 00:29:08,920 iegūt, ka X stūrī loga kas ir paredzēts, lai aizvērtu logu 484 00:29:08,920 --> 00:29:10,660 strādāt. 485 00:29:10,660 --> 00:29:12,800 Tātad, kas notiek? 486 00:29:12,800 --> 00:29:17,520 Mēs sāktu SDL, izveidot logu, izveidot attēlotājs, slodze attēlu, 487 00:29:17,520 --> 00:29:19,770 izveidot faktūru piemēram, mēs esam redzējuši iepriekš. 488 00:29:19,770 --> 00:29:26,850 Mums ir tāda pati mērķa taisnstūri kā iepriekš, tas pats aicinājums vaicājumu tekstūru. 489 00:29:26,850 --> 00:29:29,780 Bet šoreiz, mēs esam tam gatavojas sadalīt platumu 490 00:29:29,780 --> 00:29:33,110 un augstums mūsu galamērķa 4. 491 00:29:33,110 --> 00:29:36,430 Tas ir tikai sekas mērogošana mūsu attēlu uz leju, kad 492 00:29:36,430 --> 00:29:39,884 mēs parādītu to logā ar četri. 493 00:29:39,884 --> 00:29:40,800 Tātad tas ir diezgan veikls. 494 00:29:40,800 --> 00:29:42,770 Mēs varam tikai mērogu tieši tāpat. 495 00:29:42,770 --> 00:29:45,970 Mēs ejam, lai sāktu Sprite centrā ekrāna. 496 00:29:45,970 --> 00:29:49,410 Un tagad mums ir X un Y ātrumu un viņi abi gatavojas sākt no nulles. 497 00:29:49,410 --> 00:29:53,740 498 00:29:53,740 --> 00:29:55,880 >> Tas ir nepareizs fails. 499 00:29:55,880 --> 00:29:56,380 Man ir žēl. 500 00:29:56,380 --> 00:29:57,960 Tā ka viss ir taisnība. 501 00:29:57,960 --> 00:30:00,170 Tas viss vēl šajā failā. 502 00:30:00,170 --> 00:30:03,210 Mums ir plaisu 4. un viss. 503 00:30:03,210 --> 00:30:07,830 Tātad šeit mums ir X un Y pozīciju par centrā loga. 504 00:30:07,830 --> 00:30:12,480 Un mēs arī tā sākotnējo ātrumu Šīs konstantu ātrumu, kas 505 00:30:12,480 --> 00:30:15,180 Es uzskatu, ka ir 300 pikseļi sekundē. 506 00:30:15,180 --> 00:30:19,850 Tagad mums ir tas int varētu tikpat labi būt Būla sauc tuvu pieprasīts. 507 00:30:19,850 --> 00:30:23,970 Un tā vietā, darot bezgalīga cilpa uz taimeri šeit, 508 00:30:23,970 --> 00:30:29,180 mēs spēsim tikt apguve kā Kamēr tuvu nav pieprasīta. 509 00:30:29,180 --> 00:30:30,960 >> Tātad, kā mēs apstrādājam notikumus? 510 00:30:30,960 --> 00:30:35,600 Nu, SDL rindas up notikumus gramatisko rinda aizkulisēs. 511 00:30:35,600 --> 00:30:38,860 Un tad katrs kadrs, mēs varam dequeue notikumus 512 00:30:38,860 --> 00:30:43,900 No šīs rindas, izmantojot šis aicinājums SDL_PullEvent. 513 00:30:43,900 --> 00:30:46,730 Un atkal, noteikti iet lasīt par to dokumentācijā. 514 00:30:46,730 --> 00:30:50,450 Tur ir daudz vairāk detaļu un daudz vairāk funkcijas jūs varat izmantot ar to. 515 00:30:50,450 --> 00:30:54,750 Mums iet tā adrese Šī lieta, SDL_Event 516 00:30:54,750 --> 00:30:56,990 ka mēs esam šeit uz skursteņa. 517 00:30:56,990 --> 00:30:58,840 >> Tagad, kas ir SDL_event? 518 00:30:58,840 --> 00:31:02,356 Jo SDL, ja mēs skatāmies tad documentation-- pieņemsim 519 00:31:02,356 --> 00:31:07,580 skat, API pa kategorijām, ievadi notikumi, notikumu apstrādi, 520 00:31:07,580 --> 00:31:15,150 mēs varam apskatīt numuru dažādu pasākumu šeit 521 00:31:15,150 --> 00:31:18,600 un mēs varam redzēt tur ir vesela ton no tiem. 522 00:31:18,600 --> 00:31:22,150 Tātad, kas tas ir SDL_Event lieta? 523 00:31:22,150 --> 00:31:28,190 524 00:31:28,190 --> 00:31:31,107 SDL_Event ir savienība. 525 00:31:31,107 --> 00:31:31,940 Wow, kas ir savienība? 526 00:31:31,940 --> 00:31:33,910 Jūs esat droši vien nekad dzirdējis, ka pirms. 527 00:31:33,910 --> 00:31:35,610 Un tas ir OK. 528 00:31:35,610 --> 00:31:39,420 >> Arodbiedrības ir veids kā struct, izņemot struct 529 00:31:39,420 --> 00:31:41,960 ir telpu visiem tā lauki un atmiņa, 530 00:31:41,960 --> 00:31:45,060 tā kā savienība ir tikai pietiekami daudz vietas, lai ietilptu lielākā 531 00:31:45,060 --> 00:31:49,660 viens no tās lietošanas jomu, kas nozīmē, ka tas var saglabāt tikai vienu no tās laukiem 532 00:31:49,660 --> 00:31:52,830 laikā, kas veida jēga pasākumiem, vai ne? 533 00:31:52,830 --> 00:31:55,810 Mēs varam būt tastatūra notikums vai logs notikums, 534 00:31:55,810 --> 00:31:59,750 bet viens notikums nevar būt gan tastatūra notikums un logu notikums, 535 00:31:59,750 --> 00:32:05,450 tāpēc lūdzu būt muļķīgi ir vieta abi no tiem iekšā mūsu notikumu savienību. 536 00:32:05,450 --> 00:32:07,770 Tātad, ja jūs vēlaties, lai izveidot savu savienību, 537 00:32:07,770 --> 00:32:10,020 tas izskatās tieši tāds pats kā izveidot struct, 538 00:32:10,020 --> 00:32:14,140 izņemot to, ka mēs izmantojam Eiropas Savienības atslēgvārdu nevis struct atslēgvārdu. 539 00:32:14,140 --> 00:32:17,490 Un atceries, lai visi lietas iekšpusē jūsu savienību, 540 00:32:17,490 --> 00:32:22,020 faktiskais mainīgais, kas ir savienība var būt tikai viena no tām vērtībām 541 00:32:22,020 --> 00:32:24,780 laikā. 542 00:32:24,780 --> 00:32:29,940 >> Tātad, kā mēs varam pateikt, kāda veida notikums mēs tikko popped off šo rindā? 543 00:32:29,940 --> 00:32:33,370 Nu, mēs varam pārbaudīt, lai event.type. 544 00:32:33,370 --> 00:32:35,792 Un, ja tas ir vienāds līdz SDL_Quit, mēs zinām, 545 00:32:35,792 --> 00:32:37,500 tas ir notikums, kas tika radīts, kad mēs 546 00:32:37,500 --> 00:32:39,510 hit, ka X stūrī loga. 547 00:32:39,510 --> 00:32:44,270 Un mēs varam noteikt tuvu pieprasīta ir vienāds ar 1. 548 00:32:44,270 --> 00:32:47,230 Pārējais ir tikai dažas animācijas ka jūs esat redzējis. 549 00:32:47,230 --> 00:32:52,802 So iesim uz priekšu un padarīt šo un redzēt, cik labi tā darbojas. 550 00:32:52,802 --> 00:32:55,135 Tāpēc es esmu gatavojas rakstīt marku un tad SRCS = hello5_events.c. 551 00:32:55,135 --> 00:33:03,760 552 00:33:03,760 --> 00:33:04,770 Tur mēs ejam. 553 00:33:04,770 --> 00:33:05,780 Spēles. 554 00:33:05,780 --> 00:33:08,920 >> Tagad mēs varam redzēt, tas bija patiešām samazināts līdz četriem. 555 00:33:08,920 --> 00:33:10,360 Un tagad tas ir veselīgs apkārt. 556 00:33:10,360 --> 00:33:14,630 Man ir dažas sadursmes atklāšana notiek ar loga malas 557 00:33:14,630 --> 00:33:16,840 ka mēs varam to apskatīt. 558 00:33:16,840 --> 00:33:21,190 Un kas notiek, kad es iet to aizvērt? 559 00:33:21,190 --> 00:33:22,120 Tas aizveras. 560 00:33:22,120 --> 00:33:22,740 Fantastic. 561 00:33:22,740 --> 00:33:24,290 Mēs esam saņēmuši šo notikumu. 562 00:33:24,290 --> 00:33:26,630 Un mēs to jārīkojas. 563 00:33:26,630 --> 00:33:30,730 >> Tātad pieņemsim atskatīties uz kodu. 564 00:33:30,730 --> 00:33:33,020 Tātad, kā man to veselīgs apkārt, piemēram, ka? 565 00:33:33,020 --> 00:33:37,200 Atcerieties, es noteikti gan X un y sākotnēji ātrumu. 566 00:33:37,200 --> 00:33:39,260 Un ātrums ir pozitīvs nemainīgs, tā ka ir 567 00:33:39,260 --> 00:33:42,680 dodas, lai saņemtu to, sākot out iet uz leju un pa labi. 568 00:33:42,680 --> 00:33:45,680 569 00:33:45,680 --> 00:33:50,310 >> Tagad, katrs rāmis, papildus apstrādi notikumi, kas varētu būt noticis, 570 00:33:50,310 --> 00:33:57,520 Es esmu gatavojas atklāt, vai manu elfa mēģina iziet no loga. 571 00:33:57,520 --> 00:34:03,610 Tātad, mēs varam darīt, ka, tikai pārbaudot x_pos ar 0, y_pos 0, un pēc tam 572 00:34:03,610 --> 00:34:07,370 arī x_pos un y_pos ar loga platums un augstums logu. 573 00:34:07,370 --> 00:34:11,010 Paziņojums Es esmu atņemti platums elfa. 574 00:34:11,010 --> 00:34:14,090 Un tas ir tāpēc, ka, ja man nav atņemt platums elfa, 575 00:34:14,090 --> 00:34:17,760 tas tikai pārbaudīt, izcelsmi elfa 576 00:34:17,760 --> 00:34:19,690 negāja aiz loga. 577 00:34:19,690 --> 00:34:21,480 Bet mēs gribam visu vielas platums elfa 578 00:34:21,480 --> 00:34:24,030 lai vienmēr iekšpusē loga un visa augstums elfa 579 00:34:24,030 --> 00:34:25,321 lai vienmēr iekšpusē loga. 580 00:34:25,321 --> 00:34:27,429 Tātad, tas ko atņemšanu ir. 581 00:34:27,429 --> 00:34:30,080 Daudz ģeometrijas šeit var būt noderīgi izdarīt to ārā 582 00:34:30,080 --> 00:34:33,929 uz papīra ar koordinātu sistēma, lai redzētu, kas notiek. 583 00:34:33,929 --> 00:34:38,090 >> Tātad, ja es saduras, es tikko vienkārši reset pozīciju 584 00:34:38,090 --> 00:34:41,400 tā, ka tas nav iet no ekrāna. 585 00:34:41,400 --> 00:34:47,179 Un es esmu gatavojas, ja tas bounces uz vienas no sānu sienām, 586 00:34:47,179 --> 00:34:51,469 Es esmu gatavojas noliegt x ātrums tā, ka tas 587 00:34:51,469 --> 00:34:53,210 sākas veselīgs citā virzienā. 588 00:34:53,210 --> 00:34:56,210 Un līdzīgi, ja tas hits augšējā vai apakšējā, 589 00:34:56,210 --> 00:34:59,820 Es esmu gatavojas noteikt y ātrumu vienāds ar negatīvu y ātrumu, 590 00:34:59,820 --> 00:35:01,690 tā, ka tas piepeši atpakaļ. 591 00:35:01,690 --> 00:35:03,860 Tātad tas ir tikai, kā mēs saņēmām, ka šeit. 592 00:35:03,860 --> 00:35:07,560 >> Un atjaunināšana pozīcijas tāpat kā mēs esam redzējuši iepriekš, 593 00:35:07,560 --> 00:35:12,510 izdalot ar 60, jo mēs esam tikai apstrādes 1/60 sekundes. 594 00:35:12,510 --> 00:35:15,750 Un tad izciršanas, tieši tāds pats kā pirms tam. 595 00:35:15,750 --> 00:35:19,810 Un tā tas ir viss kas notiek šajā lietā. 596 00:35:19,810 --> 00:35:22,490 Tātad tas, kā mēs to darām notikumus. 597 00:35:22,490 --> 00:35:29,260 Galvenais atņemt šeit tas SDL_PullEvent funkcija. 598 00:35:29,260 --> 00:35:33,020 Un jums noteikti vajadzētu izlasīt dokumentācija vairāk par SDL_Event 599 00:35:33,020 --> 00:35:38,630 savienību, jo šis datu tips ir ļoti, ļoti svarīgi, jo mēs to izmantot 600 00:35:38,630 --> 00:35:40,690 visa veida notikumiem. 601 00:35:40,690 --> 00:35:46,539 >> Piemēram, mēs to izmantot tastatūras notikumi, kas ir tas, ko šis fails ir. 602 00:35:46,539 --> 00:35:47,330 Tātad, ko mēs esam? 603 00:35:47,330 --> 00:35:50,180 Mums ir tas pats kā iepriekš, sāktu SDL, izveidot logu, 604 00:35:50,180 --> 00:35:55,260 izveidot attēlotājs, ielādēt attēlu atmiņā, izveidot tekstūru. 605 00:35:55,260 --> 00:36:00,530 Atgādināsim, ka mēs spēsim ir šī dest taisnstūri, 606 00:36:00,530 --> 00:36:04,890 mēs ejam mēroga attēlu četri, padarīt to nedaudz mazāks. 607 00:36:04,890 --> 00:36:08,000 Tagad mēs gatavojamies sākt elfa centrā ekrāna. 608 00:36:08,000 --> 00:36:12,090 Bet šoreiz, mēs ejam, lai iestatītu sākotnējie x un y ātrumi līdz nullei, 609 00:36:12,090 --> 00:36:15,140 jo tastatūra ir gatavojas kontrolēt tos. 610 00:36:15,140 --> 00:36:18,900 Un turklāt, mēs ejam, lai sekot šiem mainīgajiem 611 00:36:18,900 --> 00:36:20,450 uz augšu, uz leju, pa kreisi un pa labi. 612 00:36:20,450 --> 00:36:23,090 Un kas notiek, lai saglabātu dziesmu par to, vai mēs esam 613 00:36:23,090 --> 00:36:27,370 nospiests tastatūras pogas, kas atbilst uz augšu, uz leju, pa kreisi, 614 00:36:27,370 --> 00:36:28,460 un pa labi. 615 00:36:28,460 --> 00:36:32,440 >> Tagad, tas ir sava veida iedomātā jo mēs varam izmantot W, A, S, 616 00:36:32,440 --> 00:36:35,480 D šeit, vai faktiskie bulttaustiņus. 617 00:36:35,480 --> 00:36:38,590 Mēs redzam, ka tikai sekundi. 618 00:36:38,590 --> 00:36:41,140 Tātad mēs ejam, lai apstrādātu notikums, tāpat kā līdz šim. 619 00:36:41,140 --> 00:36:42,530 Mēs pull notikumu. 620 00:36:42,530 --> 00:36:45,840 Bet tagad mēs spēsim pāriet uz notikuma veidu. 621 00:36:45,840 --> 00:36:47,710 Ja tas ir SDL_Quit, mēs esam gatavojas noteikt aizvērt 622 00:36:47,710 --> 00:36:49,990 lūdza vienam, tāpat kā līdz šim. 623 00:36:49,990 --> 00:36:52,315 Kas rokturi X stūrī loga, 624 00:36:52,315 --> 00:36:55,050 lai mūsu logs faktiski aizveras. 625 00:36:55,050 --> 00:37:00,110 >> Pretējā gadījumā, ja mēs iegūtu SDL taustiņu uz leju notikums, kas nozīmē, ka mēs nospiedis taustiņu, 626 00:37:00,110 --> 00:37:04,470 tad ko mēs gatavojamies darīt, ir, mēs esam gatavojas pāriet uz šo lietu šeit, 627 00:37:04,470 --> 00:37:11,370 kas means-- tik event.key nozīmē ārstēt mūsu notikumu savienību, 628 00:37:11,370 --> 00:37:15,490 iet un saņemt atslēgu notikums struktūra tajā. 629 00:37:15,490 --> 00:37:18,810 Tātad izrādās, ka šis savienība ir svarīgs notikums struktūra. 630 00:37:18,810 --> 00:37:22,820 Un tad iet uz atslēgu Pasākuma struktūra tā lauks 631 00:37:22,820 --> 00:37:26,140 sauc keysym un tad scancode. 632 00:37:26,140 --> 00:37:29,480 Un atkal, noteikti izlasīt dokumentācija par šo. 633 00:37:29,480 --> 00:37:31,220 Atslēgvārds ieejas diezgan interesants. 634 00:37:31,220 --> 00:37:34,020 Jūs varat iegūt skenēšanas kodiem vai galvenos kodus. 635 00:37:34,020 --> 00:37:38,590 Un tas ir mazliet smalks, bet dokumentācija ir diezgan laba. 636 00:37:38,590 --> 00:37:43,380 >> Tātad, ja mēs redzam, skenēšanas kodu Mūsu galvenais prese ir W vai uz augšu, 637 00:37:43,380 --> 00:37:45,450 mēs spēsim izveidot vienāds ar 1. 638 00:37:45,450 --> 00:37:47,240 Un tad mēs izkļūt no šīs slēdzi. 639 00:37:47,240 --> 00:37:52,980 Ja tas ir vai pa kreisi, mēs, kas atstāta 1, et tā tālāk, un tā tālāk, uz leju un pa labi. 640 00:37:52,980 --> 00:37:57,080 Tagad, šajā ārējā slēdzi, ja mēs redzam taustiņu uz augšu notikumu, 641 00:37:57,080 --> 00:38:00,730 tas nozīmē, ka mēs esam izlaiduši atslēga un mēs vairs nospiežot to. 642 00:38:00,730 --> 00:38:05,380 Tāpēc es esmu gatavojas teikt up ir 0, kreisā ir 0, noteikti ir vienāds ar 0, pa labi 643 00:38:05,380 --> 00:38:08,260 ir 0, un tā tālāk. 644 00:38:08,260 --> 00:38:12,070 >> Un paziņojums mums ir katrā no šiem divi gadījumi likt blakus viens otram 645 00:38:12,070 --> 00:38:14,490 bez atsevišķu kodu par pirmajā gadījumā, kas 646 00:38:14,490 --> 00:38:18,180 nozīmē, ka tas, vai tā ir S vai uz leju tieši šeit, 647 00:38:18,180 --> 00:38:20,520 tas notiek, lai izpildītu šo kodu. 648 00:38:20,520 --> 00:38:22,090 Tātad tas ir diezgan parocīgs. 649 00:38:22,090 --> 00:38:24,830 Tas novērš mums, kam to darīt vairāk nosacījumus un IFS un lietas 650 00:38:24,830 --> 00:38:26,980 tāpat. 651 00:38:26,980 --> 00:38:29,420 >> Tātad mēs ejam noteiktu ātrumu. 652 00:38:29,420 --> 00:38:31,020 Mēs noteikti ātrumu līdz 0. 653 00:38:31,020 --> 00:38:33,910 Tad, ja līdz tiek nospiests un ne uz leju, tad mēs 654 00:38:33,910 --> 00:38:37,450 noteikt y ātrumu uz negatīvu ātrumu. 655 00:38:37,450 --> 00:38:42,930 Atcerieties negatīva, jo negatīvs y virziens ir uz augšu. 656 00:38:42,930 --> 00:38:45,540 Un pozitīvā y virziens ir uz leju. 657 00:38:45,540 --> 00:38:47,510 Ja uz leju tiek nospiests un nevis uz augšu, tad mēs esam 658 00:38:47,510 --> 00:38:53,860 gatavojas noteikt to uz pozitīvu ātrumu, kas nozīmē iet uz leju ekrānu. 659 00:38:53,860 --> 00:38:55,460 Pats ar kreiso un labo. 660 00:38:55,460 --> 00:38:58,200 >> Un tad mēs ejam, lai atjauninātu pozīcijas tāpat kā pirms tam. 661 00:38:58,200 --> 00:39:00,740 Mēs darīsim sadursmi atklāšana ar robežas, 662 00:39:00,740 --> 00:39:04,290 bet mēs nebrauksim, lai atjaunotu ātrums, jo ātrums ir tikai 663 00:39:04,290 --> 00:39:06,780 kontrolē klaviatūru. 664 00:39:06,780 --> 00:39:11,230 Bet mēs gribam, lai atjaunotu pozīcijas, lai saglabātu to loga. 665 00:39:11,230 --> 00:39:14,400 Un mēs ejam, lai iestatītu pozīcijas uz struct 666 00:39:14,400 --> 00:39:17,400 un tad darīt visu padarot stuff no iepriekš. 667 00:39:17,400 --> 00:39:20,750 Tātad, pieņemsim redzēt, ko tā dara. 668 00:39:20,750 --> 00:39:25,460 Tātad, lai SRCS-- pieņemsim redzēt, tas ir hello6_keyboard.c. 669 00:39:25,460 --> 00:39:38,140 670 00:39:38,140 --> 00:39:38,820 >> Ak, nē. 671 00:39:38,820 --> 00:39:40,150 Tātad, mēs saņēmām dažus brīdinājumus šeit. 672 00:39:40,150 --> 00:39:43,840 Un tas ir vienkārši sakot, mēs neesam pārbaudīt katru iespējamo veidu 673 00:39:43,840 --> 00:39:45,610 par notikumu. 674 00:39:45,610 --> 00:39:49,470 Tas ir OK, jo tur ir 236 no viņiem, vai arī tā. 675 00:39:49,470 --> 00:39:51,760 Tāpēc es esmu gatavojas ignorēt šos brīdinājumus. 676 00:39:51,760 --> 00:39:53,530 Tas joprojām ir apkopota naudas sodu. 677 00:39:53,530 --> 00:39:56,100 Tāpēc es esmu gatavojas spēlēt spēli. 678 00:39:56,100 --> 00:39:57,590 Tas nav kustībā. 679 00:39:57,590 --> 00:40:04,150 Bet tagad, kad es misu uz manu klaviatūru, Es varu darīt daži WASD kustību šeit, 680 00:40:04,150 --> 00:40:06,870 Es izmantot savu bulttaustiņus, kā arī. 681 00:40:06,870 --> 00:40:10,070 Un paziņojums, lai gan es esmu nospiežot tiesības tieši tagad, 682 00:40:10,070 --> 00:40:13,804 tas nav dodas ārā pa logu, jo es reset to katrā kadrā. 683 00:40:13,804 --> 00:40:14,720 Tātad tas ir diezgan veikls. 684 00:40:14,720 --> 00:40:19,420 Jūs varat iedomāties, pārvietojoties ar Mario daži bulttaustiņus vai kaut kas tamlīdzīgs. 685 00:40:19,420 --> 00:40:22,880 Un jā, tad X strādā. 686 00:40:22,880 --> 00:40:26,900 >> Tāpēc galīgais fails mēs ejam apskatīt, hellow7_mouse. 687 00:40:26,900 --> 00:40:29,600 Tas ir par kļūst peles ievadi. 688 00:40:29,600 --> 00:40:34,790 Tātad šo vienu, mēs importēt math galvenes, 689 00:40:34,790 --> 00:40:38,100 jo mēs esam nāksies mazliet math šeit. 690 00:40:38,100 --> 00:40:45,260 Pats vecais, tas pats vecais sīkumi, galamērķis, tas pats vecais, redzams, ka pirms tam. 691 00:40:45,260 --> 00:40:46,910 Nu, tas ir interesanti. 692 00:40:46,910 --> 00:40:51,730 Tātad mēs esam atpakaļ tikai pārbaudot par SDL atmest notikumu. 693 00:40:51,730 --> 00:40:52,460 Kāpēc ir tā, ka? 694 00:40:52,460 --> 00:40:55,110 Tātad jūs varat saņemt peles ievadi no notikumiem. 695 00:40:55,110 --> 00:40:57,670 Tāpat, kad pele pārvietot, jums notikumu par to. 696 00:40:57,670 --> 00:41:00,520 Kad peles poga tiek nospiesta, jūs varat iegūt notikumu par to. 697 00:41:00,520 --> 00:41:05,760 >> Bet tur ir cita, nedaudz vienkāršāka varbūt, API, lai iegūtu peles ievadi. 698 00:41:05,760 --> 00:41:09,500 Un tas ir vienkārši SDL get pele valsts. 699 00:41:09,500 --> 00:41:14,370 Tāpēc man ir int X un y par kursora pozīciju. 700 00:41:14,370 --> 00:41:18,910 Es nodot to SDL_GetMouseState, kas nosaka šos. 701 00:41:18,910 --> 00:41:22,200 Un tas ir pozīcija koordinātu sistēmā no loga. 702 00:41:22,200 --> 00:41:25,520 Tātad, ja masa ir augšējā kreisajā loga, kas būtu 0, 0. 703 00:41:25,520 --> 00:41:28,040 704 00:41:28,040 --> 00:41:33,380 >> Tagad, ko es esmu gatavojas darīt, ir es eju darīt mazliet vektora math. 705 00:41:33,380 --> 00:41:36,910 I bet jūs domāju, ka tu negribēji redzam, ka CS50, bet šeit tas ir. 706 00:41:36,910 --> 00:41:40,720 Es esmu gatavojas darīt kādu vektors math, lai iegūtu vektoru 707 00:41:40,720 --> 00:41:43,840 no attēla kursora. 708 00:41:43,840 --> 00:41:53,280 Un tad kāpēc man ir šī atņemšana šeit? 709 00:41:53,280 --> 00:42:01,350 Nu, ja es tikai izmantot Dest .-- tik Man vajag, lai tulkot peles x 710 00:42:01,350 --> 00:42:05,166 un y ar ½ no platuma un augstums attēla, 711 00:42:05,166 --> 00:42:08,040 jo es gribu centrā attēls, kas iet uz peli, 712 00:42:08,040 --> 00:42:10,160 ne izcelsme attēla. 713 00:42:10,160 --> 00:42:15,650 >> Tātad tas ir tikai, lai pārliecinātos, ka es runāju par attēla centram šeit. 714 00:42:15,650 --> 00:42:19,510 Tad mēs delta x un y, kas ir atšķirība no mērķa 715 00:42:19,510 --> 00:42:23,430 faktiskajam stāvoklim attēla. 716 00:42:23,430 --> 00:42:25,690 Un tad mēs varam iegūt attālums šeit, kas 717 00:42:25,690 --> 00:42:29,140 būs Pitagora teorēma, kvadrātsakne no X 718 00:42:29,140 --> 00:42:32,720 reizes x plus y reizes y. 719 00:42:32,720 --> 00:42:38,400 >> Tagad, lai novērstu nervozēt, un es varu parādīt tu ko tas dara, ja man nav to izdarītu, 720 00:42:38,400 --> 00:42:45,830 ja attālums starp kursora un attēls centrs ir mazāks nekā pieci, 721 00:42:45,830 --> 00:42:48,730 Es esmu tikai nav gatavojas pārvietot attēlu. 722 00:42:48,730 --> 00:42:52,900 Pretējā gadījumā mēs noteikti ātrumu. 723 00:42:52,900 --> 00:42:55,960 Un mēs, kas to tā, ka ātrums vienmēr būs nemainīga. 724 00:42:55,960 --> 00:42:58,770 Un neto rezultāts no visiem šī matemātika ir tas, ka attēla 725 00:42:58,770 --> 00:43:01,660 gatavojas pāriet uz kursora. 726 00:43:01,660 --> 00:43:08,470 >> Tagad, izrādās, ka SDL_GetMouseState, 727 00:43:08,470 --> 00:43:14,490 papildus iestatot x un y argumentus šeit, 728 00:43:14,490 --> 00:43:21,340 tas arī atgriež int, kas atbilst uz stāvokli peles pogas. 729 00:43:21,340 --> 00:43:24,600 Tātad mēs nevaram izlasīt, ka tieši, bet mēs varam 730 00:43:24,600 --> 00:43:29,090 izmantot šos makro, viena Bitu līmeņa uzņēmējs, nav tik biedējošu, 731 00:43:29,090 --> 00:43:30,650 tikai Bitu līmeņa un. 732 00:43:30,650 --> 00:43:38,320 Tātad mēs sakām pogas, kas ir rezultāts Mūsu SDL_GetMouseState, ja tas 733 00:43:38,320 --> 00:43:43,990 un Bitu līmeņa un šis makro šeit, SDL_BUTTON_LEFT. 734 00:43:43,990 --> 00:43:47,680 >> Tātad tas būs vienkārši atrisināt uz bitkarte kas atbilst 735 00:43:47,680 --> 00:43:51,090 uz kreiso peles pogu nospiešanu. 736 00:43:51,090 --> 00:43:55,470 Un tā, ja Bitu līmeņa un notiek, un tas ir 737 00:43:55,470 --> 00:43:59,340 nav nulle, un tas nozīmē, kreisi poga tika nospiesta, 738 00:43:59,340 --> 00:44:04,320 tad mēs patiešām gatavojas noliegt gan x un y ātrumi, 739 00:44:04,320 --> 00:44:06,700 kas tikai padara attēlu Runaway. 740 00:44:06,700 --> 00:44:07,980 Atjaunināt pozīcijas. 741 00:44:07,980 --> 00:44:10,920 Sadursmju atklājumi, to redzējuši viss pirms, padarot, viss labi. 742 00:44:10,920 --> 00:44:11,510 Padarīsim to. 743 00:44:11,510 --> 00:44:14,200 744 00:44:14,200 --> 00:44:16,050 Tātad jums veikt SRCS = hello7_mouse.c. 745 00:44:16,050 --> 00:44:21,720 746 00:44:21,720 --> 00:44:22,220 Liels. 747 00:44:22,220 --> 00:44:23,490 Nav kļūdas. 748 00:44:23,490 --> 00:44:24,900 Un spēle. 749 00:44:24,900 --> 00:44:26,440 >> Tātad, šeit man ir manu peli. 750 00:44:26,440 --> 00:44:29,000 Un attēls ir patiešām pakaļdzīšanās manu peli. 751 00:44:29,000 --> 00:44:33,140 Tagad spēlē jūs veicat, varbūt Tas ir kā ienaidnieka pakaļdzīšanās 752 00:44:33,140 --> 00:44:35,240 jūsu maz raksturs vai neatkarīgi. 753 00:44:35,240 --> 00:44:37,440 Bet šeit mums ir attēls pakaļdzīšanās peli. 754 00:44:37,440 --> 00:44:41,000 Un, kad es noklikšķiniet, peles sākas pakaļdzīšanās attēlu 755 00:44:41,000 --> 00:44:42,860 un attēls ir bēgšana no peli. 756 00:44:42,860 --> 00:44:43,810 Tātad tas ir diezgan forši. 757 00:44:43,810 --> 00:44:47,770 Un paziņojums atkal, tur ir joprojām sadursmes atklāšanas šeit. 758 00:44:47,770 --> 00:44:53,930 >> Tā, ka ir pēdējais maz demo Man ir izveidotas šeit. 759 00:44:53,930 --> 00:44:58,870 Un pieņemsim to apskatīt vēl viena lieta. 760 00:44:58,870 --> 00:45:02,970 Tātad atpakaļ šeit, es minēju šo nervozēt. 761 00:45:02,970 --> 00:45:05,000 Viss kārtībā. 762 00:45:05,000 --> 00:45:12,890 Tātad, ja attālums ir mazāks nekā pieci pikseļi, Es rietot X un Y ātrumu līdz nullei. 763 00:45:12,890 --> 00:45:15,960 Kas notiek, ja mēs atbrīvoties no tā? 764 00:45:15,960 --> 00:45:19,070 Tāpēc es esmu gatavojas vienkārši izdarīt. 765 00:45:19,070 --> 00:45:23,820 766 00:45:23,820 --> 00:45:30,150 Lūdzu, atvainojiet šo šausminošos stilu, bet mēs komentēja out pareizo kodu. 767 00:45:30,150 --> 00:45:38,080 Tāpēc es esmu gatavojas, lai saglabātu to un darīt pats komandu no agrāk, lai padarītu to. 768 00:45:38,080 --> 00:45:38,785 >> Viss kārtībā. 769 00:45:38,785 --> 00:45:39,660 Un tagad, kas notiek? 770 00:45:39,660 --> 00:45:43,260 771 00:45:43,260 --> 00:45:43,760 Labs. 772 00:45:43,760 --> 00:45:45,801 Mēs joprojām seko pele tāpat kā līdz šim, 773 00:45:45,801 --> 00:45:49,310 bet, kad mēs nokļūt peli, mēs esam ieguvuši šo bruto nervozēt. 774 00:45:49,310 --> 00:45:50,320 Kas notiek tur? 775 00:45:50,320 --> 00:45:52,600 Nu, mūsu vektors math, atcerieties, mēs bijām 776 00:45:52,600 --> 00:45:57,540 ņemot vērā attālumu starp kursors un attēla centrā? 777 00:45:57,540 --> 00:46:00,710 Nu, kā tas tuvojas 0, sākam saņemt 778 00:46:00,710 --> 00:46:06,280 patīk šāda veida traks uzvedības ja attēls ir sava veida 779 00:46:06,280 --> 00:46:08,910 tāpat svārstīgas ap kursoru. 780 00:46:08,910 --> 00:46:12,000 Un, kas ir radīt šo nervozēt. 781 00:46:12,000 --> 00:46:13,020 Un tas tiešām neglīts. 782 00:46:13,020 --> 00:46:15,103 Un jūs, iespējams, nav vēlaties, lai jūsu spēles dara, ka, 783 00:46:15,103 --> 00:46:17,350 ja vien tas ir sava īpaša iedarbība veida. 784 00:46:17,350 --> 00:46:21,960 >> Tātad, tāpēc mēs esam tikai šo patvaļīgs 785 00:46:21,960 --> 00:46:27,150 nogriezts no piecām pikseļi, kur mēs sakām ja tas ir piecu pikseļi, mēs esam labi. 786 00:46:27,150 --> 00:46:29,560 Mums nevajag, lai pārvietotu attēlu vairs. 787 00:46:29,560 --> 00:46:32,260 Tātad tas, kas notiek tur. 788 00:46:32,260 --> 00:46:37,390 789 00:46:37,390 --> 00:46:40,870 >> Tātad tas ir diezgan daudz to. 790 00:46:40,870 --> 00:46:44,390 Jūs tagad zināt, kā izveidot logs, slodze attēlu, 791 00:46:44,390 --> 00:46:49,330 zīmēt attēlu uz loga, iegūt tastatūru, iegūt peles ievadi, 792 00:46:49,330 --> 00:46:52,190 tur ir ķekars citu ievade, ka jums nebūs 793 00:46:52,190 --> 00:46:56,070 zināt, kā iegūt, ja jūs vienkārši pavadīt Dažas minūtes skatās dokumentāciju. 794 00:46:56,070 --> 00:46:59,670 Tātad jūs faktiski ir diezgan daži instrumenti jūsu rīcībā tagad 795 00:46:59,670 --> 00:47:01,650 uzrakstīt pilnvērtīgu spēli. 796 00:47:01,650 --> 00:47:05,030 >> Tagad, katru spēli vajadzīgas dažas audio, bet audio dokumentācija 797 00:47:05,030 --> 00:47:06,460 ir arī diezgan labs. 798 00:47:06,460 --> 00:47:09,200 Un es esmu gatavs derēt, ka, ja jūs saprotat visas lietas 799 00:47:09,200 --> 00:47:14,560 mēs runājām par šodien ar attēlus, un virsmas, 800 00:47:14,560 --> 00:47:18,370 logiem, un viss, tad norādītas audio API nav 801 00:47:18,370 --> 00:47:21,170 būs tik slikti. 802 00:47:21,170 --> 00:47:27,420 Tāpēc es ceru redzēt Ko jums izveidot ar SDL. 803 00:47:27,420 --> 00:47:31,595