1 00:00:00,000 --> 00:00:05,069 2 00:00:05,069 --> 00:00:06,110 THOMAS LIVELY: Selvä. 3 00:00:06,110 --> 00:00:07,450 Hei kaikki. 4 00:00:07,450 --> 00:00:08,690 Olen Thomas Lively. 5 00:00:08,690 --> 00:00:15,160 Tämä seminaari tulee olemaan kirjallisesti 2D pelejä C käyttäen SDL. 6 00:00:15,160 --> 00:00:17,970 Joten tiedän, että olet kaikki kysyy, joo, olen todella 7 00:00:17,970 --> 00:00:22,050 haluavat pelata pelejä ja tehdä pelejä, mutta mikä on tämä SDL liiketoiminnan? 8 00:00:22,050 --> 00:00:25,320 Joten SDL on C-kirjasto. 9 00:00:25,320 --> 00:00:28,270 Se tarkoittaa Simple DirectMedia kerros. 10 00:00:28,270 --> 00:00:31,340 Ja se on cross platform, pelin kehityksen kirjasto. 11 00:00:31,340 --> 00:00:37,160 Se toimii Windows, Mac, Linux, jopa iOS ja Android. 12 00:00:37,160 --> 00:00:40,380 Se käsittelee asioita, kuten pääsy äänentoistojärjestelmät 13 00:00:40,380 --> 00:00:44,900 tietokoneen, näppäimistön, ja hiiri, peliohjaimia, jos ne ovat liitettyinä. 14 00:00:44,900 --> 00:00:48,300 Mobiili, se voi jopa tehdä touch tulo ja kaikki tämä. 15 00:00:48,300 --> 00:00:53,030 Ja tietenkin, se käsittelee grafiikkaa, piirustus asioita näytön. 16 00:00:53,030 --> 00:00:56,470 >> Joten se on hyvin laajalti käytetty, vaikka et ehkä ole kuullut sitä ennen. 17 00:00:56,470 --> 00:01:00,860 Se on rakennettu, esimerkiksi, Valven Source-pelimoottori, 18 00:01:00,860 --> 00:01:04,970 joka valtuudet pelejä kuten Portal ja Team Fortress 2. 19 00:01:04,970 --> 00:01:08,680 Se on myös hyvin suuri määrä indie-pelejä, jotka tulevat ulos, 20 00:01:08,680 --> 00:01:13,545 joten olen innoissani mitä kaikki tulee tehdä sen kanssa. 21 00:01:13,545 --> 00:01:20,000 >> Seminaarin tavoitteena on saada sinut vahvistetun kehittyvän kanssa SDL. 22 00:01:20,000 --> 00:01:22,700 Aiomme oppia luoda peli-ikkunan. 23 00:01:22,700 --> 00:01:26,130 Aiomme luoda sprite, jotka ovat kuvia pelin 24 00:01:26,130 --> 00:01:27,744 joka voi liikkua. 25 00:01:27,744 --> 00:01:29,910 Aiomme oppia ja animoida sprite, 26 00:01:29,910 --> 00:01:32,910 joten siirtää niitä, tehdä ne muuttuvat ajan myötä. 27 00:01:32,910 --> 00:01:35,580 Ja aiomme oppia kaapata näppäimistö ja hiiri 28 00:01:35,580 --> 00:01:38,240 tulo tietokoneesta. 29 00:01:38,240 --> 00:01:41,550 Mitä me emme puhu noin tänään on 3D-grafiikka, 30 00:01:41,550 --> 00:01:45,520 koska se on erittäin monimutkainen aihe, että meillä ei ole aikaa. 31 00:01:45,520 --> 00:01:49,010 Emme opi toistaa ääntä meidän pelejä. 32 00:01:49,010 --> 00:01:53,300 Emmekä saa rakentaa mitään mutta Linux. 33 00:01:53,300 --> 00:01:58,330 >> Nyt varoituksista on että, toivottavasti loppuun mennessä seminaarin, 34 00:01:58,330 --> 00:02:01,660 voit olla tyytyväinen SDL asiakirjat, 35 00:02:01,660 --> 00:02:05,370 joten voit mennä selvittää kuinka pelata ääntä itse. 36 00:02:05,370 --> 00:02:12,150 Rakentaa myös Mac- tai PC pitäisi toimia täsmälleen sama kuin rakennuksen Linux, 37 00:02:12,150 --> 00:02:14,700 mutta asennus on menossa olla hieman erilainen. 38 00:02:14,700 --> 00:02:17,700 Joten sinun pitäisi pystyä selvittää miten tehdä näitä asioita 39 00:02:17,700 --> 00:02:20,900 loppuun mennessä päivän seminaarissa. 40 00:02:20,900 --> 00:02:26,980 >> Joten perustettu aiomme käyttää virtuaalikoneen. 41 00:02:26,980 --> 00:02:31,010 Haluamme käyttää CS50 IDE, koska me vain olemaan kirjallisesti C. 42 00:02:31,010 --> 00:02:35,120 Mutta koska IDE ei ole selain, me voi luoda uusia ikkunoita tai näyttö 43 00:02:35,120 --> 00:02:36,410 grafiikka se. 44 00:02:36,410 --> 00:02:38,450 Joten tarvitsemme virtuaalikoneen. 45 00:02:38,450 --> 00:02:47,790 Joten voit seurata ohjeita täällä manual.CS50.net/appliance/15 46 00:02:47,790 --> 00:02:53,290 asentaa virallista CS50 laite, joka on vain Linux virtuaalinen 47 00:02:53,290 --> 00:02:55,110 kone. 48 00:02:55,110 --> 00:02:58,090 >> Ja sitten kun olet että kaikki asetetut up-- se 49 00:02:58,090 --> 00:03:02,090 saattaa kestää hetken, koska erittäin suuri download-- olet menossa 50 00:03:02,090 --> 00:03:07,060 ajaa VM sudo apt-get update. 51 00:03:07,060 --> 00:03:09,410 Ja että todella tapahtuu päivittää kaikki ohjelmistot 52 00:03:09,410 --> 00:03:12,670 paketteja virtuaalikone. 53 00:03:12,670 --> 00:03:20,130 >> Sen jälkeen, olet menossa ajaa sudo apt-get install, libsdl2-2.0-0, 54 00:03:20,130 --> 00:03:27,960 libsdl2-dbg, libsdl2-dev, ja Lisäksi libsdl2-kuva-2,0-0, 55 00:03:27,960 --> 00:03:32,560 libsdl2-image-dbg, ja libsdl2-kuva-dev. 56 00:03:32,560 --> 00:03:33,640 Mitä tämä tekee? 57 00:03:33,640 --> 00:03:38,440 Että ainoastaan ​​asentaa debug tiedot, asiakirjat, otsikot, 58 00:03:38,440 --> 00:03:41,260 ja binaarit kaksi kirjastoja. 59 00:03:41,260 --> 00:03:45,090 Säännöllinen vanha, SDL 2.0, ja toinen kirjasto 60 00:03:45,090 --> 00:03:50,110 nimeltään SDL Image, joka aiomme käyttää 61 00:03:50,110 --> 00:03:54,560 ladata kuvatiedostoja meidän peli. 62 00:03:54,560 --> 00:03:57,860 >> Joten kun sinulla on, että myös että, juuri kun se kysyy, 63 00:03:57,860 --> 00:04:01,100 te vain kirjoittaa kyllä, paina Enter asentaa ne paketit, 64 00:04:01,100 --> 00:04:04,430 ja sinun pitäisi olla hyvä mennä. 65 00:04:04,430 --> 00:04:14,800 Joten saada jakeluun koodin, sinua can-- oi rakas, tämä ei ole päivitetty. 66 00:04:14,800 --> 00:04:18,480 Ellei sinulla ole GitHub account-- jos sinulla on GitHub tili, 67 00:04:18,480 --> 00:04:24,450 voit tehdä tämän Git klooni komento repo 68 00:04:24,450 --> 00:04:30,490 ja että lataa Git Repo kaikki koodi se, 69 00:04:30,490 --> 00:04:31,700 niin että sinulla on koodi. 70 00:04:31,700 --> 00:04:36,470 >> Jos sinulla ei ole GitHub huomioon, mitä pitäisi tehdä, on tyyppi 71 00:04:36,470 --> 00:04:48,867 wgithttps: //github.com/tlively/sdl seminar-- ja tässä se on 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 Joten jälleen, että on täsmälleen sama URL, paitsi se tulee olemaan 75 00:04:59,220 --> 00:05:09,010 tlively / SDL_seminar / master.zip ja käytät wgit ladata että. 76 00:05:09,010 --> 00:05:12,940 Ja sitten voit vain pura että arkisto 77 00:05:12,940 --> 00:05:14,900 ja sitten sinulla on kaikki lähdekoodia. 78 00:05:14,900 --> 00:05:17,580 Niin pahoillani siitä. 79 00:05:17,580 --> 00:05:23,880 Ja sitten koodi myös isännöi klo CS50 seminaarin web-sivun pari 80 00:05:23,880 --> 00:05:25,230 päivää. 81 00:05:25,230 --> 00:05:26,590 >> Selvä. 82 00:05:26,590 --> 00:05:29,932 Miten siis päästä alkuun kirjallisesti oman pelin? 83 00:05:29,932 --> 00:05:31,890 No, ensimmäinen asia aiomme halua tehdä 84 00:05:31,890 --> 00:05:34,740 on tarkastella SDL asiakirjat. 85 00:05:34,740 --> 00:05:37,020 Joten tässä on VM. 86 00:05:37,020 --> 00:05:38,720 Ja tässä on web-sivun. 87 00:05:38,720 --> 00:05:40,340 Olen suunnistaa elää libsdl.org. 88 00:05:40,340 --> 00:05:43,110 89 00:05:43,110 --> 00:05:48,140 Mitä aion tehdä tässä mennä yli sivupalkkiin, kohtaan Documentation, 90 00:05:48,140 --> 00:05:51,040 ja klikkaa wikissä. 91 00:05:51,040 --> 00:05:56,870 Tämä tuo minut wiki että on suurin osa dokumentaatiosta SDL. 92 00:05:56,870 --> 00:06:01,360 Päälleni sivupalkissa täällä, olemme menossa klikkaa API luokittain, 93 00:06:01,360 --> 00:06:04,300 koska aikoo antaa meille mukava kategorinen näkymä 94 00:06:04,300 --> 00:06:07,770 Koko API SDL. 95 00:06:07,770 --> 00:06:12,390 >> Niinpä esimerkiksi, meillä on perus alustuksen 96 00:06:12,390 --> 00:06:18,380 ja sammuttaa, kaikki eräänlainen hallinnolliset tavaraa käyttäen SDL, 97 00:06:18,380 --> 00:06:21,630 ja sitten meillä on osio näytetään asioita näytön. 98 00:06:21,630 --> 00:06:23,000 Se on video. 99 00:06:23,000 --> 00:06:25,790 Input tapahtumia, se on saada panosta näppäimistö, 100 00:06:25,790 --> 00:06:29,710 saada panosta hiiren, ja ohjainta, jos sinulla on se vielä. 101 00:06:29,710 --> 00:06:32,901 Ei force feedback asioita kuten peliohjaimet, joka 102 00:06:32,901 --> 00:06:34,150 emme aio puhua. 103 00:06:34,150 --> 00:06:35,630 Ja tässä on ääni. 104 00:06:35,630 --> 00:06:38,940 Ja sitten on joukko muita tavaraa, että SDL voi tehdä sinulle. 105 00:06:38,940 --> 00:06:43,830 >> Mutta tänään aiomme keskittyä on alustus täällä, 106 00:06:43,830 --> 00:06:48,332 näytetään kuvat video jakso, ja käsittely Syöttö tapahtumia. 107 00:06:48,332 --> 00:06:50,290 Joten nämä ovat tärkeimmät osat dokumentointi 108 00:06:50,290 --> 00:06:53,050 että sinun pitäisi murehtia. 109 00:06:53,050 --> 00:06:57,170 Just for fun, jos menemme yli täällä ja klikkaa API nimen, 110 00:06:57,170 --> 00:07:04,350 voimme nähdä lista jokaisesta yksittäinen asia SDL kirjastossa. 111 00:07:04,350 --> 00:07:11,330 Joten kaikki nämä toiminnot, laskentatulosten, rakenteet, hullu määrä tavaraa, 112 00:07:11,330 --> 00:07:12,820 Aakkosjärjestys. 113 00:07:12,820 --> 00:07:14,580 Ja selvästi, kunnes tiedät olet tekemässä, 114 00:07:14,580 --> 00:07:19,100 tämä ei tule olemaan liian hyödyllinen, minkä vuoksi emme API luokittain. 115 00:07:19,100 --> 00:07:20,810 >> Joten pääset alkuun. 116 00:07:20,810 --> 00:07:25,680 Toivottavasti olet jo ladattu jakelu koodi. 117 00:07:25,680 --> 00:07:30,070 Ja niin mitä voit tehdä on, oikea täällä CS50 laite, 118 00:07:30,070 --> 00:07:31,150 avaa terminaali. 119 00:07:31,150 --> 00:07:33,750 120 00:07:33,750 --> 00:07:34,440 No niin. 121 00:07:34,440 --> 00:07:40,740 Joten olen jo ladannut jakelu koodin Zip 122 00:07:40,740 --> 00:07:41,690 menetelmä. 123 00:07:41,690 --> 00:07:43,140 Ja olen purettu sen. 124 00:07:43,140 --> 00:07:46,120 Joten tässä se on SDL seminaarissa mestari. 125 00:07:46,120 --> 00:07:49,750 Joten aion mennä tuohon hakemistoon. 126 00:07:49,750 --> 00:07:55,310 Ja mitä näemme tässä että meillä on seitsemän C-tiedostoja. 127 00:07:55,310 --> 00:07:58,070 Ja tämä tulee koodi aiomme katsot tänään. 128 00:07:58,070 --> 00:08:00,040 Meillä makefile. 129 00:08:00,040 --> 00:08:06,950 Ja meillä on resursseja hakemistoon, joka yksinkertaisesti on kuva 130 00:08:06,950 --> 00:08:09,070 että sinun näkemään pian riitä. 131 00:08:09,070 --> 00:08:16,060 >> Joten avata nämä tiedostot käyttämällä G-Muokkaa editori. 132 00:08:16,060 --> 00:08:22,000 Joten en halua avata kaikki tiedostot alkaa hei ja päättyvät .c. 133 00:08:22,000 --> 00:08:23,380 No niin. 134 00:08:23,380 --> 00:08:28,180 Niin, että pieni ikkuna, joten olemme aikoo yrittää tehdä, että isompi. 135 00:08:28,180 --> 00:08:28,900 Ei, se meni pois. 136 00:08:28,900 --> 00:08:32,836 137 00:08:32,836 --> 00:08:34,570 >> Selvä. 138 00:08:34,570 --> 00:08:37,959 Joten tässä on ensimmäinen tiedosto olemme menossa katsomaan. 139 00:08:37,959 --> 00:08:39,000 Sitä kutsutaan hello1_sdl.c. 140 00:08:39,000 --> 00:08:41,890 141 00:08:41,890 --> 00:08:47,980 Ja kaikki tämä tekee on alustaa SDL kirjasto jotta voimme alkaa käyttää sitä. 142 00:08:47,980 --> 00:08:51,550 Mistä tiedät tulla kanssa tämän koodin itse? 143 00:08:51,550 --> 00:08:53,850 No, jos katsomme yli klo asiakirjat 144 00:08:53,850 --> 00:08:58,040 ja menemme alustuksen ja sammuttaa osiosta, 145 00:08:58,040 --> 00:09:02,230 se tulee meille kaikki miten alustaa SDL. 146 00:09:02,230 --> 00:09:06,630 Joten ehdottomasti lukea tämän joskus toiste. 147 00:09:06,630 --> 00:09:09,230 Se tulee kertoa teille kaikille mitä täällä tapahtuu. 148 00:09:09,230 --> 00:09:14,360 Mutta tärkein asian ydin on, että Meidän täytyy soittaa tätä toimintoa SDL In It 149 00:09:14,360 --> 00:09:18,910 ja siirtää se millaisia ​​asioita haluamme kirjaston alustaa. 150 00:09:18,910 --> 00:09:23,620 Joten meidän tapauksessamme, me vain menossa alustaa videon nyt, 151 00:09:23,620 --> 00:09:26,690 jotta voimme alkaa näyttää kuvia. 152 00:09:26,690 --> 00:09:32,370 >> Täällä, voit nähdä, jos me klikkaa SDL siinä, me 153 00:09:32,370 --> 00:09:36,160 voi saada vielä enemmän tietoa, mukaan lukien paluu arvo. 154 00:09:36,160 --> 00:09:39,050 Näemme siis täällä, että se returnes nolla menestykseen. 155 00:09:39,050 --> 00:09:43,320 Joten meidän koodi, aiomme nähdä, jos se ei palaa nollaan, 156 00:09:43,320 --> 00:09:47,020 ja jos se ei palauta nolla, joten se ei onnistunut, 157 00:09:47,020 --> 00:09:50,650 sitten aiomme yksinkertaisesti tulosta virhe tällä muu toiminto, 158 00:09:50,650 --> 00:09:56,260 SDL get virhe, joka palauttaa merkkijonon kuvataan virhe, joka tapahtui. 159 00:09:56,260 --> 00:09:58,510 Aiomme tulostaa että virhe ja sitten olemme vain 160 00:09:58,510 --> 00:10:02,270 menossa poistua ohjelmasta virhekoodi. 161 00:10:02,270 --> 00:10:06,470 >> Sitten toinen asia, että me tarvitsemme tehdä on, ennen ohjelma loppuu, 162 00:10:06,470 --> 00:10:10,830 jos me onnistuneesti alustettu SDL, meidän täytyy vain kutsua sitä SDL lopettaa. 163 00:10:10,830 --> 00:10:15,750 Ja että menee käsitellä puhdistamisesta kaikki SDL: n sisäisten resurssien meille. 164 00:10:15,750 --> 00:10:21,240 Joten asiakirjat there-- uudelleen, täällä olemme alustuksen 165 00:10:21,240 --> 00:10:23,640 ja sammuttaa osiosta dokumentaation. 166 00:10:23,640 --> 00:10:26,680 Voit klikkaa toiminto tässä, SDL lopettaa, 167 00:10:26,680 --> 00:10:28,700 ja voit lukea kaikki siitä samoin. 168 00:10:28,700 --> 00:10:31,400 Ja monet näistä toiminto dokumentointi sivut 169 00:10:31,400 --> 00:10:35,630 on esimerkki koodia, joten tämä on erittäin hyvä voimavara. 170 00:10:35,630 --> 00:10:39,610 Ehdottomasti viettää aikaa luet osaa tässä wikissä 171 00:10:39,610 --> 00:10:42,520 jos aiot tehdä tätä hanketta. 172 00:10:42,520 --> 00:10:43,760 >> Selvä. 173 00:10:43,760 --> 00:10:46,590 Niin, että meidän koko ohjelma. 174 00:10:46,590 --> 00:10:53,935 Mitä voimme tehdä nyt is-- olen menossa avata makefile täällä, 175 00:10:53,935 --> 00:10:56,150 joten aion ottaa katsokaa miten se toimii. 176 00:10:56,150 --> 00:10:59,500 Ja se on hyvin yksinkertainen makefile, samanlainen kuin mitä olet nähnyt ennen. 177 00:10:59,500 --> 00:11:04,010 Yksi tärkeimmistä eroista on se, täällä, tämä 178 00:11:04,010 --> 00:11:07,870 aikoo lisätä tulosta käynnissä tämän komennon, joka olet jo 179 00:11:07,870 --> 00:11:10,850 asentaa, jos olet asentanut SDL. 180 00:11:10,850 --> 00:11:13,230 Ja tämä on käsky että menee tuottaa 181 00:11:13,230 --> 00:11:16,710 ylimääräistä lippuja kääntäjä. 182 00:11:16,710 --> 00:11:22,050 >> Lisäksi, että me jolloin se kaikki tavanomaiset komennot, sekä 183 00:11:22,050 --> 00:11:23,430 nämä kaksi komentoa. 184 00:11:23,430 --> 00:11:30,270 Joten -lsdl2-kuva kahvat linkitys SDL kuvakirjaston. 185 00:11:30,270 --> 00:11:36,200 Ja -lm todella käsittelee linkittäminen standardin C matematiikka kirjasto. 186 00:11:36,200 --> 00:11:40,630 Joten emme aio tarvitse ne kaikille meidän C-tiedostoja, 187 00:11:40,630 --> 00:11:43,900 mutta me vain laittaa ne, jotta voimme käyttää samaa makefile kaikesta 188 00:11:43,900 --> 00:11:44,816 ilman muutoksia. 189 00:11:44,816 --> 00:11:46,970 190 00:11:46,970 --> 00:11:50,080 >> Yli täällä lähteistä, tämä on silloin olisit 191 00:11:50,080 --> 00:11:53,680 laittaa tiedostot olivat menossa koota projektin. 192 00:11:53,680 --> 00:11:57,570 Mutta koska jokainen minun C tiedostoja tässä on päätehtävä, 193 00:11:57,570 --> 00:12:00,000 se tulee hämmentyä jos panemme ne kaikki. 194 00:12:00,000 --> 00:12:06,930 Joten aion vain sanoa, nyt, hello1_sdl.c, 195 00:12:06,930 --> 00:12:11,150 joka on yksi me vain katsoi. 196 00:12:11,150 --> 00:12:18,740 Joten jos menen takaisin yli täällä, voin tehdä tehdä. 197 00:12:18,740 --> 00:12:22,160 Ja mitä se teki onko se vain koottu että ensimmäinen tiedosto. 198 00:12:22,160 --> 00:12:28,780 Ja sitten voimme kirjoittaa ./game, koska se on suoritettava se tuotti. 199 00:12:28,780 --> 00:12:31,660 Ja kaikki se teki oli tulosta alustus onnistunut. 200 00:12:31,660 --> 00:12:33,300 Joten teimme jotain oikein. 201 00:12:33,300 --> 00:12:36,200 Mutta se oli aika tylsää, koska emme näe ikkuna, 202 00:12:36,200 --> 00:12:37,900 mitään ei liikkuminen. 203 00:12:37,900 --> 00:12:41,030 >> Niin suuri, saimme SDL alustettu. 204 00:12:41,030 --> 00:12:43,520 Nyt, siirtyä jotain hieman mielenkiintoisemman. 205 00:12:43,520 --> 00:12:54,700 Joten tässä meillä on hello2_window.c, ja tämä tulee olemaan hieman 206 00:12:54,700 --> 00:13:00,010 monimutkainen C-ohjelma, joka alustaa SDL aivan kuten ennenkin, 207 00:13:00,010 --> 00:13:04,250 paitsi nyt olemme myös menossa alustaa SDL ajastin. 208 00:13:04,250 --> 00:13:07,720 Ja tämä tulee olkaamme pääsyn sisäinen ajastin 209 00:13:07,720 --> 00:13:10,550 ja käyttö liittyvät toiminnot ajoin. 210 00:13:10,550 --> 00:13:11,920 >> Ja sitten Katsotaanpa täällä. 211 00:13:11,920 --> 00:13:16,840 Mitä me teemme on meillä on tämä osoitin että SDL ikkunaan struct, joka 212 00:13:16,840 --> 00:13:21,160 aiotaan luoda tällä puhelu toiminnon, SDL luoda ikkuna. 213 00:13:21,160 --> 00:13:25,380 Nyt, tämä vie paljon argumentteja, niin mennään katsomaan asiakirjat. 214 00:13:25,380 --> 00:13:27,930 Joten jälleen, aion API luokan, olen 215 00:13:27,930 --> 00:13:33,820 menee alas video täällä, ja ensimmäinen jakso, näytetään ikkunoiden hallinta. 216 00:13:33,820 --> 00:13:36,470 Joten tämä jakso on tonni tavaraa siinä, 217 00:13:36,470 --> 00:13:39,970 mutta jos katsotte kautta Näiden toimintojen, luultavasti 218 00:13:39,970 --> 00:13:43,620 nähdä, että luultavasti yksi me haluavat kutsutaan SDL luoda ikkuna, 219 00:13:43,620 --> 00:13:46,600 joka sattuu olemaan oikeassa yläreunassa. 220 00:13:46,600 --> 00:13:49,080 >> Ja niin tämä on asiakirjat tätä toimintoa. 221 00:13:49,080 --> 00:13:53,710 Ikkuna tulee olla otsikko, X- ja Y-ruudulla, 222 00:13:53,710 --> 00:13:56,960 se tulee leveys, korkeus, ja sitten se tulee ottaa joitakin lippuja. 223 00:13:56,960 --> 00:14:01,220 Nyt, emme oikeastaan ​​välitä tahansa näistä lippuja juuri nyt, 224 00:14:01,220 --> 00:14:04,560 mutta jos halusi tehdä jotain kuin tehdä koko näytön ikkuna, 225 00:14:04,560 --> 00:14:07,920 voit vilkaista joka. 226 00:14:07,920 --> 00:14:13,190 Nyt olemme juuri menossa käyttää näitä erityisiä arvoja, 227 00:14:13,190 --> 00:14:18,775 SDL ikkuna plus keskitetty x ja y järjestyksessä 228 00:14:18,775 --> 00:14:21,800 vain luoda ikkuna keskellä meidän näytön. 229 00:14:21,800 --> 00:14:24,370 >> Niin, että mitä se on tekemässä. 230 00:14:24,370 --> 00:14:27,960 Ja jos ikkuna sattuu olemaan null, eli on virhe, 231 00:14:27,960 --> 00:14:32,570 sitten taas me juuri menossa tulostaa virhe käyttäen SDL GET virhe. 232 00:14:32,570 --> 00:14:36,570 Ja sitten koska me alustettu SDL, meidän on nyt sulje se. 233 00:14:36,570 --> 00:14:40,900 Joten me kutsumme SDL lopettaa ennen palaavat yksi tärkeimmistä. 234 00:14:40,900 --> 00:14:42,905 >> Joten meillä on tämä ikkuna auki toivottavasti. 235 00:14:42,905 --> 00:14:44,613 Ja mitä me aiomme tarvitsee vain aiomme 236 00:14:44,613 --> 00:14:50,340 soittaa SDL 5000 millisekuntia, joka on sama kuin viisi sekuntia. 237 00:14:50,340 --> 00:14:55,640 Ja kun olemme tehneet, että se tulee tuhota ikkunaan, 238 00:14:55,640 --> 00:14:59,470 siivota SDL kirjasto, ja poistua ohjelmasta. 239 00:14:59,470 --> 00:15:05,240 Joten mene eteenpäin ja antaa että laukaus. 240 00:15:05,240 --> 00:15:08,660 >> Joten nyt muuttamisen sijasta makefile joka kerta, 241 00:15:08,660 --> 00:15:12,180 Voin yksinkertaisesti tehdä, ja sitten komentorivillä, 242 00:15:12,180 --> 00:15:16,090 sanovat lähteistä equals ja sitten tiedosto olemme kokoamiseen. 243 00:15:16,090 --> 00:15:17,090 Joten se on hello2_window.c. 244 00:15:17,090 --> 00:15:21,390 245 00:15:21,390 --> 00:15:21,890 Fantastinen. 246 00:15:21,890 --> 00:15:22,970 Ei erros. 247 00:15:22,970 --> 00:15:26,085 Nyt, jos hoidamme suoritettavan, näemme tämän ikkunan. 248 00:15:26,085 --> 00:15:27,960 Nyt on olemassa muutamia ongelmia ikkuna. 249 00:15:27,960 --> 00:15:32,820 Voimme siirtää sen ympärillä, mutta se on Tätä taustaa roskaa sisälle. 250 00:15:32,820 --> 00:15:34,660 Joten emme ole laadittu mitään, ja niin se on 251 00:15:34,660 --> 00:15:38,210 aivan täynnä roskaa, joka on melko paljon, mitä odotamme. 252 00:15:38,210 --> 00:15:41,010 >> Lisäksi emme voi sulkea ikkunan. 253 00:15:41,010 --> 00:15:44,780 Olen painamalla tätä X kulma ja mitään tapahtuu. 254 00:15:44,780 --> 00:15:47,840 Joten näemme, miten korjata että vähän. 255 00:15:47,840 --> 00:15:51,750 Joten kiinnitä osa, jossa ikkuna on täynnä roskaa ensin. 256 00:15:51,750 --> 00:16:00,850 Joten jos menemme yli hello3_image.c, mitä voimme nähdä on, että olemme lisänneet muutamia 257 00:16:00,850 --> 00:16:03,360 enemmän asioita täällä. 258 00:16:03,360 --> 00:16:08,740 Olemme lisänneet tämän uuden otsikon tiedosto saada ajastintoiminnot. 259 00:16:08,740 --> 00:16:11,490 Oletan teimme että viimeisinä yksi, liian, ja en maininnut sitä. 260 00:16:11,490 --> 00:16:13,550 Mutta nyt, koska olemme kanssa kuvia, 261 00:16:13,550 --> 00:16:18,720 meidän täytyy sisällyttää SDL kuva otsikkotiedoston samoin. 262 00:16:18,720 --> 00:16:22,087 Joten se on sama asia kuin ennen, alustetaan SDL täällä, 263 00:16:22,087 --> 00:16:23,420 Sama käsitellä luoda ikkunat. 264 00:16:23,420 --> 00:16:25,380 Olemme nähneet, että ennen nyt. 265 00:16:25,380 --> 00:16:29,870 >> Nyt meidän täytyy luoda jotain kutsutaan renderer, joka tavallaan kulkee 266 00:16:29,870 --> 00:16:30,800 ikkuna. 267 00:16:30,800 --> 00:16:33,860 Mutta se on eräänlainen abstrakti esine, joka on 268 00:16:33,860 --> 00:16:37,370 vastuussa tehnyt kaikki nämä piirustus toimintaansa ikkunaan. 269 00:16:37,370 --> 00:16:41,580 Ja se todella vastaa ja ohjelma ladataan 270 00:16:41,580 --> 00:16:47,880 osaksi grafiikka laitteistosta tietokoneen tai puhelimen tai mitä tahansa. 271 00:16:47,880 --> 00:16:51,005 Joten liput haluamme kulkea it-- ja voit katsoa asiakirjat 272 00:16:51,005 --> 00:16:56,160 saada tarkemmin here-- menossa on SDL renderöinti nopeutettava, joka 273 00:16:56,160 --> 00:16:58,550 tarkoittaa se tulee olemaan käyttämällä grafiikkalaitteistoa 274 00:16:58,550 --> 00:17:01,490 eikä vain emuloidun ohjelmisto. 275 00:17:01,490 --> 00:17:07,390 >> Ja aiomme käyttää SDL Renderer PRESENTVSYNC. 276 00:17:07,390 --> 00:17:12,280 VSYNC on asia, joka yksinkertaisesti tekee grafiikka näyttää paremmalta ja estää 277 00:17:12,280 --> 00:17:14,970 tämä asia sanottu näyttö kauhua, jossa puolet 278 00:17:14,970 --> 00:17:17,720 yhden kehyksen ja puolet seuraavan runko saada piirretty samanaikaisesti 279 00:17:17,720 --> 00:17:20,056 ja se näyttää kamalalta. 280 00:17:20,056 --> 00:17:23,130 Mutta taas, voit mennä lukemaan siitä itse. 281 00:17:23,130 --> 00:17:24,319 >> Joten meillä on joitakin lippuja täällä. 282 00:17:24,319 --> 00:17:27,810 Ja niin me juuri menossa soittaa tämä toiminto SDL luoda renderöijä. 283 00:17:27,810 --> 00:17:31,340 Me aiomme antaa sille ikkuna yhdistävän tähän renderöijä. 284 00:17:31,340 --> 00:17:34,520 Negatiivinen tarkoittaa emme välitä mitä grafiikka kuljettaja aiomme käyttää. 285 00:17:34,520 --> 00:17:36,603 Niin että olisi aika paljon aina negatiivinen, 286 00:17:36,603 --> 00:17:39,010 ellei tiedät näytönohjaimen ajurit. 287 00:17:39,010 --> 00:17:41,650 Ja sitten me vain menossa siirtää se meidän lippuja. 288 00:17:41,650 --> 00:17:47,240 Joten jos joka palauttaa null, niin olemme painoon virhe kuten tavallista, 289 00:17:47,240 --> 00:17:49,550 mutta sitten olemme myös menossa tuhota ikkunaan 290 00:17:49,550 --> 00:17:54,970 siivota näitä varoja ennen kutsuvan SDL lopettaa ja palaa. 291 00:17:54,970 --> 00:17:58,110 >> Nyt, mielenkiintoinen osa täällä on jossa kuorma meidän kuva 292 00:17:58,110 --> 00:18:00,870 Tällä toiminnolla IMG_load. 293 00:18:00,870 --> 00:18:04,050 Tämä on ainoa funktio aiomme käyttää alkaen SDL kuvan kirjastosta. 294 00:18:04,050 --> 00:18:05,480 Se on ainoa mitä tarvitsemme. 295 00:18:05,480 --> 00:18:12,950 Se on toiminto, joka vie merkkijono että on polku tahansa kuvan resurssi. 296 00:18:12,950 --> 00:18:18,024 Ja se voi olla .png, GIF, bittikartta, mitään näistä asioista. 297 00:18:18,024 --> 00:18:19,690 Ja siksi tämä toiminto on niin mukavaa. 298 00:18:19,690 --> 00:18:22,560 Se pystyy käsittelemään melko paljon tahansa muodossa. 299 00:18:22,560 --> 00:18:27,240 Lataa sen muistiin ja tallentaa sen koska asia sanottu SDL pinta. 300 00:18:27,240 --> 00:18:34,660 >> Nyt SDL pinta on vain struct joka edustaa kuvadatan muistiin. 301 00:18:34,660 --> 00:18:38,054 Joten voit lukea lisää että asiakirjoissa kaksi. 302 00:18:38,054 --> 00:18:40,720 Ja jos tämä virheitä, niin olemme aikoo tehdä koko juttu missä 303 00:18:40,720 --> 00:18:44,480 me painamme virhe, sulkea resursseja, ja sitten sulje ohjelma. 304 00:18:44,480 --> 00:18:48,970 Nyt mielenkiintoinen asia on, ennen voimme tehdä tämän kuvan ikkunan, 305 00:18:48,970 --> 00:18:51,390 meidän on todella tehdä sen rakenne. 306 00:18:51,390 --> 00:18:54,460 Nyt rakenne vastaa kuvatietokantojen ladattu 307 00:18:54,460 --> 00:18:57,820 osaksi graafisen laitteiston muistiin. 308 00:18:57,820 --> 00:19:00,720 >> Joten pinta on tärkein muisti, säännöllinen muisti 309 00:19:00,720 --> 00:19:05,550 että olemme käyttäneet kaikki lukukauden, ja rakenne on tässä erillisessä VRAM 310 00:19:05,550 --> 00:19:09,410 muisti että näytönohjain valvontaa. 311 00:19:09,410 --> 00:19:13,170 Joten me kutsumme tätä toimintoa SDL_CreateTextureFromSurface. 312 00:19:13,170 --> 00:19:17,104 Annamme sille meidän renderöijä ja meidän pinta. 313 00:19:17,104 --> 00:19:19,020 Ja sitten me olemme todella tehdään pinta, 314 00:19:19,020 --> 00:19:20,311 joten me vain aio vapauttaa sitä. 315 00:19:20,311 --> 00:19:22,210 Emme tarvitse sitä enää. 316 00:19:22,210 --> 00:19:26,650 Ja sitten joten jos tämä puhelu errored ja palasi null, 317 00:19:26,650 --> 00:19:29,630 sitten aiomme tehdä koko virheraportoinnin asia uudelleen. 318 00:19:29,630 --> 00:19:30,920 >> Selvä. 319 00:19:30,920 --> 00:19:34,810 Täällä me ajautua Varsinainen mallinnus toimintoja. 320 00:19:34,810 --> 00:19:37,730 Niin soittamalla SDL_RenderClear ja kulkee sen 321 00:19:37,730 --> 00:19:42,550 renderer liittyy meidän ikkuna yksinkertaisesti tekee ikkunan pimenee. 322 00:19:42,550 --> 00:19:47,650 Niin se poistaa roskaa että näimme meidän ikkunasta ennen ja tekee musta. 323 00:19:47,650 --> 00:19:50,750 Ja sitten me aiomme soittaa SDL_RenderCopy, 324 00:19:50,750 --> 00:19:53,010 antoivat meidän renderer, meidän rakenne. 325 00:19:53,010 --> 00:19:55,800 Ja me puhumme mitä nämä kentät ovat hieman. 326 00:19:55,800 --> 00:19:57,830 Mutta se on menossa ottaa rakenne tiedot 327 00:19:57,830 --> 00:20:03,100 ja kopioi se päälle meidän ikkuna piirtää kuvan. 328 00:20:03,100 --> 00:20:07,020 Niin sen jälkeen olemme tehneet tämän kopio tietojen siirtämistä meidän ikkunasta, 329 00:20:07,020 --> 00:20:11,180 meidän on tehtävä tämän lisätoiminnon nimeltään SDL_RenderPresent. 330 00:20:11,180 --> 00:20:15,360 >> Ja tämä on mielenkiintoinen koska tämä saa 331 00:20:15,360 --> 00:20:18,770 osaksi aihe nimeltään kaksinkertainen puskurointi. 332 00:20:18,770 --> 00:20:24,380 Joten kaksinkertainen puskurointi on tekniikka, joka tekee grafiikka näyttää paljon paremmalta. 333 00:20:24,380 --> 00:20:28,240 Jälleen se estää, että näytön repiminen Puhuin aikaisemmin, jos 334 00:20:28,240 --> 00:20:29,590 sinulla on kaksi puskurit. 335 00:20:29,590 --> 00:20:32,260 On takaisin puskuriin muisti ja edessä puskurin. 336 00:20:32,260 --> 00:20:36,410 Edessä puskuri on kirjaimellisesti mitä ruudulla tällä hetkellä. 337 00:20:36,410 --> 00:20:42,070 Joten me kaikki nämä piirtää muunnelmia, kuten SDL tehdä kopio tai SDL_RenderClear 338 00:20:42,070 --> 00:20:43,080 takaisin puskuriin. 339 00:20:43,080 --> 00:20:44,800 Joten he muuttavat asioita takana puskuriin. 340 00:20:44,800 --> 00:20:48,970 Tässä voisimme olla piirros tämä vihreä neliö takaisin puskuriin. 341 00:20:48,970 --> 00:20:52,300 >> Joten sitten kun olemme tehneet tekemässä meidän tehdä toimintaa, joka 342 00:20:52,300 --> 00:20:55,700 saattaa kestää todella kauan aika, mitä aiomme tehdä 343 00:20:55,700 --> 00:20:57,860 on vaihtaa puskureita. 344 00:20:57,860 --> 00:21:00,720 Joten se kirjaimellisesti vie vain edessä puskurin ja takaisin puskuri 345 00:21:00,720 --> 00:21:02,990 ja kytkee sen, niin että, välittömästi, 346 00:21:02,990 --> 00:21:06,630 yhdellä kertaa, eikä ehkä satoja tai tuhansia, 347 00:21:06,630 --> 00:21:10,910 kaikki hiljattain sulatettu esineet ovat näytössä. 348 00:21:10,910 --> 00:21:13,160 Ja tämä estää asiat kuten näytön virkistävä 349 00:21:13,160 --> 00:21:16,710 kun olemme vain vetää puoli meidän esineitä kehyksen. 350 00:21:16,710 --> 00:21:21,280 Joten siksi meidän täytyy soittaa SDL_RenderPresent, samoin 351 00:21:21,280 --> 00:21:23,320 kuten SDL_RenderCopy. 352 00:21:23,320 --> 00:21:25,749 >> Jälleen olemme juuri menossa odottamaan viisi sekuntia. 353 00:21:25,749 --> 00:21:27,540 Sitten aiomme siivota resurssimme. 354 00:21:27,540 --> 00:21:29,540 Meillä melkoisesti enemmän tällä kertaa. 355 00:21:29,540 --> 00:21:31,750 Ja sitten me vain menossa poistua ohjelmasta. 356 00:21:31,750 --> 00:21:35,350 Joten tehdä. 357 00:21:35,350 --> 00:21:41,880 Aion kirjoittaa merkki, ja sitten lähteet on yhtä suuri kuin hello-- tämä on nyt 3image.c. 358 00:21:41,880 --> 00:21:49,632 359 00:21:49,632 --> 00:21:52,240 Hyvä, että koottu virheittä. 360 00:21:52,240 --> 00:21:57,210 Ja näet tästä Olen nyt venytettyä kuvaani, Hei, CS50! 361 00:21:57,210 --> 00:22:00,560 meidän ikkuna, joka katoaa viiden sekunnin kuluttua. 362 00:22:00,560 --> 00:22:02,090 >> Nyt, tämä on edelleen ongelmia, eikö? 363 00:22:02,090 --> 00:22:05,750 Tämä ei ole hyvä sovellus, koska kun yritän sulkea ikkunan, 364 00:22:05,750 --> 00:22:06,500 mitään ei tapahdu. 365 00:22:06,500 --> 00:22:09,540 Että x ei ole vielä reagoi. 366 00:22:09,540 --> 00:22:17,420 Joten katsomaan seuraava tiedosto, hello4animation. 367 00:22:17,420 --> 00:22:21,850 Joten tämä on tiedosto että menee käyttöön 368 00:22:21,850 --> 00:22:25,124 liikkuvat ja liike meidän kuva. 369 00:22:25,124 --> 00:22:27,040 Joten aiomme tehdä sama asia kuin ennen, 370 00:22:27,040 --> 00:22:30,190 aloittaa SDL, luoda ikkuna, luoda renderer, 371 00:22:30,190 --> 00:22:33,030 ladata kuvan muisti, luoda rakenne. 372 00:22:33,030 --> 00:22:35,090 Olemme nähneet kaiken tuon ennen. 373 00:22:35,090 --> 00:22:36,770 Nyt, tämä on uusi. 374 00:22:36,770 --> 00:22:42,305 Aiomme on rakennetta kutsutaan SDL RECT, joka on vain suorakulmio. 375 00:22:42,305 --> 00:22:49,950 Jos menemme tänne, voimme ei etsi SDL RECT, 376 00:22:49,950 --> 00:22:54,040 ja voit nähdä sen hyvin yksinkertainen rakenne. 377 00:22:54,040 --> 00:22:56,760 Se on x, y asema, ja se 378 00:22:56,760 --> 00:23:02,080 on leveys ja korkeus koko suorakulmion. 379 00:23:02,080 --> 00:23:07,785 >> Joten mitä aiomme tehdä, on olemme aikoo määritellä tämän SDL RECT DEST, 380 00:23:07,785 --> 00:23:09,480 KOHDE. 381 00:23:09,480 --> 00:23:14,130 Ja tämä on paikka ruudulla missä 382 00:23:14,130 --> 00:23:16,005 aiomme olla piirros meidän kuva, oikea niin 383 00:23:16,005 --> 00:23:17,880 jos aiomme olla liikkuva kuva ympäri, 384 00:23:17,880 --> 00:23:20,300 sitten määränpäähän, jossa aiomme tehdä kuva 385 00:23:20,300 --> 00:23:22,620 on liikkuminen. 386 00:23:22,620 --> 00:23:24,910 Joten aiomme kutsua tätä toiminto SDL_QueryTexture. 387 00:23:24,910 --> 00:23:27,550 388 00:23:27,550 --> 00:23:33,500 Ja huomaa olen ohimennen osoite ja dest.w, joka on leveys, 389 00:23:33,500 --> 00:23:36,950 ja dest.h, joka on korkeus. 390 00:23:36,950 --> 00:23:40,425 Ja niin SDL_QueryTexture on menossa tallentaa näillä aloilla leveys 391 00:23:40,425 --> 00:23:41,675 ja korkeus meidän rakenne. 392 00:23:41,675 --> 00:23:44,680 393 00:23:44,680 --> 00:23:47,030 >> Ja sitten mitä aion tehdä, on Aion 394 00:23:47,030 --> 00:23:55,580 asettaa dest.x olemaan ikkunaan leveys miinus dest.w, joka on 395 00:23:55,580 --> 00:23:59,000 leveys kuvahahmon, jaettuna 2. 396 00:23:59,000 --> 00:24:03,860 Ja tämä tulee asettaa sen niin että kuva on täysin keskitetty 397 00:24:03,860 --> 00:24:06,780 meidän ikkunassa, okei? 398 00:24:06,780 --> 00:24:08,652 Joten nyt minulla on y asema. 399 00:24:08,652 --> 00:24:10,360 Ja tämä tulee olla muuttuja, joka on 400 00:24:10,360 --> 00:24:16,390 muuttuvat, koska aiomme olla liikkuvan kuvan y-suunnassa. 401 00:24:16,390 --> 00:24:19,050 Ja nyt meillä on jotain kutsutaan animaatio silmukka. 402 00:24:19,050 --> 00:24:21,180 >> Joten miten animaatio toimii? 403 00:24:21,180 --> 00:24:27,630 No, ihmisen silmä voi havaita 12 erillistä kuvia joka toinen, okei? 404 00:24:27,630 --> 00:24:33,060 Joten jos vilkkua 12 kuvaa korttia minua toisessa, näin jokainen näistä kuvia 405 00:24:33,060 --> 00:24:35,950 omana erillisenä yksittäisen kuvan. 406 00:24:35,950 --> 00:24:39,690 Nyt, jos flash lisää kuvia minulle toisessa, 407 00:24:39,690 --> 00:24:42,140 sitten minun silmään alkaisi hämärtää ne yhteen 408 00:24:42,140 --> 00:24:46,920 ja haluaisin pitää sitä liikettä, yhden sijasta eri kuvan. 409 00:24:46,920 --> 00:24:51,930 Niinpä esimerkiksi, elokuvia ja televisio, ne flash kuvia sinua 24 kertaa 410 00:24:51,930 --> 00:24:52,570 toinen. 411 00:24:52,570 --> 00:24:55,110 Niin, että 24 kuvaa sekunnissa. 412 00:24:55,110 --> 00:25:00,136 Tietokoneiden näytöt, toisaalta, usein 60 kuvaa sekunnissa. 413 00:25:00,136 --> 00:25:01,260 Se on heidän virkistää nopeus. 414 00:25:01,260 --> 00:25:04,650 Niin usein ne päivittää kuva ruudulla. 415 00:25:04,650 --> 00:25:08,960 Joten meidän tavoite tulee olemaan 60 kuvaa sekunnissa pelimme. 416 00:25:08,960 --> 00:25:11,770 417 00:25:11,770 --> 00:25:13,710 >> Joten katsotaanpa että koodissa. 418 00:25:13,710 --> 00:25:19,064 Joten jokaisen kehyksen, olemme ensimmäinen menossa tyhjentää ikkuna. 419 00:25:19,064 --> 00:25:20,230 Tämä on yleinen malli. 420 00:25:20,230 --> 00:25:22,450 Voit pyyhkiä ikkuna kunkin kehyksen, ja sitten 421 00:25:22,450 --> 00:25:25,210 tehdä kaikki piirustus toimintaa, ja sitten lopussa, 422 00:25:25,210 --> 00:25:29,610 eivät RenderPresent näyttää kaikki kehyksessä. 423 00:25:29,610 --> 00:25:33,910 Ja sitten olet menossa on odottaa lopussa 424 00:25:33,910 --> 00:25:36,340 odottaa seuraavaan runko pitäisi alkaa. 425 00:25:36,340 --> 00:25:38,650 >> Joten jos olen tehnyt paljon monimutkainen laskenta täällä 426 00:25:38,650 --> 00:25:43,100 että kesti yli 16 millisekuntia, olisi mahdotonta minulle 427 00:25:43,100 --> 00:25:46,890 saada että kuvanopeudella 60 että Halusin, koska kukin kehys on 428 00:25:46,890 --> 00:25:48,750 liian kauan laskea. 429 00:25:48,750 --> 00:25:52,340 Lisäksi olemme todella tekee eräänlainen vähäinen määrä työtä 430 00:25:52,340 --> 00:25:54,820 täällä, koska siellä on vain yksi asia olemme piirustus. 431 00:25:54,820 --> 00:25:59,390 Joten en odota 1/60 Toinen, joka on pituus 432 00:25:59,390 --> 00:26:01,520 kehyksen välissä kehysten. 433 00:26:01,520 --> 00:26:05,610 Joten olen tavallaan teeskennellen tehdä kaikki työni vie nolla aikaa. 434 00:26:05,610 --> 00:26:09,050 Mutta todellinen peli, sinun täytyy vähentää 435 00:26:09,050 --> 00:26:13,760 aikaa kesti tehdä kaikki tämä työ teidän lepoaikaa. 436 00:26:13,760 --> 00:26:16,970 >> Niin joka tapauksessa, mikä minä olen todella tekee tämän silmukan? 437 00:26:16,970 --> 00:26:19,070 Olen tyhjentää ikkuna. 438 00:26:19,070 --> 00:26:27,470 Asetin dest.y, joka on int minun todellinen y kanta heitetään int. 439 00:26:27,470 --> 00:26:32,070 Nyt haluan float päätöslauselma minun y sijoitukseen peliäni, 440 00:26:32,070 --> 00:26:34,150 mutta sitten todella piirtää ruudulle, 441 00:26:34,150 --> 00:26:39,070 se tarvitsee ints, koska se on yksikköinä pikseliä, joten se mitä valettu on. 442 00:26:39,070 --> 00:26:41,745 Aion piirtää kuvan. 443 00:26:41,745 --> 00:26:45,180 Joten tämä on lähde suorakulmio. 444 00:26:45,180 --> 00:26:47,060 Ja tämä on määränpää suorakulmio. 445 00:26:47,060 --> 00:26:50,310 Joten ohitin null varten lähde suorakulmio 446 00:26:50,310 --> 00:26:53,426 sanoa Haluaisin kiinnittää minun koko rakenne. 447 00:26:53,426 --> 00:26:55,300 Mutta jos sinulla on ollut paljon kuvioita pelin 448 00:26:55,300 --> 00:26:59,120 ja ne ovat kaikki yhden ison pintakuviokartan että ladattiin SDL vain yhtenä 449 00:26:59,120 --> 00:27:02,850 tekstuuri, voisit Käytä lähde suorakulmio 450 00:27:02,850 --> 00:27:06,750 valita pienimpiä tekstuurit, pienimpiä sprite, 451 00:27:06,750 --> 00:27:09,450 pois että iso tekstuurin. 452 00:27:09,450 --> 00:27:14,740 >> Joten jälleen, olen ohimennen minun tehdä, minun rakenne, ja nyt kohde. 453 00:27:14,740 --> 00:27:18,320 Tämä tulee olemaan missä ikkuna se tulee tehdä. 454 00:27:18,320 --> 00:27:21,390 Ja sitten, koska olen animointiin jotain, tarvitsen liike, 455 00:27:21,390 --> 00:27:25,150 Aion Päivitämme sprite kantansa kuhunkin kehyksessä. 456 00:27:25,150 --> 00:27:30,190 Joten minulla on tämä jatkuva kutsutaan selaa nopeus yksiköissä pikseliä sekunnissa. 457 00:27:30,190 --> 00:27:34,320 Nyt joka kerta teemme liikkeen, kehys on vain 1/60 sekuntia. 458 00:27:34,320 --> 00:27:36,740 Joten aion jakaa, että 60. 459 00:27:36,740 --> 00:27:42,350 Ja sitten, katsotaanpa, olen vähentämällä että y asema. 460 00:27:42,350 --> 00:27:44,470 Miksi olen vähentämällä? 461 00:27:44,470 --> 00:27:46,169 Me saamme että toinen. 462 00:27:46,169 --> 00:27:48,460 Joten sitten siivota omat resurssit ja ohjelma on ohi. 463 00:27:48,460 --> 00:27:49,830 >> Joten tehdä että. 464 00:27:49,830 --> 00:27:52,450 465 00:27:52,450 --> 00:28:03,570 Joten mennä tehdä alakohtaisille kierrätysyhtiöille = hello4 animation.c, okei? 466 00:28:03,570 --> 00:28:05,720 Peli. 467 00:28:05,720 --> 00:28:06,770 Ole hyvä. 468 00:28:06,770 --> 00:28:12,690 Joten minulla on se vieritys ylös ikkuna, joka on aika siisti. 469 00:28:12,690 --> 00:28:17,110 Mutta pitää kiinni, olin vähentämällä alkaen y asentoon joka kerta. 470 00:28:17,110 --> 00:28:18,910 Mitä siellä tapahtuu? 471 00:28:18,910 --> 00:28:24,010 No, käy ilmi, että SDL, ja Itse asiassa, useimmissa tietokonegrafiikan, 472 00:28:24,010 --> 00:28:28,890 alkuperän koordinaatistoon on vasemmassa yläkulmassa ikkunan. 473 00:28:28,890 --> 00:28:34,960 >> Joten positiivisen x suuntaan menee poikki ikkuna oikealle. 474 00:28:34,960 --> 00:28:38,110 Ja positiivinen y suuntaan todella menee alas. 475 00:28:38,110 --> 00:28:40,470 Joten jälleen, alkuperä n vasemmassa yläkulmassa ikkunan, 476 00:28:40,470 --> 00:28:46,190 positiivinen y suuntaan on alas, ja positiivinen x on oikealle. 477 00:28:46,190 --> 00:28:48,770 Kun siis vähennä Y-asema, joka on 478 00:28:48,770 --> 00:28:52,640 aio tehdä sitä mennä negatiivinen y-suunnassa, joka on jopa ikkuna. 479 00:28:52,640 --> 00:28:55,500 Niin, että mitä siellä tapahtuu. 480 00:28:55,500 --> 00:28:56,510 Viileä. 481 00:28:56,510 --> 00:28:59,240 >> Katsotaanpa seuraava tiedosto. 482 00:28:59,240 --> 00:29:05,700 Tässä on osa osoittavat, missä vihdoin 483 00:29:05,700 --> 00:29:08,920 saada, että X ikkunan kulmassa jonka pitäisi sulkea ikkuna 484 00:29:08,920 --> 00:29:10,660 tehdä töitä. 485 00:29:10,660 --> 00:29:12,800 Joten mitä tapahtuu? 486 00:29:12,800 --> 00:29:17,520 Me alustaa SDL, luoda ikkuna, luoda renderer, lataa kuva, 487 00:29:17,520 --> 00:29:19,770 luoda rakenne kuten olemme nähneet aiemmin. 488 00:29:19,770 --> 00:29:26,850 Meillä on sama kohde suorakulmio kuten ennen, samaan puheluun kyselyn rakenne. 489 00:29:26,850 --> 00:29:29,780 Mutta tällä kertaa, olemme sitten menossa jakaa leveys 490 00:29:29,780 --> 00:29:33,110 ja korkeus päämäärämme 4. 491 00:29:33,110 --> 00:29:36,430 Tämä on vain vaikutus skaalaus meidän kuva alas, kun 492 00:29:36,430 --> 00:29:39,884 me näyttää sen ikkunassa neljällä. 493 00:29:39,884 --> 00:29:40,800 Niin se on aika siisti. 494 00:29:40,800 --> 00:29:42,770 Voimme vain mittakaavassa vain. 495 00:29:42,770 --> 00:29:45,970 Aiomme aloittaa Sprite keskellä näytön. 496 00:29:45,970 --> 00:29:49,410 Ja nyt meillä on x ja y nopeus ja he molemmat aio aloittaa nollasta. 497 00:29:49,410 --> 00:29:53,740 498 00:29:53,740 --> 00:29:55,880 >> Tämä on väärä tiedosto. 499 00:29:55,880 --> 00:29:56,380 Olen pahoillani. 500 00:29:56,380 --> 00:29:57,960 Niin, että kaikki on totta. 501 00:29:57,960 --> 00:30:00,170 Siinä kaikki vielä tämän tiedoston. 502 00:30:00,170 --> 00:30:03,210 Meillä on jakaa 4 ja kaiken. 503 00:30:03,210 --> 00:30:07,830 Joten tässä meillä on X- ja Y- varten keskellä ikkunaa. 504 00:30:07,830 --> 00:30:12,480 Ja annamme sille alkunopeus Tämän vakionopeudella, joka 505 00:30:12,480 --> 00:30:15,180 Uskon on 300 pikseliä sekunnissa. 506 00:30:15,180 --> 00:30:19,850 Nyt meillä on tämä int voisi yhtä hyvin olla boolean nimeltään lähellä pyydetty. 507 00:30:19,850 --> 00:30:23,970 Ja sen sijaan tehdä loputon silmukka ajastin täällä, 508 00:30:23,970 --> 00:30:29,180 aiomme olla animointiin kuin kunhan lähellä ei pyydetä. 509 00:30:29,180 --> 00:30:30,960 >> Miten siis käsitellä tapahtumia? 510 00:30:30,960 --> 00:30:35,600 No, SDL jonottaa tapahtumia kirjaimellinen jono kulissien takana. 511 00:30:35,600 --> 00:30:38,860 Ja sitten kukin kehys, voimme dequeue tapahtumia 512 00:30:38,860 --> 00:30:43,900 kyseisestä jono käyttäen tämä puhelu SDL_PullEvent. 513 00:30:43,900 --> 00:30:46,730 Ja vielä, ehdottomasti mennä lukemaan tästä asiakirjoissa. 514 00:30:46,730 --> 00:30:50,450 Siellä on paljon enemmän yksityiskohtia ja paljon enemmän toimintoja voit käyttää tätä. 515 00:30:50,450 --> 00:30:54,750 Ohitamme sen osoite tämä asia, SDL_Event 516 00:30:54,750 --> 00:30:56,990 että meillä on täällä pinoon. 517 00:30:56,990 --> 00:30:58,840 >> Nyt, mitä on SDL_event? 518 00:30:58,840 --> 00:31:02,356 Koska SDL, jos katsomme documentation-- katsotaanpa 519 00:31:02,356 --> 00:31:07,580 ks API luokittain, tulo Tapahtumat, tapahtuma käsittely, 520 00:31:07,580 --> 00:31:15,150 voimme tarkastella numero erilaisia ​​tapahtumia täällä 521 00:31:15,150 --> 00:31:18,600 ja voimme nähdä siellä koko ton niistä. 522 00:31:18,600 --> 00:31:22,150 Joten mitä on tämä SDL_Event asia? 523 00:31:22,150 --> 00:31:28,190 524 00:31:28,190 --> 00:31:31,107 SDL_Event on liitto. 525 00:31:31,107 --> 00:31:31,940 Vau, mitä unioni? 526 00:31:31,940 --> 00:31:33,910 Olet luultavasti koskaan kuullut, että ennen. 527 00:31:33,910 --> 00:31:35,610 Ja se on OK. 528 00:31:35,610 --> 00:31:39,420 >> Unioni on ikään kuin struct, paitsi struct 529 00:31:39,420 --> 00:31:41,960 on tilaa kaikille kuuluvilla aloilla ja muisti, 530 00:31:41,960 --> 00:31:45,060 kun taas unioni on vain tarpeeksi tilaa sopivaksi suurimpaan 531 00:31:45,060 --> 00:31:49,660 yksi sen kenttiä, mikä tarkoittaa, että se voi tallentaa vain yksi sen kentät 532 00:31:49,660 --> 00:31:52,830 kerrallaan, millaisia järkevää tapahtumia, eikö? 533 00:31:52,830 --> 00:31:55,810 Meillä voi olla näppäimistö tapahtuma tai ikkuna tapahtuma, 534 00:31:55,810 --> 00:31:59,750 mutta yksittäinen tapahtuma ei voi olla sekä näppäimistö tapahtuma ja ikkuna tapahtuma, 535 00:31:59,750 --> 00:32:05,450 joten se olis typerää on tilaa molemmat näistä sisällä meidän tapahtuma liitto. 536 00:32:05,450 --> 00:32:07,770 Joten jos halusi Luo oma liitto, 537 00:32:07,770 --> 00:32:10,020 se näyttää samalta kuin luoda struct, 538 00:32:10,020 --> 00:32:14,140 paitsi että käytämme unionin avainsanan sijasta struct avainsanan. 539 00:32:14,140 --> 00:32:17,490 Ja muistakaa, kaikille asioita sisällä liittonne, 540 00:32:17,490 --> 00:32:22,020 todellinen muuttuja, joka on liitto voi olla vain yksi näistä arvoista 541 00:32:22,020 --> 00:32:24,780 kerrallaan. 542 00:32:24,780 --> 00:32:29,940 >> Joten kuinka voimme kertoa millainen tapahtuma me vain piipahti pois tämän jonossa? 543 00:32:29,940 --> 00:32:33,370 No, voimme testata event.type. 544 00:32:33,370 --> 00:32:35,792 Ja jos se on yhtä suuri ja SDL_Quit, tiedämme 545 00:32:35,792 --> 00:32:37,500 se on tapahtuma, joka syntyi kun 546 00:32:37,500 --> 00:32:39,510 osuma, että X ikkunan kulmassa. 547 00:32:39,510 --> 00:32:44,270 Ja voimme asettaa lähellä pyydetyn on 1. 548 00:32:44,270 --> 00:32:47,230 Loppu on vain joitakin animaatio että olet nähnyt ennen. 549 00:32:47,230 --> 00:32:52,802 Joten mene eteenpäin ja tehdä tämä ja miten hyvin se toimii. 550 00:32:52,802 --> 00:32:55,135 Joten aion kirjoittaa merkin ja sitten alakohtaisille kierrätysyhtiöille = hello5_events.c. 551 00:32:55,135 --> 00:33:03,760 552 00:33:03,760 --> 00:33:04,770 Siellä mennään. 553 00:33:04,770 --> 00:33:05,780 Pelejä. 554 00:33:05,780 --> 00:33:08,920 >> Nyt voimme nähdä se oli todellakin pienennetty neljä. 555 00:33:08,920 --> 00:33:10,360 Ja nyt se on pomppi. 556 00:33:10,360 --> 00:33:14,630 Minulla on joitakin törmäystarkastelu meneillään kanssa puolin ikkunan 557 00:33:14,630 --> 00:33:16,840 että voimme katsoa. 558 00:33:16,840 --> 00:33:21,190 Ja mitä tapahtuu, kun menen sulkea sen? 559 00:33:21,190 --> 00:33:22,120 Se sulkeutuu. 560 00:33:22,120 --> 00:33:22,740 Fantastinen. 561 00:33:22,740 --> 00:33:24,290 Saimme että tapahtuma. 562 00:33:24,290 --> 00:33:26,630 Ja me käsitellyt sitä. 563 00:33:26,630 --> 00:33:30,730 >> Joten muistella koodia. 564 00:33:30,730 --> 00:33:33,020 Joten miten saan sen pomppi kuin että? 565 00:33:33,020 --> 00:33:37,200 Muista Asetin sekä x y aluksi nopeuksilla. 566 00:33:37,200 --> 00:33:39,260 Ja nopeus on positiivinen vakio, joten se on 567 00:33:39,260 --> 00:33:42,680 menossa se alkaa menee alas ja oikealle. 568 00:33:42,680 --> 00:33:45,680 569 00:33:45,680 --> 00:33:50,310 >> Nyt jokainen kehys, lisäksi käsittelyyn tapahtumia, jotka on voinut tapahtua, 570 00:33:50,310 --> 00:33:57,520 Aion tunnistaa, minun sprite yrittää mennä ulos ikkunasta. 571 00:33:57,520 --> 00:34:03,610 Joten voimme tehdä sen vain tarkistaa x_pos 0, y_pos 0, ja sitten 572 00:34:03,610 --> 00:34:07,370 myös x_pos ja y_pos kanssa ikkunan leveys ja ikkunan korkeutta. 573 00:34:07,370 --> 00:34:11,010 Huomata Olen vähennetään leveys Sprite. 574 00:34:11,010 --> 00:34:14,090 Ja tämä johtuu siitä, että jos en vähennä leveys Sprite, 575 00:34:14,090 --> 00:34:17,760 se vain tarkistaa, että alkuperä Sprite 576 00:34:17,760 --> 00:34:19,690 ei mennyt ikkunan ulkopuolella. 577 00:34:19,690 --> 00:34:21,480 Mutta haluamme koko leveys Sprite 578 00:34:21,480 --> 00:34:24,030 aina olla sisällä ikkuna ja koko korkeuden Sprite 579 00:34:24,030 --> 00:34:25,321 aina olla ikkunan sisällä. 580 00:34:25,321 --> 00:34:27,429 Niin, että mitä vähennyslaskua on. 581 00:34:27,429 --> 00:34:30,080 Paljon geometria täällä voi olla hyödyllistä vetää sen pois 582 00:34:30,080 --> 00:34:33,929 paperille koordinoida järjestelmä nähdä, mitä on tekeillä. 583 00:34:33,929 --> 00:34:38,090 >> Joten jos en törmäävät, minä vain yksinkertaisesti palauta asema 584 00:34:38,090 --> 00:34:41,400 niin, että se ei tule ulos ruudulta. 585 00:34:41,400 --> 00:34:47,179 Ja aion, jos se ponnahtaa yksi sivuseinistä, 586 00:34:47,179 --> 00:34:51,469 Aion tyhjäksi x nopeus niin, että se 587 00:34:51,469 --> 00:34:53,210 alkaa terhakka toiseen suuntaan. 588 00:34:53,210 --> 00:34:56,210 Ja samoin, jos se osuu ylä- tai alareunassa, 589 00:34:56,210 --> 00:34:59,820 Aion asettaa y nopeus sama negatiivinen y nopeus, 590 00:34:59,820 --> 00:35:01,690 niin että se kimpoaa takaisin. 591 00:35:01,690 --> 00:35:03,860 Joten se, miten saimme että täällä. 592 00:35:03,860 --> 00:35:07,560 >> Ja päivittäminen kannat aivan kuten olemme nähneet aiemmin, 593 00:35:07,560 --> 00:35:12,510 jakaa 60, koska olemme vain käsittely 1/60 toisen. 594 00:35:12,510 --> 00:35:15,750 Ja sitten tekee, täsmälleen sama kuin ennen. 595 00:35:15,750 --> 00:35:19,810 Ja niin se on kaikki että oli meneillään tämän tiedoston. 596 00:35:19,810 --> 00:35:22,490 Niin, että miten teemme tapahtumia. 597 00:35:22,490 --> 00:35:29,260 Tärkeintä ottaa pois täällä tämä SDL_PullEvent toiminto. 598 00:35:29,260 --> 00:35:33,020 Ja kannattaa ehdottomasti lukea dokumentointi lisää SDL_Event 599 00:35:33,020 --> 00:35:38,630 liitto, koska tämä tietotyyppi on hyvin, hyvin tärkeää, koska käytämme sitä 600 00:35:38,630 --> 00:35:40,690 kaikenlaisia ​​tapahtumia. 601 00:35:40,690 --> 00:35:46,539 >> Voimme esimerkiksi käyttää sitä näppäimistöä tapahtumia, joka on mitä tämä tiedosto on. 602 00:35:46,539 --> 00:35:47,330 Joten mitä meillä on? 603 00:35:47,330 --> 00:35:50,180 Meillä on sama asia kuin ennen, alustaa SDL, luoda ikkuna, 604 00:35:50,180 --> 00:35:55,260 luoda renderer, lataa kuva muistiin, luoda rakenne. 605 00:35:55,260 --> 00:36:00,530 Jälleen aiomme on tämä dest suorakulmio, 606 00:36:00,530 --> 00:36:04,890 aiomme skaalata kuvaa neljä, tee se hieman pienempi. 607 00:36:04,890 --> 00:36:08,000 Nyt aiomme aloittaa Sprite näytön keskellä. 608 00:36:08,000 --> 00:36:12,090 Mutta tällä kertaa, aiomme asettaa alustava x ja y nopeudet nollaan, 609 00:36:12,090 --> 00:36:15,140 koska näppäimistö on menossa hallita niitä. 610 00:36:15,140 --> 00:36:18,900 Ja lisäksi aiomme seurata näiden muuttujien 611 00:36:18,900 --> 00:36:20,450 ylös, alas, vasemmalle ja oikealle. 612 00:36:20,450 --> 00:36:23,090 Ja että menee pitää kirjaa siitä olemme 613 00:36:23,090 --> 00:36:27,370 painetaan näppäimiä että vastaavat ylös, alas, vasemmalle, 614 00:36:27,370 --> 00:36:28,460 ja oikea. 615 00:36:28,460 --> 00:36:32,440 >> Nyt, tämä on eräänlainen fancy koska voimme käyttää W, A, S, 616 00:36:32,440 --> 00:36:35,480 D täällä, tai todellinen nuolinäppäimillä. 617 00:36:35,480 --> 00:36:38,590 Näemme, että vain toinen. 618 00:36:38,590 --> 00:36:41,140 Joten aiomme käsitellä tapahtuma aivan kuten ennenkin. 619 00:36:41,140 --> 00:36:42,530 Osaamme tapahtuma. 620 00:36:42,530 --> 00:36:45,840 Mutta nyt aiomme kytke tapahtuman tyyppi. 621 00:36:45,840 --> 00:36:47,710 Jos se on SDL_Quit, olemme aikoo perustaa lähellä 622 00:36:47,710 --> 00:36:49,990 pyydetään yksi, aivan kuten ennen. 623 00:36:49,990 --> 00:36:52,315 Joka käsittelee x ikkunan kulmassa, 624 00:36:52,315 --> 00:36:55,050 niin että meidän ikkunasta todella sulkeutuu. 625 00:36:55,050 --> 00:37:00,110 >> Muuten, jos saamme SDL painettuna tapahtuma, mikä tarkoittaa, että painetaan näppäintä, 626 00:37:00,110 --> 00:37:04,470 niin mitä aiomme tehdä, on olemme aikoo kytkeä tämä asia täällä, 627 00:37:04,470 --> 00:37:11,370 joka means-- niin event.key tarkoittaa kohtelemme tapahtuma liitto, 628 00:37:11,370 --> 00:37:15,490 mennä ja saada avain tapahtuma rakenne sitä. 629 00:37:15,490 --> 00:37:18,810 Joten käy ilmi, että tämä Unioni on keskeinen tapahtuma rakenne. 630 00:37:18,810 --> 00:37:22,820 Ja sitten mennä avain Tapahtuman rakenne alansa 631 00:37:22,820 --> 00:37:26,140 kutsutaan keysym ja sitten scancode. 632 00:37:26,140 --> 00:37:29,480 Ja vielä, ehdottomasti lukea asiakirjat tästä. 633 00:37:29,480 --> 00:37:31,220 Avainsana tulot varsin mielenkiintoinen. 634 00:37:31,220 --> 00:37:34,020 Saat skannata koodeja tai avainkoodeja. 635 00:37:34,020 --> 00:37:38,590 Ja se on hieman hienovarainen, mutta dokumentointi on melko hyvä. 636 00:37:38,590 --> 00:37:43,380 >> Joten jos näemme scan koodi tärkeimmistä lehdistö W tai ylös, 637 00:37:43,380 --> 00:37:45,450 aiomme perustaa yhtä suuri kuin 1. 638 00:37:45,450 --> 00:37:47,240 Ja sitten me eroon että kytkin. 639 00:37:47,240 --> 00:37:52,980 Jos se on tai vasemmalle, asetimme vasemmalle 1, et ja niin edelleen, ja niin edelleen, sillä alas ja oikealle. 640 00:37:52,980 --> 00:37:57,080 Nyt, tässä ulompi kytkin, jos näemme ylös- tapahtuma, 641 00:37:57,080 --> 00:38:00,730 se tarkoittaa, että olemme julkaisseet avain ja olemme enää painamalla sitä. 642 00:38:00,730 --> 00:38:05,380 Joten aion sanoa ylös ollessa 0, vasemmalla on 0, alas on 0, oikea 643 00:38:05,380 --> 00:38:08,260 on 0, jne. 644 00:38:08,260 --> 00:38:12,070 >> Ja huomaa meillä on kaikissa näissä Kahdessa tapauksessa korjata vierekkäin 645 00:38:12,070 --> 00:38:14,490 ilman erillistä koodia ensimmäisen asiassa, joka 646 00:38:14,490 --> 00:38:18,180 tarkoittaa, että onko se S tai alas täällä, 647 00:38:18,180 --> 00:38:20,520 se tulee suorittaa tämän koodin. 648 00:38:20,520 --> 00:38:22,090 Niin se on aika kätevä. 649 00:38:22,090 --> 00:38:24,830 Se estää meitä tarvitse tehdä enemmän ehdot ja IFS ja asiat 650 00:38:24,830 --> 00:38:26,980 niin. 651 00:38:26,980 --> 00:38:29,420 >> Joten aiomme nopeuden määrittämiseen. 652 00:38:29,420 --> 00:38:31,020 Asetimme nopeus 0. 653 00:38:31,020 --> 00:38:33,910 Sitten jos ylös painetaan ja ei alas, niin me 654 00:38:33,910 --> 00:38:37,450 asettaa y nopeuden negatiivinen nopeus. 655 00:38:37,450 --> 00:38:42,930 Muista negatiivinen, koska negatiivinen y suuntaan on ylös. 656 00:38:42,930 --> 00:38:45,540 Ja positiivinen y-suunnassa on alaspäin. 657 00:38:45,540 --> 00:38:47,510 Jos alas painetaan eikä ylös, niin olemme 658 00:38:47,510 --> 00:38:53,860 aikoo asettaa sen positiivinen nopeus, mikä tarkoittaa menee alas näytön. 659 00:38:53,860 --> 00:38:55,460 Sama juttu vasemmalle ja oikealle. 660 00:38:55,460 --> 00:38:58,200 >> Ja sitten me aiomme päivittää kannat aivan kuten ennenkin. 661 00:38:58,200 --> 00:39:00,740 Aiomme tehdä törmäyksen tunnistus rajoja, 662 00:39:00,740 --> 00:39:04,290 mutta emme aio palauttaa nopeus, koska nopeus on vain 663 00:39:04,290 --> 00:39:06,780 ohjataan näppäimistön. 664 00:39:06,780 --> 00:39:11,230 Mutta aiomme nollata kannat pitää se ikkunassa. 665 00:39:11,230 --> 00:39:14,400 Ja aiomme asettaa tehtävissä struct 666 00:39:14,400 --> 00:39:17,400 ja sitten tehdä kaikki tekee tavaraa ennen. 667 00:39:17,400 --> 00:39:20,750 Joten katso mitä se tekee. 668 00:39:20,750 --> 00:39:25,460 Joten tehdä SRCS-- Katsotaanpa, tämä on hello6_keyboard.c. 669 00:39:25,460 --> 00:39:38,140 670 00:39:38,140 --> 00:39:38,820 >> Voi ei. 671 00:39:38,820 --> 00:39:40,150 Joten saimme varoituksia täällä. 672 00:39:40,150 --> 00:39:43,840 Ja joka on yksinkertaisesti sanomalla emme tarkista kaikkia mahdollisia laji 673 00:39:43,840 --> 00:39:45,610 tapahtuman. 674 00:39:45,610 --> 00:39:49,470 Se on OK, koska siellä on 236 niistä tai niin. 675 00:39:49,470 --> 00:39:51,760 Joten aion sivuuttaa nämä varoitukset. 676 00:39:51,760 --> 00:39:53,530 Se on edelleen koottu hieno. 677 00:39:53,530 --> 00:39:56,100 Joten aion pelata peliä. 678 00:39:56,100 --> 00:39:57,590 Se ei liiku. 679 00:39:57,590 --> 00:40:04,150 Mutta nyt, kun olen mash minun näppäimistö, Voin tehdä joitakin WASD liikkeen täällä, 680 00:40:04,150 --> 00:40:06,870 Käytän nuolinäppäimillä samoin. 681 00:40:06,870 --> 00:40:10,070 Ja huomaa, vaikka olen painamalla oikea juuri nyt, 682 00:40:10,070 --> 00:40:13,804 se ei tule ulos ikkunasta, koska se palautetaan jokaiselle kehyksessä. 683 00:40:13,804 --> 00:40:14,720 Niin se on aika siisti. 684 00:40:14,720 --> 00:40:19,420 Voitte kuvitella liikkuvat Mario kanssa jotkut nuolinäppäimillä tai jotain. 685 00:40:19,420 --> 00:40:22,880 Ja kyllä, X ei toimi. 686 00:40:22,880 --> 00:40:26,900 >> Joten lopullinen tiedosto aiomme katsomaan, hellow7_mouse. 687 00:40:26,900 --> 00:40:29,600 Tämä on noin saada hiiri panos. 688 00:40:29,600 --> 00:40:34,790 Joten tässä, me tuoda matematiikka otsikon, 689 00:40:34,790 --> 00:40:38,100 koska aiomme olla hieman matematiikkaa täällä. 690 00:40:38,100 --> 00:40:45,260 Sama vanha, sama vanhaa kamaa, kohde, Sama vanha, nähdä, että ennen. 691 00:40:45,260 --> 00:40:46,910 No, tämä on mielenkiintoinen. 692 00:40:46,910 --> 00:40:51,730 Joten olemme takaisin vain tarkkailun että SDL lopettaa tapahtuman. 693 00:40:51,730 --> 00:40:52,460 Miksi näin? 694 00:40:52,460 --> 00:40:55,110 Joten voit saada mouse input tapahtumista. 695 00:40:55,110 --> 00:40:57,670 Kuten kun hiiri siirretään, saat tapahtuma, joka. 696 00:40:57,670 --> 00:41:00,520 Kun hiiren painiketta painetaan, saat tapahtuma, joka. 697 00:41:00,520 --> 00:41:05,760 >> Mutta on toinen, hieman yksinkertaisempi ehkä, API saada mouse input. 698 00:41:05,760 --> 00:41:09,500 Ja se on yksinkertaisesti SDL hae hiiri valtio. 699 00:41:09,500 --> 00:41:14,370 Joten olen int x ja Y kursorin asemaa. 700 00:41:14,370 --> 00:41:18,910 Kuljen sen SDL_GetMouseState, joka asettaa nämä. 701 00:41:18,910 --> 00:41:22,200 Ja tämä on asema koordinaatisto ikkunan. 702 00:41:22,200 --> 00:41:25,520 Joten jos massa on vasemmassa yläkulmassa ikkunan, että olisi 0, 0. 703 00:41:25,520 --> 00:41:28,040 704 00:41:28,040 --> 00:41:33,380 >> Nyt, mitä aion tehdä, on Aion tehdä hieman vektorin matematiikka. 705 00:41:33,380 --> 00:41:36,910 Lyön vetoa luulit tahdo nähdä, että CS50, mutta tässä se on. 706 00:41:36,910 --> 00:41:40,720 Aion tehdä joitakin vektori matematiikka saada vektori 707 00:41:40,720 --> 00:41:43,840 kuvan kohdistimen. 708 00:41:43,840 --> 00:41:53,280 Ja niin miksi minulla on tämä vähennys täällä? 709 00:41:53,280 --> 00:42:01,350 No, jos vain käytetään dest .-- niin Minun täytyy kääntää hiiren X 710 00:42:01,350 --> 00:42:05,166 ja y puoleen leveys ja kuvan korkeus, 711 00:42:05,166 --> 00:42:08,040 koska haluan keskellä kuva on menossa kohti hiiri, 712 00:42:08,040 --> 00:42:10,160 ei alkuperää kuvan. 713 00:42:10,160 --> 00:42:15,650 >> Niin, että vain varmistaa puhun noin keskellä kuvaa täällä. 714 00:42:15,650 --> 00:42:19,510 Sitten saamme delta x ja y, jotka on ero tavoite 715 00:42:19,510 --> 00:42:23,430 todellisen kuvan sijaintia. 716 00:42:23,430 --> 00:42:25,690 Ja sitten voimme saada etäisyys täällä, joka 717 00:42:25,690 --> 00:42:29,140 tulee olemaan Pythagoraan lause, neliöjuuri x 718 00:42:29,140 --> 00:42:32,720 kertaa X plus y kertaa y. 719 00:42:32,720 --> 00:42:38,400 >> Nyt estää värinää, ja voin näyttää mitä tämä tekee, jos en tee tätä, 720 00:42:38,400 --> 00:42:45,830 jos etäisyys kohdistin ja kuva keskusta on alle viisi, 721 00:42:45,830 --> 00:42:48,730 Olen vain aio siirtää kuvaa. 722 00:42:48,730 --> 00:42:52,900 Muutoin asetamme nopeus. 723 00:42:52,900 --> 00:42:55,960 Ja me aseta se niin, että nopeus on aina vakio. 724 00:42:55,960 --> 00:42:58,770 Ja nettotulos kaikki tämä matematiikka on, että kuva 725 00:42:58,770 --> 00:43:01,660 on menossa kohti kohdistin. 726 00:43:01,660 --> 00:43:08,470 >> Nyt käy ilmi, että SDL_GetMouseState, 727 00:43:08,470 --> 00:43:14,490 lisäksi asetuksen x ja y argumentteja täällä, 728 00:43:14,490 --> 00:43:21,340 se myös palauttaa int, joka vastaa tilaan hiiren painikkeet. 729 00:43:21,340 --> 00:43:24,600 Joten emme voi lukea, että suoraan, mutta voimme 730 00:43:24,600 --> 00:43:29,090 käyttää näitä makroja, yksi bittioperaattori, ei että pelottavaa, 731 00:43:29,090 --> 00:43:30,650 vain peiton ja. 732 00:43:30,650 --> 00:43:38,320 Niinpä sanomme painikkeita, joka on seurausta meidän SDL_GetMouseState, jos 733 00:43:38,320 --> 00:43:43,990 ja peiton ja, tämä makro täällä, SDL_BUTTON_LEFT. 734 00:43:43,990 --> 00:43:47,680 >> Joten tämä tulee yksinkertaisesti ratkaista sen bittikartta, joka vastaa 735 00:43:47,680 --> 00:43:51,090 vasemmalle hiiren painiketta painetaan. 736 00:43:51,090 --> 00:43:55,470 Joten jos bittivastineen ja tapahtuu ja se on 737 00:43:55,470 --> 00:43:59,340 ei ole nolla, mikä tarkoittaa sitä, vasen painettiin, 738 00:43:59,340 --> 00:44:04,320 sitten olemme todella tulee tyhjäksi Sekä x: n ja y-nopeudet, 739 00:44:04,320 --> 00:44:06,700 joka vain tehdä kuvan karannut. 740 00:44:06,700 --> 00:44:07,980 Päivitys kantoja. 741 00:44:07,980 --> 00:44:10,920 Törmäykset havainnot, nähnyt sen kaikki ennen, renderöinti, kaikki hyvin. 742 00:44:10,920 --> 00:44:11,510 Tehdään tästä. 743 00:44:11,510 --> 00:44:14,200 744 00:44:14,200 --> 00:44:16,050 Joten sinulla tehdä alakohtaisille kierrätysyhtiöille = hello7_mouse.c. 745 00:44:16,050 --> 00:44:21,720 746 00:44:21,720 --> 00:44:22,220 Suuri. 747 00:44:22,220 --> 00:44:23,490 Ei virheitä. 748 00:44:23,490 --> 00:44:24,900 Ja peli. 749 00:44:24,900 --> 00:44:26,440 >> Joten tässä minulla on hiiri. 750 00:44:26,440 --> 00:44:29,000 Ja kuva on todella jahtaa hiirtä. 751 00:44:29,000 --> 00:44:33,140 Nyt peli teet, ehkä tämä on kuin vihollinen jahtaavat 752 00:44:33,140 --> 00:44:35,240 pikku merkki tai mitä tahansa. 753 00:44:35,240 --> 00:44:37,440 Mutta täällä meillä kuva jahtaa hiirtä. 754 00:44:37,440 --> 00:44:41,000 Ja kun klikkaa, hiiri alkaa jahtaa kuva 755 00:44:41,000 --> 00:44:42,860 ja kuva on pakenee hiiri. 756 00:44:42,860 --> 00:44:43,810 Niin se on aika siistiä. 757 00:44:43,810 --> 00:44:47,770 Ja huomautus uudelleen, siellä on vielä törmäystarkastelu täällä. 758 00:44:47,770 --> 00:44:53,930 >> Tämä on siis lopullinen pieni demo olen perustanut täällä. 759 00:44:53,930 --> 00:44:58,870 Ja lähdetään katsomaan yksi asia. 760 00:44:58,870 --> 00:45:02,970 Joten takaisin tänne, mainitsin tämän värinää. 761 00:45:02,970 --> 00:45:05,000 Selvä. 762 00:45:05,000 --> 00:45:12,890 Joten jos etäisyys on alle viisi pikseliä, Olin asettamalla x ja y nopeus nollaan. 763 00:45:12,890 --> 00:45:15,960 Mitä tapahtuu, jos me eroon siitä? 764 00:45:15,960 --> 00:45:19,070 Joten aion vain tehdä tätä. 765 00:45:19,070 --> 00:45:23,820 766 00:45:23,820 --> 00:45:30,150 Pyydän anteeksi tämän hirvittävän tyyli, mutta me kommentoi ulos oikean koodin. 767 00:45:30,150 --> 00:45:38,080 Joten aion tallentaa että ja tehdä sama komento ennen tehdä. 768 00:45:38,080 --> 00:45:38,785 >> Selvä. 769 00:45:38,785 --> 00:45:39,660 Ja nyt, mitä tapahtuu? 770 00:45:39,660 --> 00:45:43,260 771 00:45:43,260 --> 00:45:43,760 Hyvä. 772 00:45:43,760 --> 00:45:45,801 Olemme edelleen seuraavien hiiri aivan kuten ennenkin, 773 00:45:45,801 --> 00:45:49,310 mutta kun pääsemme hiiri, meillä tämä brutto värinää. 774 00:45:49,310 --> 00:45:50,320 Mitä siellä tapahtuu? 775 00:45:50,320 --> 00:45:52,600 No, meidän vektori matematiikka, muistan olimme 776 00:45:52,600 --> 00:45:57,540 ottaen välinen etäisyys kursori ja kuvan keskellä? 777 00:45:57,540 --> 00:46:00,710 No, kuten joka lähestyy 0, alamme saada 778 00:46:00,710 --> 00:46:06,280 kuten tällainen hullu käyttäytymistä jossa kuva on eräänlainen 779 00:46:06,280 --> 00:46:08,910 kuten värähtelevän kursorin. 780 00:46:08,910 --> 00:46:12,000 Ja että on luoda tämä värinää. 781 00:46:12,000 --> 00:46:13,020 Ja se on todella ruma. 782 00:46:13,020 --> 00:46:15,103 Ja et todennäköisesti haluat pelejä tee sitä, 783 00:46:15,103 --> 00:46:17,350 ellei se jonkinlainen erityinen vaikutus. 784 00:46:17,350 --> 00:46:21,960 >> Joten siksi olemme juuri tämä mielivaltainen 785 00:46:21,960 --> 00:46:27,150 katkaisi viiden pikseliä, jossa sanomme jos se on viiden pikseliä, olemme hyviä. 786 00:46:27,150 --> 00:46:29,560 Meidän ei tarvitse siirtää kuvaa enää. 787 00:46:29,560 --> 00:46:32,260 Niin, että mitä siellä tapahtuu. 788 00:46:32,260 --> 00:46:37,390 789 00:46:37,390 --> 00:46:40,870 >> Niin se on aika paljon se. 790 00:46:40,870 --> 00:46:44,390 Nyt tiedämme, miten luoda ikkuna, lataa kuva, 791 00:46:44,390 --> 00:46:49,330 piirtää kuvia ikkunaan, saada näppäimistön, saada mouse input, 792 00:46:49,330 --> 00:46:52,190 siellä on joukko muita tulo että et 793 00:46:52,190 --> 00:46:56,070 tietää, miten saada, jos vain viettää muutaman minuutin katsot asiakirjat. 794 00:46:56,070 --> 00:46:59,670 Joten sinulla todella on melko muutamia työkaluja käytettävissänne nyt 795 00:46:59,670 --> 00:47:01,650 kirjoittaa täysimittainen peli. 796 00:47:01,650 --> 00:47:05,030 >> Nyt jokainen peli tarvitsee äänen, mutta ääni asiakirjat 797 00:47:05,030 --> 00:47:06,460 on myös melko hyvä. 798 00:47:06,460 --> 00:47:09,200 Ja olen valmis lyömään vetoa, että jos ymmärrät kaikki asiat 799 00:47:09,200 --> 00:47:14,560 puhuimme tänään kuvia, ja pinnat, 800 00:47:14,560 --> 00:47:18,370 ikkunat, ja kaikki, sitten miettiminen ääni API ei ole 801 00:47:18,370 --> 00:47:21,170 tulee olla, että huono. 802 00:47:21,170 --> 00:47:27,420 Joten Odotan näkeväni mitä luot SDL. 803 00:47:27,420 --> 00:47:31,595