1 00:00:00,000 --> 00:00:05,069 2 00:00:05,069 --> 00:00:06,110 THOMAS LIVELY: Bütün hüququ. 3 00:00:06,110 --> 00:00:07,450 Hər kəsə salam. 4 00:00:07,450 --> 00:00:08,690 Mən Thomas Lively edirəm. 5 00:00:08,690 --> 00:00:15,160 Bu seminar olacaq SDL istifadə C 2D oyun yazmaq. 6 00:00:15,160 --> 00:00:17,970 Mən sizə bütün istəyirik bilirik Bəli, mən, həqiqətən, xahiş 7 00:00:17,970 --> 00:00:22,050 oyun və oyun etmək istəyirəm, lakin bu SDL business nədir? 8 00:00:22,050 --> 00:00:25,320 Belə ki, SDL C kitabxanadır. 9 00:00:25,320 --> 00:00:28,270 Bu sadə dayanır DirectMedia Layer. 10 00:00:28,270 --> 00:00:31,340 Və bu, bir cross platform var oyun inkişaf kitabxana. 11 00:00:31,340 --> 00:00:37,160 Bu, Windows, Mac üzərində işləyir Linux, hətta iOS və Android. 12 00:00:37,160 --> 00:00:40,380 Bu kimi şeylər emal audio sistemi giriş 13 00:00:40,380 --> 00:00:44,900 kompüter, klaviatura, və siçan, joysticks, onlar əlavə edirsinizsə. 14 00:00:44,900 --> 00:00:48,300 Mobil, hətta edə bilərsiniz giriş və ki, bütün toxunmaq. 15 00:00:48,300 --> 00:00:53,030 Və əlbəttə ki, bu, qrafik emal, ekran şeyi rəsm. 16 00:00:53,030 --> 00:00:56,470 >> Belə ki, çox geniş olsa da, istifadə Siz əvvəl eşitməmişik ola bilər. 17 00:00:56,470 --> 00:01:00,860 Bu, misal üçün, daxil olan, Valve mənbə mühərrik, 18 00:01:00,860 --> 00:01:04,970 kimi səlahiyyətləri oyunlar Portal və Team Fortress 2. 19 00:01:04,970 --> 00:01:08,680 Bu, çox sayda da var çıxmaq indie oyun, 20 00:01:08,680 --> 00:01:13,545 Mən sizə nə görmək üçün bir heyecan alıram bütün bu qəbul olunacaq. 21 00:01:13,545 --> 00:01:20,000 >> seminar qol almaq üçün SDL inkişaf olmaq üçün müəyyən. 22 00:01:20,000 --> 00:01:22,700 Biz necə öyrənmək olacaq bir oyun pəncərə yaratmaq. 23 00:01:22,700 --> 00:01:26,130 Biz sprites yaratmaq olacaq olan oyun şəkillər 24 00:01:26,130 --> 00:01:27,744 ki, ətrafında hərəkət edə bilər. 25 00:01:27,744 --> 00:01:29,910 Biz necə öyrənmək olacaq və sprites diri, 26 00:01:29,910 --> 00:01:32,910 belə onların ətrafında hərəkət etmək Onlara vaxt ərzində dəyişir. 27 00:01:32,910 --> 00:01:35,580 Və biz necə olacaq Klaviatura və siçan tutmaq üçün 28 00:01:35,580 --> 00:01:38,240 kompüter girdi. 29 00:01:38,240 --> 00:01:41,550 Biz söhbət olmaz bu gün 3D qrafika, 30 00:01:41,550 --> 00:01:45,520 ki, bir çox mürəkkəb, çünki biz vaxt yoxdur mövzu. 31 00:01:45,520 --> 00:01:49,010 Biz öyrənmək deyil necə Bizim oyun audio oynamaq. 32 00:01:49,010 --> 00:01:53,300 Və biz tikinti olmayacaq Linux lakin bir şey üçün. 33 00:01:53,300 --> 00:01:58,330 >> İndi caveats ki var, Ümid edirəm ki, ilin sonuna seminar tərəfindən, 34 00:01:58,330 --> 00:02:01,660 Siz rahat olacaq SDL sənədləşdirmə, 35 00:02:01,660 --> 00:02:05,370 belə ki, anlamaq getmək mümkün olacaq necə özünüz üçün audio oynamaq. 36 00:02:05,370 --> 00:02:12,150 Həmçinin işləməlidir Mac və ya PC üçün bina tam Linux üçün bina eyni, 37 00:02:12,150 --> 00:02:14,700 lakin quraşdırma olacaq bir az fərqli ola bilər. 38 00:02:14,700 --> 00:02:17,700 Belə ki, anlamaq lazımdır bu şeyə həyata necə 39 00:02:17,700 --> 00:02:20,900 Bugünkü seminarın sonunda. 40 00:02:20,900 --> 00:02:26,980 >> Qurmaq üçün, belə ki, biz gedirik virtual maşın istifadə etmək. 41 00:02:26,980 --> 00:02:31,010 Biz çünki CS50 IDE istifadə ki, biz yalnız C. yazılı olacaq 42 00:02:31,010 --> 00:02:35,120 Amma IDE biz bir browser deyil, çünki Yeni Windows və ya ekran yarada bilməz 43 00:02:35,120 --> 00:02:36,410 bu qrafika. 44 00:02:36,410 --> 00:02:38,450 Beləliklə, biz bir virtual maşın lazımdır. 45 00:02:38,450 --> 00:02:47,790 Belə ki, təlimatlara əməl edin burada manual.CS50.net/appliance/15 at 46 00:02:47,790 --> 00:02:53,290 rəsmi CS50 cihaz yüklemek üçün, olan sadəcə bir Linux virtual deyil 47 00:02:53,290 --> 00:02:55,110 maşın. 48 00:02:55,110 --> 00:02:58,090 >> Və sonra bir dəfə bütün gündəmə müəyyən 49 00:02:58,090 --> 00:03:02,090 Çünki bir az müddət bilər Siz olacaq bir çox böyük DOWNLOAD 50 00:03:02,090 --> 00:03:07,060 VM sudo apt-get yeniləmə run. 51 00:03:07,060 --> 00:03:09,410 Və həqiqətən gedir bütün proqram yeniləmə 52 00:03:09,410 --> 00:03:12,670 Sizin virtual maşın paketləri. 53 00:03:12,670 --> 00:03:20,130 >> Bundan sonra, çalıştırmak olacaq sudo, yüklemek libsdl2-2.0-0 apt-get 54 00:03:20,130 --> 00:03:27,960 libsdl2-DBG, libsdl2-dev və əlavə libsdl2-image-2.0-0, 55 00:03:27,960 --> 00:03:32,560 libsdl2-image-DBG, və libsdl2-image-dev. 56 00:03:32,560 --> 00:03:33,640 Belə ki, nə edir? 57 00:03:33,640 --> 00:03:38,440 Bu sadəcə debug quraşdırır məlumat, sənədləşdirmə, mövzular, 58 00:03:38,440 --> 00:03:41,260 və iki kitabxanalar üçün binaries. 59 00:03:41,260 --> 00:03:45,090 SDL 2.0, köhnə Daimi, və digər kitabxana 60 00:03:45,090 --> 00:03:50,110 adlı SDL Image olan biz istifadə olacaq 61 00:03:50,110 --> 00:03:54,560 Bizim oyun resim faylları yüklemek üçün. 62 00:03:54,560 --> 00:03:57,860 >> Siz də bir dəfə belə ki, xahiş yalnız zaman ki, 63 00:03:57,860 --> 00:04:01,100 yalnız yes yazın Enter bu paketləri yüklemek üçün, 64 00:04:01,100 --> 00:04:04,430 və sonra siz getmək üçün yaxşı olmalıdır. 65 00:04:04,430 --> 00:04:14,800 Belə ki, distribution kodu almaq üçün əziz oh can--, bu updated deyil. 66 00:04:14,800 --> 00:04:18,480 Sizin halda GitHub account-- var Bir GitHub hesabınız varsa, 67 00:04:18,480 --> 00:04:24,450 Bu git edə bilərsiniz repo üçün klon komanda 68 00:04:24,450 --> 00:04:30,490 ki, git download bu bütün kodu ilə repo, 69 00:04:30,490 --> 00:04:31,700 ki, kodu olacaq. 70 00:04:31,700 --> 00:04:36,470 >> Bir GitHub yoxsa hesabı, siz nə etmək lazımdır növü 71 00:04:36,470 --> 00:04:48,867 wgithttps: //github.com/tlively/sdl seminar-- və burada different-- var 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 Belə ki, yenə dəqiq eyni URL, bu olacaq istisna olmaqla, 75 00:04:59,220 --> 00:05:09,010 tlively / SDL_seminar / master.zip və ki, download wgit istifadə edirik. 76 00:05:09,010 --> 00:05:12,940 Və sonra yalnız bilərsiniz ki, arxiv açın 77 00:05:12,940 --> 00:05:14,900 və sonra lazımdır bütün mənbə kodu. 78 00:05:14,900 --> 00:05:17,580 Bu barədə So sorry. 79 00:05:17,580 --> 00:05:23,880 Və sonra code də ev sahibliyi edəcək Bir neçə CS50 seminarın web səhifə 80 00:05:23,880 --> 00:05:25,230 gün. 81 00:05:25,230 --> 00:05:26,590 >> Oldu. 82 00:05:26,590 --> 00:05:29,932 Belə ki, necə biz başlamaq edirsiniz Öz oyunumuzu yazılı? 83 00:05:29,932 --> 00:05:31,890 Bəli, ilk şey Biz nə istəyirik olacaq 84 00:05:31,890 --> 00:05:34,740 SDL sənədlərin baxmaq edir. 85 00:05:34,740 --> 00:05:37,020 Belə ki, burada VM var. 86 00:05:37,020 --> 00:05:38,720 Və burada web page var. 87 00:05:38,720 --> 00:05:40,340 Mən libsdl.org yaşamaq sürülmək etdik. 88 00:05:40,340 --> 00:05:43,110 89 00:05:43,110 --> 00:05:48,140 Mən burada gedirəm artıq getmək sidebar, sənədlərin altında, 90 00:05:48,140 --> 00:05:51,040 və wiki basın. 91 00:05:51,040 --> 00:05:56,870 Bu wiki mənə gətirəcək SDL üçün sənədlərin ən var. 92 00:05:56,870 --> 00:06:01,360 Burada sidebar ərzində biz istəyirik Kateqoriya API basın gedir, 93 00:06:01,360 --> 00:06:04,300 çünki vermək niyyətindədir Bizə gözəl bir qəti baxış 94 00:06:04,300 --> 00:06:07,770 SDL üçün bütün API. 95 00:06:07,770 --> 00:06:12,390 >> Belə ki, məsələn, biz Əsas başlatma 96 00:06:12,390 --> 00:06:18,380 və aşağı bütün növ bağlamaq SDL istifadə üçün inzibati heyəti, 97 00:06:18,380 --> 00:06:21,630 sonra biz bölmə üçün ekran şeyi göstərilir. 98 00:06:21,630 --> 00:06:23,000 Bu video var. 99 00:06:23,000 --> 00:06:25,790 Input hadisələr ki, əldə var klaviatura giriş, 100 00:06:25,790 --> 00:06:29,710 siçan daxil almaq, və joystick, hətta var. 101 00:06:29,710 --> 00:06:32,901 Şeylər üçün güc rəy var Oyun nəzarətçiləri kimi olan 102 00:06:32,901 --> 00:06:34,150 biz haqqında danışmaq fikrində deyilik. 103 00:06:34,150 --> 00:06:35,630 Və burada audio var. 104 00:06:35,630 --> 00:06:38,940 Və sonra digər bir dəstə var SDL sizin üçün nə edə stuff. 105 00:06:38,940 --> 00:06:43,830 >> Ancaq bu gün biz diqqət olacaq burada başlatma haqqında, 106 00:06:43,830 --> 00:06:48,332 video images gösteren ikibölməli, və giriş hadisələr baxılması. 107 00:06:48,332 --> 00:06:50,290 Belə ki, bu əsas var sənədlərin bölmələr 108 00:06:50,290 --> 00:06:53,050 Siz narahat etmək lazımdır ki,. 109 00:06:53,050 --> 00:06:57,170 Yalnız əyləncə üçün, biz artıq getmək əgər burada və adı ilə API basın 110 00:06:57,170 --> 00:07:04,350 hər bir siyahısını görə bilərsiniz SDL kitabxana bir şey. 111 00:07:04,350 --> 00:07:11,330 Belə ki, bütün bu funksiyaları, siyahıyaalmalarının, strukturları, məhsullarının bir crazy məbləği, 112 00:07:11,330 --> 00:07:12,820 əlifba sırası. 113 00:07:12,820 --> 00:07:14,580 Və aydın qədər Siz yapýyorsun bilirik, 114 00:07:14,580 --> 00:07:19,100 Bu, çox faydalı ola niyyətində deyil Hansı Kateqoriya API niyə edir. 115 00:07:19,100 --> 00:07:20,810 >> Belə ki, başlamaq bildirin. 116 00:07:20,810 --> 00:07:25,680 İnşallah siz artıq var paylanması kodu nazil. 117 00:07:25,680 --> 00:07:30,070 Və belə ki, nə edə bilər, sağ deyil burada CS50 cihaz, 118 00:07:30,070 --> 00:07:31,150 sadəcə bir terminal açmaq. 119 00:07:31,150 --> 00:07:33,750 120 00:07:33,750 --> 00:07:34,440 Burada getmək. 121 00:07:34,440 --> 00:07:40,740 Mən artıq nazil etdik Zip istifadə distribution kodu 122 00:07:40,740 --> 00:07:41,690 üsulu. 123 00:07:41,690 --> 00:07:43,140 Və mən unzipped etdik. 124 00:07:43,140 --> 00:07:46,120 Belə ki, burada SDL seminar master edir. 125 00:07:46,120 --> 00:07:49,750 Mən ki, dizine getmək üçün gedirəm. 126 00:07:49,750 --> 00:07:55,310 Və biz burada bax ki, biz yeddi C faylları var. 127 00:07:55,310 --> 00:07:58,070 Və bu kodu gedir Bu gün baxaraq olacaq. 128 00:07:58,070 --> 00:08:00,040 Biz Makefile var. 129 00:08:00,040 --> 00:08:06,950 Və biz bir resursları kataloq var, olan sadəcə bir şəkil var 130 00:08:06,950 --> 00:08:09,070 ki, kifayət qədər tez görən olacaq. 131 00:08:09,070 --> 00:08:16,060 >> Belə ki, bu faylları açmaq bildirin G-Edit redaktoru istifadə edərək. 132 00:08:16,060 --> 00:08:22,000 Mən bütün faylları açmaq istəyirəm ki, salam ilə başlamaq və c ilə başa. 133 00:08:22,000 --> 00:08:23,380 Burada getmək. 134 00:08:23,380 --> 00:08:28,180 Belə ki, kiçik bir pəncərə var, belə ki, biz istəyirik böyük ki, etmək üçün cəhd olacaq. 135 00:08:28,180 --> 00:08:28,900 Xeyr, bu, getdi. 136 00:08:28,900 --> 00:08:32,836 137 00:08:32,836 --> 00:08:34,570 >> Oldu. 138 00:08:34,570 --> 00:08:37,959 Belə ki, burada ilk var Fayl biz baxmaq olacaq. 139 00:08:37,959 --> 00:08:39,000 Bu hello1_sdl.c deyirlər. 140 00:08:39,000 --> 00:08:41,890 141 00:08:41,890 --> 00:08:47,980 Və bütün bu yoxdur SDL başlamaq deyil kitabxana biz istifadə edə bilərsiniz ki. 142 00:08:47,980 --> 00:08:51,550 Gəlmək üçün bilmək olardı bu kodu özünüz ilə? 143 00:08:51,550 --> 00:08:53,850 Bəli, biz artıq baxsaq sənədlərin 144 00:08:53,850 --> 00:08:58,040 və biz başlatma getmək və bölmə bağlamaq 145 00:08:58,040 --> 00:09:02,230 Bu bizə demək olacaq SDL başlamaq üçün necə. 146 00:09:02,230 --> 00:09:06,630 Belə ki, mütləq bu, bəzi digər dəfə oxumaq. 147 00:09:06,630 --> 00:09:09,230 Bu bütün demək olacaq burada neler haqqında. 148 00:09:09,230 --> 00:09:14,360 Lakin məsələnin əsas mahiyyəti ki, Biz ona bu funksiya SDL zəng etmək lazımdır 149 00:09:14,360 --> 00:09:18,910 və onu keçmək nə cür şeylər biz kitabxana başlamaq istəyirəm. 150 00:09:18,910 --> 00:09:23,620 Bizim halda, belə ki, biz yalnız olacaq İndi video başlamaq üçün, 151 00:09:23,620 --> 00:09:26,690 ki, biz şəkillər gösteren başlaya bilərsiniz. 152 00:09:26,690 --> 00:09:32,370 >> Burada, əgər görə bilərsiniz Biz bunu bir SDL basın, biz 153 00:09:32,370 --> 00:09:36,160 daha çox məlumat əldə edə bilərsiniz, qaytarılması dəyəri, o cümlədən. 154 00:09:36,160 --> 00:09:39,050 Beləliklə, biz burada ki, görəcəksiniz qayıtmış uğur sıfır. 155 00:09:39,050 --> 00:09:43,320 Bizim kodu Belə ki, biz olacaq sıfır qayıtmaq deyil görmek, 156 00:09:43,320 --> 00:09:47,020 və geri deyil, əgər sıfır, belə ki, uğurlu deyil 157 00:09:47,020 --> 00:09:50,650 sonra biz sadəcə çap olacaq bu digər funksiyası istifadə edərək bir səhv, 158 00:09:50,650 --> 00:09:56,260 Bir simli qaytarır SDL get səhv, meydana gələn səhv izah. 159 00:09:56,260 --> 00:09:58,510 Biz bu çap olacaq səhv və biz yalnız istəyirik 160 00:09:58,510 --> 00:10:02,270 proqram çıxmaq gedir bir səhv kodu ilə. 161 00:10:02,270 --> 00:10:06,470 >> Biz lazım sonra başqa bir şey Bunu, proqram çıxışları əvvəl, 162 00:10:06,470 --> 00:10:10,830 biz uğurla SDL başlatılmış əgər, biz yalnız SDL çıxmaq zəng etmək lazımdır. 163 00:10:10,830 --> 00:10:15,750 Və təmizlənməsi idarə etmək olacaq bizim üçün SDL daxili resursların bütün. 164 00:10:15,750 --> 00:10:21,240 Belə ki, sənədləşdirmə, yenə orada burada başlatma var 165 00:10:21,240 --> 00:10:23,640 və bölmə bağlamaq sənədlərin. 166 00:10:23,640 --> 00:10:26,680 Siz yalnız basın Burada funksiyası, SDL çıxmaq, 167 00:10:26,680 --> 00:10:28,700 və siz də bu barədə oxuya bilərsiniz. 168 00:10:28,700 --> 00:10:31,400 Və bu funksiya bir çox sənədlər pages 169 00:10:31,400 --> 00:10:35,630 Məsələn kodu var, belə ki, bu çox yaxşı kaynaktır. 170 00:10:35,630 --> 00:10:39,610 Mütləq bəzi vaxt sərf Bu wiki hissələri oxu 171 00:10:39,610 --> 00:10:42,520 Siz nə etmək olacaq əgər bir layihə üçün bu. 172 00:10:42,520 --> 00:10:43,760 >> Oldu. 173 00:10:43,760 --> 00:10:46,590 Belə ki, bizim bütün proqram. 174 00:10:46,590 --> 00:10:53,935 Biz indi mən is-- nə edə bilər burada Makefile açacaq, 175 00:10:53,935 --> 00:10:56,150 mən bir almaq üçün gedirəm ki, necə oldu. 176 00:10:56,150 --> 00:10:59,500 Və bu, çox sadə makefile var Siz əvvəl gördüm nə oxşar. 177 00:10:59,500 --> 00:11:04,010 Əsas fərqlər biri ki, burada, bu 178 00:11:04,010 --> 00:11:07,870 çalışan nəticə daxil gedir Əgər siz artıq var bu komanda, 179 00:11:07,870 --> 00:11:10,850 Siz SDL yükledikten əgər quraşdırılıb. 180 00:11:10,850 --> 00:11:13,230 Bu bir komanda deyil ki, yaratmaq olacaq 181 00:11:13,230 --> 00:11:16,710 compiler üçün bəzi əlavə bayraqları. 182 00:11:16,710 --> 00:11:22,050 >> Bundan əlavə, biz ötürür bütün adi əmrləri, eləcə də 183 00:11:22,050 --> 00:11:23,430 Bu iki əmrləri. 184 00:11:23,430 --> 00:11:30,270 Belə ki, -lsdl2-image tutacaqları SDL image kitabxana birləşdirən. 185 00:11:30,270 --> 00:11:36,200 Və lm həqiqətən birləşdirən emal standart C math kitabxana. 186 00:11:36,200 --> 00:11:40,630 Beləliklə, biz lazım niyyətində deyil Bizim C faylları bütün o, 187 00:11:40,630 --> 00:11:43,900 biz ki, lakin biz yalnız onları qoymaq Hər şey üçün eyni Makefile istifadə 188 00:11:43,900 --> 00:11:44,816 dəyişiklik olmadan. 189 00:11:44,816 --> 00:11:46,970 190 00:11:46,970 --> 00:11:50,080 >> Burada mənbələrdə, Bu harada istədiyiniz deyil 191 00:11:50,080 --> 00:11:53,680 Siz gedirdi faylları qoymaq Sizin layihə üçün tərtib etmək. 192 00:11:53,680 --> 00:11:57,570 Amma mənim C hər bir ildən burada faylları əsas funksiyası var 193 00:11:57,570 --> 00:12:00,000 Bu qarışıq almaq olacaq biz onları qoymaq əgər. 194 00:12:00,000 --> 00:12:06,930 Mən yalnız demək gedirəm indi üçün, hello1_sdl.c, 195 00:12:06,930 --> 00:12:11,150 olan biz yalnız baxdı biridir. 196 00:12:11,150 --> 00:12:18,740 Mən geri artıq getmək əgər Belə ki, Burada mən edə bilərsiniz. 197 00:12:18,740 --> 00:12:22,160 Və nə bunu yalnız deyil ilk fayl tərtib. 198 00:12:22,160 --> 00:12:28,780 Və sonra biz, ./game yazın Bu istehsal çalıştırılabilir var. 199 00:12:28,780 --> 00:12:31,660 Və bunu bütün çap oldu başlatma müvəffəqiyyətli. 200 00:12:31,660 --> 00:12:33,300 Beləliklə, biz doğru bir şey etdi. 201 00:12:33,300 --> 00:12:36,200 Amma bu cür darıxdırıcı idi biz bir pəncərə görmədim, çünki, 202 00:12:36,200 --> 00:12:37,900 heç bir şey ətrafında hərəkət. 203 00:12:37,900 --> 00:12:41,030 >> Belə ki, böyük, biz SDL başlatılmış var. 204 00:12:41,030 --> 00:12:43,520 İndi bir şey üçün hərəkət edək bir az daha maraqlı. 205 00:12:43,520 --> 00:12:54,700 Belə ki, burada biz hello2_window.c var və Bu bir az daha olacaq 206 00:12:54,700 --> 00:13:00,010 Kompleks C proqramı SDL əvvəl kimi initializes, 207 00:13:00,010 --> 00:13:04,250 indi başqa biz də olacaq SDL timer başlamaq üçün. 208 00:13:04,250 --> 00:13:07,720 Bu bizə bildirin gedir daxili timer daxil 209 00:13:07,720 --> 00:13:10,550 və istifadə funksiyaları vaxt bağlı. 210 00:13:10,550 --> 00:13:11,920 >> Və sonra burada baxaq. 211 00:13:11,920 --> 00:13:16,840 Biz nə biz bu göstərici var bir SDL pəncərə struct, olan 212 00:13:16,840 --> 00:13:21,160 Bu zəng yaratdığı olacaq funksiyası, SDL pəncərə yaradır. 213 00:13:21,160 --> 00:13:25,380 İndi bu dəlilləri bir çox edir, belə ki, sənədləşdirmə baxmaq gedək. 214 00:13:25,380 --> 00:13:27,930 Belə ki, yenə, mən gedirəm Kateqoriya API, mən 215 00:13:27,930 --> 00:13:33,820 ilk burada video enən, və ikibölməli, pəncərə idarə göstərilir. 216 00:13:33,820 --> 00:13:36,470 Belə ki, bu bölmə var bu məhsullarının bir ton, 217 00:13:36,470 --> 00:13:39,970 ancaq baxmaq əgər Bu funksiyaları, will 218 00:13:39,970 --> 00:13:43,620 yəqin ki, biz çox SDL pəncərə yaratmaq adlanır istəyirəm, 219 00:13:43,620 --> 00:13:46,600 olan üst sağ olmaq olur. 220 00:13:46,600 --> 00:13:49,080 >> Və bu deyil bu funksiya üçün sənədlər. 221 00:13:49,080 --> 00:13:53,710 pəncərə bir adı var olacaq, ekranda bir x və y mövqeyi, 222 00:13:53,710 --> 00:13:56,960 Bu eni var olacaq, hündürlüyü, və sonra bəzi bayraqları etmək olacaq. 223 00:13:56,960 --> 00:14:01,220 İndi biz, həqiqətən, qayğı yoxdur İndi bu bayraqları hər hansı 224 00:14:01,220 --> 00:14:04,560 ancaq bir şey etmək istəyirdi kimi tam ekran pəncərə etmək, 225 00:14:04,560 --> 00:14:07,920 ki, bir göz bilər. 226 00:14:07,920 --> 00:14:13,190 İndi, biz yalnız olacaq bu xüsusi sərvətlərdən istifadə etmək, 227 00:14:13,190 --> 00:14:18,775 SDL pəncərə plus mərkəzi məqsədilə x və y 228 00:14:18,775 --> 00:14:21,800 yalnız pəncərə yaratmaq Bizim ekranın mərkəzində. 229 00:14:21,800 --> 00:14:24,370 >> Belə ki, bunu nə var. 230 00:14:24,370 --> 00:14:27,960 Və pəncərə olmaq olur null, bir səhv var, yəni, 231 00:14:27,960 --> 00:14:32,570 sonra yenidən biz yalnız olacaq SDL get səhv istifadə səhv çap. 232 00:14:32,570 --> 00:14:36,570 Və sonra biz başlatılmış çünki SDL, biz indi bağlamaq lazımdır. 233 00:14:36,570 --> 00:14:40,900 Beləliklə, biz SDL əvvəl çıxmaq zəng əsas üçün bir qaytarılması. 234 00:14:40,900 --> 00:14:42,905 >> Beləliklə, biz bu pəncərə inşallah açmaq. 235 00:14:42,905 --> 00:14:44,613 Və biz nə olacaq gedirik nə etmək 236 00:14:44,613 --> 00:14:50,340 5000 ms üçün SDL zəng etmək üçün, olan beş saniyə kimi eyni. 237 00:14:50,340 --> 00:14:55,640 Və biz ki Bitirdiğinizde, Bu pəncərə məhv olacaq, 238 00:14:55,640 --> 00:14:59,470 , SDL kitabxana təmizləmək və proqram çıxmaq. 239 00:14:59,470 --> 00:15:05,240 Belə ki, irəli getmək və bir shot vermək bildirin. 240 00:15:05,240 --> 00:15:08,660 >> Belə ki, indi əvəzinə dəyişən makefile hər zaman, 241 00:15:08,660 --> 00:15:12,180 Mən sadəcə etmək və edə bilərsiniz sonra command line, 242 00:15:12,180 --> 00:15:16,090 mənbələri bərabərdir və sonra demək biz tərtib edirik file. 243 00:15:16,090 --> 00:15:17,090 Belə ki, hello2_window.c var. 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 No Erros. 247 00:15:22,970 --> 00:15:26,085 İndi bizim yürütülebilir run əgər, bu pəncərə görəcəksiniz. 248 00:15:26,085 --> 00:15:27,960 İndi bir neçə var pəncərə ilə problemləri. 249 00:15:27,960 --> 00:15:32,820 Biz bunu ətrafında hərəkət edə bilər, lakin o, var Bunun içərisində bu background köhnə əşyalar. 250 00:15:32,820 --> 00:15:34,660 Beləliklə, biz tərtib deyil bir şey, və bu 251 00:15:34,660 --> 00:15:38,210 zibil, yalnız tam olan olduqca çox biz gözləmək nə. 252 00:15:38,210 --> 00:15:41,010 >> Bundan əlavə, biz pəncərə bağlaya bilməz. 253 00:15:41,010 --> 00:15:44,780 Mən bu X basaraq alıram künc və heç bir şey baş. 254 00:15:44,780 --> 00:15:47,840 Beləliklə, biz düzeltmek üçün necə görürsünüz bir az edir. 255 00:15:47,840 --> 00:15:51,750 Belə ki, iştirak düzeltmek bildirin harada pəncərə ilk zibil doludur. 256 00:15:51,750 --> 00:16:00,850 Beləliklə, biz hello3_image.c üzərində getmək əgər, nə Biz bir neçə əlavə etdik olduğunu görə bilərsiniz 257 00:16:00,850 --> 00:16:03,360 Burada daha çox şeylər. 258 00:16:03,360 --> 00:16:08,740 Biz bu yeni mövzu əlavə etdik timer funksiyaları almaq üçün fayl. 259 00:16:08,740 --> 00:16:11,490 Düşünürəm ki, biz son etdi tapmaq bir çox və mən qeyd etməyib. 260 00:16:11,490 --> 00:16:13,550 Amma indi biz istəyirik, çünki şəkillər ilə iş, 261 00:16:13,550 --> 00:16:18,720 biz SDL daxil etmək lazımdır image header file həmçinin. 262 00:16:18,720 --> 00:16:22,087 Belə ki, eyni şey kimi deyil əvvəl, burada SDL başlatılıyor, 263 00:16:22,087 --> 00:16:23,420 Windows yaradılması ilə eyni şey. 264 00:16:23,420 --> 00:16:25,380 Biz indi əvvəl gördüm. 265 00:16:25,380 --> 00:16:29,870 >> İndi biz deyilən bir şey yaratmaq lazımdır sort yanaşı gedir bir Renderer, 266 00:16:29,870 --> 00:16:30,800 pəncərə ilə. 267 00:16:30,800 --> 00:16:33,860 Amma bu bir növ var mücərrəd object 268 00:16:33,860 --> 00:16:37,370 Bütün bu bunu məsul pəncərə əməliyyatları rəsm. 269 00:16:37,370 --> 00:16:41,580 Və bu, həqiqətən uyğundur dolu bir proqram 270 00:16:41,580 --> 00:16:47,880 qrafik hardware daxil edin kompüter və ya telefon və ya hər hansı. 271 00:16:47,880 --> 00:16:51,005 Belə ki, biz istəyirik bayraqları pseudocode keçmək və sənədlərin baxmaq olar 272 00:16:51,005 --> 00:16:56,160 burada gedir daha ətraflı üçün SDL, sürət hala ediləcək olan 273 00:16:56,160 --> 00:16:58,550 Bu olacaq deməkdir qrafik hardware istifadə 274 00:16:58,550 --> 00:17:01,490 və yalnız proqram emulated deyil. 275 00:17:01,490 --> 00:17:07,390 >> Və biz istifadə etmək olacaq SDL Renderer PRESENTVSYNC. 276 00:17:07,390 --> 00:17:12,280 VSYNC sadəcə edir ki, bir şey qrafik daha yaxşı və qarşısını alır baxmaq 277 00:17:12,280 --> 00:17:14,970 Bu şey deyilən ekran terror, burada yarım 278 00:17:14,970 --> 00:17:17,720 növbəti bir çərçivə və yarım çərçivəsində eyni zamanda tərtib almaq 279 00:17:17,720 --> 00:17:20,056 və bu dəhşətli görünür. 280 00:17:20,056 --> 00:17:23,130 Ancaq yenə də, oxumaq getmək bilər Öz barədə. 281 00:17:23,130 --> 00:17:24,319 >> Beləliklə, biz burada bəzi bayraqları var. 282 00:17:24,319 --> 00:17:27,810 Və belə ki, biz yalnız zəng olacaq bu funksiya SDL Renderer yaradır. 283 00:17:27,810 --> 00:17:31,340 Biz bu pəncərə vermək olacaq ki Renderer şərik. 284 00:17:31,340 --> 00:17:34,520 Mənfi biz nə qayğı yoxdur deməkdir qrafik sürücü istifadə etmək olacaq. 285 00:17:34,520 --> 00:17:36,603 Belə ki, olduqca çox olmalıdır həmişə mənfi biri ola, 286 00:17:36,603 --> 00:17:39,010 Siz qrafik sürücülər haqqında bilirik halda. 287 00:17:39,010 --> 00:17:41,650 Və sonra biz yalnız olacaq bu bizim bayraqları keçmək. 288 00:17:41,650 --> 00:17:47,240 Ki null qaytarır əgər, sonra biz istəyirik həmişə olduğu kimi səhv çap olacaq, 289 00:17:47,240 --> 00:17:49,550 lakin sonra biz də olacaq pəncərə məhv 290 00:17:49,550 --> 00:17:54,970 əvvəlkilərə resursları təmizləmək SDL çıxmaq zəng və qaytarılması. 291 00:17:54,970 --> 00:17:58,110 >> İndi maraqlı hissəsi burada Biz resim yüklemek harada 292 00:17:58,110 --> 00:18:00,870 bu funksiya IMG_load istifadə edərək. 293 00:18:00,870 --> 00:18:04,050 Bu gedirik yalnız funksiyası SDL image kitabxana istifadə etmək. 294 00:18:04,050 --> 00:18:05,480 Bu ehtiyac yalnız biri. 295 00:18:05,480 --> 00:18:12,950 Bu simli edir bir funksiyası var ki, hər hansı bir görüntü resurs yoludur. 296 00:18:12,950 --> 00:18:18,024 Və bir png ola bilər, bir GIF, bitmap, bu şeylər hər hansı. 297 00:18:18,024 --> 00:18:19,690 Bu funksiya belə gözəl ki, var. 298 00:18:19,690 --> 00:18:22,560 Bu olduqca çox hər hansı bir format idarə edə bilərsiniz. 299 00:18:22,560 --> 00:18:27,240 Yaddaş və mağazalar onu yük onu bir şey bir SDL səthi adlı kimi. 300 00:18:27,240 --> 00:18:34,660 >> İndi SDL yerüstü sadəcə bir struct var ki, yaddaş image data təmsil edir. 301 00:18:34,660 --> 00:18:38,054 Belə ki, haqqında daha ətraflı oxuya bilərsiniz sənədlərin iki edir. 302 00:18:38,054 --> 00:18:40,720 Bu səhvlər, onda biz istəyirik bütün şey burada edəcəyimiz 303 00:18:40,720 --> 00:18:44,480 biz səhv çap yaxın resursları, və sonra proqram çıxmaq. 304 00:18:44,480 --> 00:18:48,970 İndi maraqlı bir şey əvvəl, biz pəncərə bu image cəlb edə bilər 305 00:18:48,970 --> 00:18:51,390 biz, həqiqətən, bir faktura etmək lazımdır. 306 00:18:51,390 --> 00:18:54,460 İndi bir faktura uyğundur dolu image data 307 00:18:54,460 --> 00:18:57,820 qrafik hardware yaddaş daxil. 308 00:18:57,820 --> 00:19:00,720 >> Belə ki, bir səth əsas deyil yaddaş, müntəzəm yaddaş 309 00:19:00,720 --> 00:19:05,550 biz bütün dövr istifadə etdik ki, və bir faktura bu ayrı VRAM edir 310 00:19:05,550 --> 00:19:09,410 Yaddaş qrafik kartı nəzarət edir. 311 00:19:09,410 --> 00:19:13,170 Beləliklə, biz bu funksiyası zəng SDL_CreateTextureFromSurface. 312 00:19:13,170 --> 00:19:17,104 Biz bunu bizim Renderer və yerüstü verir. 313 00:19:17,104 --> 00:19:19,020 Və sonra biz həqiqətən istəyirik səthi ilə aparılır, 314 00:19:19,020 --> 00:19:20,311 belə ki, biz yalnız azad olacaq. 315 00:19:20,311 --> 00:19:22,210 Biz artıq buna ehtiyac yoxdur. 316 00:19:22,210 --> 00:19:26,650 Və sonra bu zəng əgər belə errored və null döndü, 317 00:19:26,650 --> 00:19:29,630 sonra biz bütün nə olacaq yenidən şey hesabat səhv. 318 00:19:29,630 --> 00:19:30,920 >> Oldu. 319 00:19:30,920 --> 00:19:34,810 Burada bəzi almaq faktiki göstərilməsi funksiyaları. 320 00:19:34,810 --> 00:19:37,730 Belə ki, SDL_RenderClear zəng və keçən 321 00:19:37,730 --> 00:19:42,550 Bizim pəncərə ilə bağlı Renderer sadəcə pəncərə qara getmək edir. 322 00:19:42,550 --> 00:19:47,650 Belə ki, junk biz gördük ki, rədd Bizim pəncərə əvvəl və qara edir. 323 00:19:47,650 --> 00:19:50,750 Və sonra biz gedirik SDL_RenderCopy zəng etmək üçün, 324 00:19:50,750 --> 00:19:53,010 bu bizim Renderer bizim faktura verir. 325 00:19:53,010 --> 00:19:55,800 Və biz haqqında danışmaq lazımdır nə bu sahələrdə bir az var. 326 00:19:55,800 --> 00:19:57,830 Amma ki, olacaq faktura məlumat almaq 327 00:19:57,830 --> 00:20:03,100 və üzərində surəti bizim pəncərə image cəlb etmək. 328 00:20:03,100 --> 00:20:07,020 Biz bu surəti etdik sonra belə Bizim pəncərə üzərində data, 329 00:20:07,020 --> 00:20:11,180 biz bu əlavə funksiyası nə etmək lazımdır SDL_RenderPresent çağırıb. 330 00:20:11,180 --> 00:20:15,360 >> Bu maraqlıdır bu olur, çünki 331 00:20:15,360 --> 00:20:18,770 ikiqat buffering adlı mövzu daxil. 332 00:20:18,770 --> 00:20:24,380 Belə ki, ikiqat buffering bir texnikadır ki, qrafik çox yaxşı baxmaq edir. 333 00:20:24,380 --> 00:20:28,240 Yenə, bu ekran qoparmaq qarşısını alır Mən burada əvvəllər söhbət 334 00:20:28,240 --> 00:20:29,590 iki buferlər var. 335 00:20:29,590 --> 00:20:32,260 Geri bufer var yaddaş və ön bufer. 336 00:20:32,260 --> 00:20:36,410 ön bufer sözün nə anda ekranda var. 337 00:20:36,410 --> 00:20:42,070 Beləliklə, biz bu varyasyonları cəlb bütün etmək, SDL kimi surəti və ya SDL_RenderClear göstərmək 338 00:20:42,070 --> 00:20:43,080 geri bufer. 339 00:20:43,080 --> 00:20:44,800 Belə ki, onlar hər şeyi dəyişdirmək geri bufer. 340 00:20:44,800 --> 00:20:48,970 Burada biz bu rəsm ola bilər geri bufer yaşıl kvadrat. 341 00:20:48,970 --> 00:20:52,300 >> Belə ki, sonra biz bunu Bitirdiğinizde Bizim göstərməyə əməliyyatı 342 00:20:52,300 --> 00:20:55,700 həqiqətən uzun bilər vaxt, biz nə olacaq 343 00:20:55,700 --> 00:20:57,860 buferlər keçid edir. 344 00:20:57,860 --> 00:21:00,720 Belə ki, sözün yalnız edir ön bufer və geri bufer 345 00:21:00,720 --> 00:21:02,990 və beləliklə, onları keçir ki, dərhal, 346 00:21:02,990 --> 00:21:06,630 bir əməliyyat yerinə bəlkə yüzlərlə və ya minlərlə, 347 00:21:06,630 --> 00:21:10,910 bizim yeni göstərilən bütün obyektlərin ekran var. 348 00:21:10,910 --> 00:21:13,160 Bu şeyi qarşısını alır ekran sərinləşdirici kimi 349 00:21:13,160 --> 00:21:16,710 biz yalnız tərtib etdik yarım çərçivəsində üçün obyektlərin. 350 00:21:16,710 --> 00:21:21,280 Biz zəng etmək lazımdır nə ki, var SDL_RenderPresent, eləcə də 351 00:21:21,280 --> 00:21:23,320 SDL_RenderCopy kimi. 352 00:21:23,320 --> 00:21:25,749 >> Yenə biz yalnız olacaq Beş saniyə gözləyin. 353 00:21:25,749 --> 00:21:27,540 Sonra biz olacaq resurslarımızı təmizləmək. 354 00:21:27,540 --> 00:21:29,540 Biz daha bir neçə bu vaxt var. 355 00:21:29,540 --> 00:21:31,750 Və sonra biz yalnız olacaq proqram çıxmaq üçün. 356 00:21:31,750 --> 00:21:35,350 Belə ki, nə edək. 357 00:21:35,350 --> 00:21:41,880 Mən mənbələri etmək yazın gedir, sonra alıram salam bu artıq 3image.c bərabərdir. 358 00:21:41,880 --> 00:21:49,632 359 00:21:49,632 --> 00:21:52,240 Bütün hüquqlar, heç bir səhvlər tərtib. 360 00:21:52,240 --> 00:21:57,210 Və burada baxa bilərsiniz İndi var Mənim şəkil tərtib, Salam, CS50! 361 00:21:57,210 --> 00:22:00,560 pəncərə, olan beş saniyə sonra itir. 362 00:22:00,560 --> 00:22:02,090 >> İndi bu hələ sağ, problem var? 363 00:22:02,090 --> 00:22:05,750 Bu yaxşı bir proqram deyil, Mən pəncərə yaxın cəhd zaman, çünki 364 00:22:05,750 --> 00:22:06,500 heç bir şey olmaz. 365 00:22:06,500 --> 00:22:09,540 Ki, x hələ cavab deyil. 366 00:22:09,540 --> 00:22:17,420 Belə ki, bir nəzər salaq növbəti fayl hello4animation. 367 00:22:17,420 --> 00:22:21,850 Belə ki, bu fayl ki, təqdim olacaq 368 00:22:21,850 --> 00:22:25,124 Bizim image hərəkət və hərəkət. 369 00:22:25,124 --> 00:22:27,040 Belə ki, biz nə olacaq Eyni şey əvvəlki kimi, 370 00:22:27,040 --> 00:22:30,190 SDL başlamaq yaratmaq pəncərə, Renderer yaratmaq 371 00:22:30,190 --> 00:22:33,030 daxil image yüklemek yaddaş, faktura yaradır. 372 00:22:33,030 --> 00:22:35,090 Biz əvvəl ki, bütün gördüm. 373 00:22:35,090 --> 00:22:36,770 İndi bu yeni. 374 00:22:36,770 --> 00:22:42,305 Biz bir quruluş çağırıb olacaq yalnız bir düzbucaqlı bir SDL rect. 375 00:22:42,305 --> 00:22:49,950 Biz burada getmək varsa, biz SDL rect üçün axtarış, 376 00:22:49,950 --> 00:22:54,040 və siz bir görmək olar çox sadə strukturu. 377 00:22:54,040 --> 00:22:56,760 Bu x, bir y üçün var mövqe və bu, 378 00:22:56,760 --> 00:23:02,080 eni və hündürlüyü üçün var düzbucaqlı ölçüsü. 379 00:23:02,080 --> 00:23:07,785 >> Belə ki, biz istəyirik nə biz nə olacaq edir Bu SDL rect Hedef müəyyən gedir, 380 00:23:07,785 --> 00:23:09,480 təyinat üçün. 381 00:23:09,480 --> 00:23:14,130 Bu yer harada ekranda 382 00:23:14,130 --> 00:23:16,005 biz rəsm olacaq Bizim image sağ So 383 00:23:16,005 --> 00:23:17,880 biz olacaq, əgər ətrafında image hərəkət, 384 00:23:17,880 --> 00:23:20,300 onda təyinat harada biz image cəlb edirik 385 00:23:20,300 --> 00:23:22,620 ətrafında hərəkət etmək lazımdır. 386 00:23:22,620 --> 00:23:24,910 Beləliklə, biz bu zəng olacaq funksiyası SDL_QueryTexture. 387 00:23:24,910 --> 00:23:27,550 388 00:23:27,550 --> 00:23:33,500 Mən Ünvan keçən alıram qeyd dest.w olan, eni olan, 389 00:23:33,500 --> 00:23:36,950 və dest.h, hündürlüyü olan. 390 00:23:36,950 --> 00:23:40,425 Və belə SDL_QueryTexture gedir width həmin sahələrdə saxlamaq üçün 391 00:23:40,425 --> 00:23:41,675 və faktura hündürlüyü. 392 00:23:41,675 --> 00:23:44,680 393 00:23:44,680 --> 00:23:47,030 >> Və sonra mən gedirəm nə Mən gedirəm nə etmək 394 00:23:47,030 --> 00:23:55,580 dest.x olmaq üçün pəncərə təyin etmək eni minus dest.w, 395 00:23:55,580 --> 00:23:59,000 2 bölünür sprite eni. 396 00:23:59,000 --> 00:24:03,860 Və bu onu qurmaq niyyətindədir image mükəmməl mərkəzi ki, 397 00:24:03,860 --> 00:24:06,780 Bizim pəncərə, bütün sağ? 398 00:24:06,780 --> 00:24:08,652 Belə ki, indi mən bir y mövqeyi var. 399 00:24:08,652 --> 00:24:10,360 Bu gedir bir dəyişən ola 400 00:24:10,360 --> 00:24:16,390 biz olacaq, çünki dəyişən y istiqamətdə image hərəkət. 401 00:24:16,390 --> 00:24:19,050 İndi biz bir şey var bir animasiya loop çağırıb. 402 00:24:19,050 --> 00:24:21,180 >> Belə ki, necə animasiya işləyir? 403 00:24:21,180 --> 00:24:27,630 Bəli, insan gözü 12 fərqli aşkar edə bilərsiniz hər ikinci images, bütün sağ? 404 00:24:27,630 --> 00:24:33,060 Siz mənim 12 şəkil flash kartlar Belə ki ikinci, mən bu şəkillər hər gördüm 405 00:24:33,060 --> 00:24:35,950 öz fərqli fərdi image kimi. 406 00:24:35,950 --> 00:24:39,690 İndi, daha flash əgər ikinci mənə images, 407 00:24:39,690 --> 00:24:42,140 sonra mənim göz başlamaq olardı Onlara birlikdə Blur 408 00:24:42,140 --> 00:24:46,920 və mən hərəkət kimi qəbul edirəm, əvəzinə bir ayrı image. 409 00:24:46,920 --> 00:24:51,930 Belə ki, məsələn, kino və televiziya üçün, onlar 24 dəfə images flash 410 00:24:51,930 --> 00:24:52,570 ikinci. 411 00:24:52,570 --> 00:24:55,110 Belə ki, saniyədə 24 çərçivələri var. 412 00:24:55,110 --> 00:25:00,136 Kompüter ekran, digər tərəfdən, tez-tez saniyədə 60 kadr var. 413 00:25:00,136 --> 00:25:01,260 Bu onların Yenile sürəti var. 414 00:25:01,260 --> 00:25:04,650 Yəni onlar yenileyin necə tez-tez var ekranda şəkil. 415 00:25:04,650 --> 00:25:08,960 Belə ki, bizim hədəf 60 olacaq oyun üçün saniyədə çərçivəsində. 416 00:25:08,960 --> 00:25:11,770 417 00:25:11,770 --> 00:25:13,710 >> Belə ki, kodu ki, görək. 418 00:25:13,710 --> 00:25:19,064 Hər bir çərçivə üçün, belə ki, biz ilk edirik pəncərə təmizləmək üçün gedir. 419 00:25:19,064 --> 00:25:20,230 Bu ümumi nümunəsidir. 420 00:25:20,230 --> 00:25:22,450 Siz həmişə aydın pəncərə hər çərçivəsində və sonra 421 00:25:22,450 --> 00:25:25,210 rəsm hər şeyi əməliyyatları və sonra sonunda, 422 00:25:25,210 --> 00:25:29,610 RenderPresent göstərmək yoxdur çərçivəsində hər şey. 423 00:25:29,610 --> 00:25:33,910 Və sonra olacaq sonunda gözləmə var 424 00:25:33,910 --> 00:25:36,340 növbəti qədər gözləyin frame başlamaq lazımdır. 425 00:25:36,340 --> 00:25:38,650 >> Mən bir çox edirdi Belə ki burada kompleks hesablama 426 00:25:38,650 --> 00:25:43,100 ki, artıq 16 ms etdi, Bu, mənim üçün qeyri-mümkün olardı 427 00:25:43,100 --> 00:25:46,890 60 ki çərçivəsində dərəcəsi almaq üçün Hər çərçivəsində, çünki mən istədim 428 00:25:46,890 --> 00:25:48,750 hesablamaq üçün çox uzun alaraq. 429 00:25:48,750 --> 00:25:52,340 Bundan əlavə, biz, həqiqətən edirik iş cüzi məbləğ sort 430 00:25:52,340 --> 00:25:54,820 burada yalnız var, çünki biz rəsm edirik bir şey. 431 00:25:54,820 --> 00:25:59,390 Mən yalnız bir 1/60 gözləyin ikinci, uzunluğu olan 432 00:25:59,390 --> 00:26:01,520 çərçivəsində arasında bir çərçivə. 433 00:26:01,520 --> 00:26:05,610 Belə ki, I növ bunu iddia edirəm bütün iş sıfır zaman alır. 434 00:26:05,610 --> 00:26:09,050 Amma real oyun, Siz çıxmaq istiyorum 435 00:26:09,050 --> 00:26:13,760 vaxt məbləği bunu etdi Sizin qalan zaman bütün bu işlər. 436 00:26:13,760 --> 00:26:16,970 >> Belə ki, hər halda, mən nə edirəm həqiqətən bu loop bunu? 437 00:26:16,970 --> 00:26:19,070 Mən pəncərə sil. 438 00:26:19,070 --> 00:26:27,470 Mən bir int edir dest.y müəyyən mənim faktiki y mövqeyi int atıldıqları. 439 00:26:27,470 --> 00:26:32,070 İndi qərar üzmək istəyirəm mənim oyun mənim y mövqe üçün, 440 00:26:32,070 --> 00:26:34,150 lakin sonra həqiqətən ekran üzərinə çəkmək, 441 00:26:34,150 --> 00:26:39,070 Bu ədəd var, çünki bu, ints lazımdır piksel, belə ki, tökmə üçün nə. 442 00:26:39,070 --> 00:26:41,745 Mən şəkil çəkmək üçün gedirəm. 443 00:26:41,745 --> 00:26:45,180 Belə ki, bu mənbə düzbucaqlı edir. 444 00:26:45,180 --> 00:26:47,060 Bu təyinat düzbucaqlı edir. 445 00:26:47,060 --> 00:26:50,310 Belə ki, mən null keçdi mənbə düzbucaqlı 446 00:26:50,310 --> 00:26:53,426 Mən bütün faktura çəkmək istəyirəm demək. 447 00:26:53,426 --> 00:26:55,300 Amma əgər bir çox idi Sizin oyun doku 448 00:26:55,300 --> 00:26:59,120 Onlar böyük bir faktura xəritədə bütün istəyirik ki, yalnız bir kimi SDL daxil yükləndi 449 00:26:59,120 --> 00:27:02,850 faktura, siz ola bilər mənbə düzbucaqlı istifadə 450 00:27:02,850 --> 00:27:06,750 kiçik doku bir seçmək üçün, kiçik sprites biri, 451 00:27:06,750 --> 00:27:09,450 böyük toxuması xəritəsi edir. 452 00:27:09,450 --> 00:27:14,740 >> Belə ki, yenə, mən göstərmək keçən alıram, mənim faktura, indi təyinat. 453 00:27:14,740 --> 00:27:18,320 Bu harada olacaq pəncərə tərtib olacaq. 454 00:27:18,320 --> 00:27:21,390 Və sonra, mən canlandırmanın edirəm, çünki bir şey, mən hərəkət lazımdır, 455 00:27:21,390 --> 00:27:25,150 Mən yenilənməsi olacaq gedirəm Hər çərçivəsində sprite mövqe. 456 00:27:25,150 --> 00:27:30,190 Mən bu daimi adlı gedin var saniyədə piksel ədəd sürətləndirmək. 457 00:27:30,190 --> 00:27:34,320 İndi biz bir hərəkət etmək hər zaman, Frame yalnız 1/60 ikinci edir. 458 00:27:34,320 --> 00:27:36,740 Beləliklə, mən 60 ki, bölmək üçün gedirəm. 459 00:27:36,740 --> 00:27:42,350 Və sonra, mən, görək y mövqe ki, subtracting. 460 00:27:42,350 --> 00:27:44,470 Niyə çıxarılaraq edirəm? 461 00:27:44,470 --> 00:27:46,169 Biz ikinci almaq lazımdır. 462 00:27:46,169 --> 00:27:48,460 Beləliklə, mən resursları təmizləmək və proqram artıq var. 463 00:27:48,460 --> 00:27:49,830 >> Belə ki edək. 464 00:27:49,830 --> 00:27:52,450 465 00:27:52,450 --> 00:28:03,570 Belə ki, markası SRC = hello4 daxil gedək animation.c, bütün sağ? 466 00:28:03,570 --> 00:28:05,720 Game. 467 00:28:05,720 --> 00:28:06,770 Burada getmək. 468 00:28:06,770 --> 00:28:12,690 Beləliklə, mən bu qədər scrolling var olduqca səliqəlidir pəncərə. 469 00:28:12,690 --> 00:28:17,110 Amma subtracting edilib keçirilməsi y mövqeyi hər zaman. 470 00:28:17,110 --> 00:28:18,910 Orada nələr olur? 471 00:28:18,910 --> 00:28:24,010 Yaxşı, ki, SDL çıxır və əslində, ən kompüter qrafikası, 472 00:28:24,010 --> 00:28:28,890 koordinat sistemi üçün mənşəli pəncərə sol üst edir. 473 00:28:28,890 --> 00:28:34,960 >> Belə ki, müsbət x istiqamətdə gedir sağ üçün pəncərə arasında. 474 00:28:34,960 --> 00:28:38,110 Və müsbət y istiqamətdə həqiqətən aşağı gedir. 475 00:28:38,110 --> 00:28:40,470 Belə ki, yenə, mənşəyi nin pəncərə sol üst, 476 00:28:40,470 --> 00:28:46,190 müsbət y istiqaməti, aşağı və müsbət x sağ üçün edir. 477 00:28:46,190 --> 00:28:48,770 Beləliklə, mən çıxmaq zaman y mövqeyi, ki 478 00:28:48,770 --> 00:28:52,640 mənfi getmək etmək niyyətindədir pəncərə qədər y istiqamətdə. 479 00:28:52,640 --> 00:28:55,500 Belə ki, orada neler var. 480 00:28:55,500 --> 00:28:56,510 Cool. 481 00:28:56,510 --> 00:28:59,240 >> Növbəti fayl baxaq. 482 00:28:59,240 --> 00:29:05,700 Burada bir hissəsidir burada nəhayət biz 483 00:29:05,700 --> 00:29:08,920 pəncərə küncündə ki, X almaq ki, pəncərə bağlamaq üçün nəzərdə 484 00:29:08,920 --> 00:29:10,660 işləmək. 485 00:29:10,660 --> 00:29:12,800 Belə ki, nə olub? 486 00:29:12,800 --> 00:29:17,520 Biz pəncərə yaratmaq, SDL başlamaq , Renderer yaratmaq resim yüklemek, 487 00:29:17,520 --> 00:29:19,770 faktura yaratmaq kimi biz əvvəl gördüm. 488 00:29:19,770 --> 00:29:26,850 Biz eyni təyinat düzbucaqlı var əvvəlki kimi eyni zəng faktura sorğu. 489 00:29:26,850 --> 00:29:29,780 Amma bu dəfə biz sonra istəyirik eni bölmək gedir 490 00:29:29,780 --> 00:29:33,110 və 4 təyinat hündürlüyü. 491 00:29:33,110 --> 00:29:36,430 Bu yalnız təsiri var Bizim image zaman scaling 492 00:29:36,430 --> 00:29:39,884 biz dörd pəncərə göstərilir. 493 00:29:39,884 --> 00:29:40,800 Belə ki, olduqca səliqəli var. 494 00:29:40,800 --> 00:29:42,770 Biz yalnız yalnız kimi miqyaslı bilər. 495 00:29:42,770 --> 00:29:45,970 Biz sprite başlamaq olacaq Ekranın mərkəzində. 496 00:29:45,970 --> 00:29:49,410 Və indi biz x və y sürət və var onlar həm də sıfır başlamaq olacaq. 497 00:29:49,410 --> 00:29:53,740 498 00:29:53,740 --> 00:29:55,880 >> Bu səhv fayl. 499 00:29:55,880 --> 00:29:56,380 Bağışlayın. 500 00:29:56,380 --> 00:29:57,960 Belə ki, bütün doğru. 501 00:29:57,960 --> 00:30:00,170 Yəni bu fayl bütün hələ də var. 502 00:30:00,170 --> 00:30:03,210 Biz 4 və hər şey ilə bölmək lazımdır. 503 00:30:03,210 --> 00:30:07,830 Belə ki, burada biz x və y mövqe var pəncərə mərkəzi. 504 00:30:07,830 --> 00:30:12,480 Və biz ilkin sürət vermək bu daimi sürəti, hansı 505 00:30:12,480 --> 00:30:15,180 Mən saniyədə 300 piksel inanıram. 506 00:30:15,180 --> 00:30:19,850 İndi biz bu int kimi də bilər var yaxın tələb adlı boolean ola bilər. 507 00:30:19,850 --> 00:30:23,970 Əvəzinə bir bunu Burada bir timer sonsuz loop, 508 00:30:23,970 --> 00:30:29,180 biz canlandırmanın olacaq yaxın kimi uzun tələb deyil. 509 00:30:29,180 --> 00:30:30,960 >> Belə ki, necə biz hadisələr emal edirsiniz? 510 00:30:30,960 --> 00:30:35,600 Yaxşı, SDL bir hadisələr sıralarında qədər pərdə arxasında hərfi queue. 511 00:30:35,600 --> 00:30:38,860 Və sonra hər çərçivəsində, biz hadisələr dequeue bilər 512 00:30:38,860 --> 00:30:43,900 istifadə edərək növbə Bu zəng SDL_PullEvent. 513 00:30:43,900 --> 00:30:46,730 Və yenə, mütləq oxumaq getmək sənədlərin bu barədə. 514 00:30:46,730 --> 00:30:50,450 Daha çox ətraflı və bir çox var daha çox funksiyaları bu ilə istifadə edə bilərsiniz. 515 00:30:50,450 --> 00:30:54,750 Biz ünvanı keçmək bu şey, SDL_Event 516 00:30:54,750 --> 00:30:56,990 ki, biz burada yığını var. 517 00:30:56,990 --> 00:30:58,840 >> İndi bir SDL_event nədir? 518 00:30:58,840 --> 00:31:02,356 SDL Çünki biz baxsaq documentation-- edək 519 00:31:02,356 --> 00:31:07,580 kateqoriya, giriş tərəfindən API görmək hadisələr, hadisə user, 520 00:31:07,580 --> 00:31:15,150 Biz sayı baxmaq olar Burada müxtəlif tədbirlər 521 00:31:15,150 --> 00:31:18,600 və biz var edə bilərsiniz Onların bütün ton. 522 00:31:18,600 --> 00:31:22,150 Belə ki, bu SDL_Event şey nədir? 523 00:31:22,150 --> 00:31:28,190 524 00:31:28,190 --> 00:31:31,107 SDL_Event bir birliyidir. 525 00:31:31,107 --> 00:31:31,940 Wow, bir birlik var? 526 00:31:31,940 --> 00:31:33,910 Siz yəqin ki, heç vaxt var əvvəl ki, eşitdim. 527 00:31:33,910 --> 00:31:35,610 Və OK. 528 00:31:35,610 --> 00:31:39,420 >> A ittifaqı cür kimi bir struct başqa struct, 529 00:31:39,420 --> 00:31:41,960 bütün bir yer var onun sahələri və yaddaş, 530 00:31:41,960 --> 00:31:45,060 birliyi yalnız var halbuki kifayət qədər yer böyük uyğun 531 00:31:45,060 --> 00:31:49,660 deməkdir öz yataqlarından biri, yalnız sahələrdən biri bilərsiniz 532 00:31:49,660 --> 00:31:52,830 bir zamanda hansı növ sağ, hadisələr üçün əhəmiyyət kəsb edir? 533 00:31:52,830 --> 00:31:55,810 Biz klaviatura ola bilər hadisə və ya bir pəncərə hadisə, 534 00:31:55,810 --> 00:31:59,750 lakin bir hadisə həm də bir ola bilməz klaviatura hadisə və bir pəncərə hadisə, 535 00:31:59,750 --> 00:32:05,450 belə ki, üçün yer var silly olarıq Bizim hadisə birliyin daxilində o, həm də. 536 00:32:05,450 --> 00:32:07,770 Belə ki, istəyirdi öz ittifaqı yaratmaq 537 00:32:07,770 --> 00:32:10,020 Bu eyni görünür struct yaradılması kimi, 538 00:32:10,020 --> 00:32:14,140 ki, istisna olmaqla, biz birlik söz istifadə əvəzinə struct söz. 539 00:32:14,140 --> 00:32:17,490 Və bütün xatırlayıram Sizin birliyin daxilində hər şeyi, 540 00:32:17,490 --> 00:32:22,020 birlik faktiki dəyişən yalnız dəyərlərdən biri ola bilər 541 00:32:22,020 --> 00:32:24,780 bir anda. 542 00:32:24,780 --> 00:32:29,940 >> Belə ki, necə biz hadisənin nə cür deyə bilərsiniz biz yalnız bu queue off atdı? 543 00:32:29,940 --> 00:32:33,370 Yaxşı, biz event.type üçün test edə bilərsiniz. 544 00:32:33,370 --> 00:32:35,792 Və bərabər olduqda SDL_Quit, biz bilirik 545 00:32:35,792 --> 00:32:37,500 Bu hadisə ki, zaman biz istehsal edilmişdir 546 00:32:37,500 --> 00:32:39,510 pəncərə küncündə ki, X edib. 547 00:32:39,510 --> 00:32:44,270 Və yaxın tələb müəyyən edə biz 1 bərabərdir. 548 00:32:44,270 --> 00:32:47,230 Qalan yalnız bir animasiya əvvəl gördüm ki. 549 00:32:47,230 --> 00:32:52,802 Belə ki, irəli getmək və edək Bu və bu işləri necə görmək. 550 00:32:52,802 --> 00:32:55,135 Belə ki, mən yazın gedirəm və sonra SRC = hello5_events.c. 551 00:32:55,135 --> 00:33:03,760 552 00:33:03,760 --> 00:33:04,770 Biz orada getmək. 553 00:33:04,770 --> 00:33:05,780 Oyunlar. 554 00:33:05,780 --> 00:33:08,920 >> İndi biz o bilərsiniz Həqiqətən dörd aşağı miqyaslı. 555 00:33:08,920 --> 00:33:10,360 Və indi ətrafında dönen oldu. 556 00:33:10,360 --> 00:33:14,630 Mən bəzi toqquşma aşkarlanması var pəncərə tərəflər ilə davam 557 00:33:14,630 --> 00:33:16,840 biz nəzər bilər. 558 00:33:16,840 --> 00:33:21,190 Mən bunu bağlamaq üçün getmək zaman və nə olur? 559 00:33:21,190 --> 00:33:22,120 Bu bağlayır. 560 00:33:22,120 --> 00:33:22,740 Fantastic. 561 00:33:22,740 --> 00:33:24,290 Biz bu hadisəni qəbul edib. 562 00:33:24,290 --> 00:33:26,630 Və biz bunu ele. 563 00:33:26,630 --> 00:33:30,730 >> Belə ki, kodu geri baxmaq imkan verir. 564 00:33:30,730 --> 00:33:33,020 Belə ki, mən onu necə əldə etdiniz kimi ətrafında dönen? 565 00:33:33,020 --> 00:33:37,200 Unutmayın mən də x qurmaq və ilkin sürəti y. 566 00:33:37,200 --> 00:33:39,260 Və sürətli bir müsbət daimi, belə ki 567 00:33:39,260 --> 00:33:42,680 Bu gedən başlanğıc almaq üçün aşağı və doğru gedir. 568 00:33:42,680 --> 00:33:45,680 569 00:33:45,680 --> 00:33:50,310 >> İndi user əlavə hər çərçivəsində, meydana gəlmiş ola bilər hər hansı bir hadisə, 570 00:33:50,310 --> 00:33:57,520 Mən sprite olmadığını aşkar etmək üçün gedirəm pəncərə çıxmaq üçün çalışır. 571 00:33:57,520 --> 00:34:03,610 Belə ki, biz yalnız yoxlanılması ilə bunu edə bilərsiniz 0 ilə x_pos, onda y_pos 0, və 572 00:34:03,610 --> 00:34:07,370 də x_pos və y_pos ilə pəncərə eni və pəncərə hündürlüyü. 573 00:34:07,370 --> 00:34:11,010 Mən çıxılacaq sonra edək sprite eni. 574 00:34:11,010 --> 00:34:14,090 Mən əgər, çünki bu sprite eni çıxmaq, 575 00:34:14,090 --> 00:34:17,760 yalnız yoxlamaq olardı sprite mənşəyi 576 00:34:17,760 --> 00:34:19,690 pəncərə xaricində getmədi. 577 00:34:19,690 --> 00:34:21,480 Amma biz bütün istəyirəm sprite eni 578 00:34:21,480 --> 00:34:24,030 həmişə pəncərənin daxilində olmaq və sprite bütün hündürlüyü 579 00:34:24,030 --> 00:34:25,321 həmişə pəncərənin daxilində olacaq. 580 00:34:25,321 --> 00:34:27,429 Belə ki, toplama işlemi üçün nə. 581 00:34:27,429 --> 00:34:30,080 Burada həndəsə bir çox edə bilərsiniz onu cəlb etmək faydalı ola 582 00:34:30,080 --> 00:34:33,929 koordinat ilə kağız üzərində Sistem gedir nə görmək. 583 00:34:33,929 --> 00:34:38,090 >> Mən toqquşmaq əgər Belə ki, mən yalnız sadəcə mövqe sıfırlamak 584 00:34:38,090 --> 00:34:41,400 Bu niyyətində deyil, belə ki, ekran həyata. 585 00:34:41,400 --> 00:34:47,179 Sıçramalar əgər mən gedirəm sidewalls biri, 586 00:34:47,179 --> 00:34:51,469 Mən inkar gedirəm x sürət ki, bu 587 00:34:51,469 --> 00:34:53,210 digər istiqamətdə dönen başlayır. 588 00:34:53,210 --> 00:34:56,210 Və eyni, bu xit üst və ya alt, 589 00:34:56,210 --> 00:34:59,820 Mən y sürət təyin etmək üçün gedirəm mənfi y sürət bərabər, 590 00:34:59,820 --> 00:35:01,690 ki, geri sıçrayış olacaq. 591 00:35:01,690 --> 00:35:03,860 Belə ki, biz burada var nə qədər var. 592 00:35:03,860 --> 00:35:07,560 >> Və yenilənməsi vəzifələr yalnız biz əvvəl gördüm kimi 593 00:35:07,560 --> 00:35:12,510 biz istəyirik, çünki, 60 bölmək yalnız bir ikinci 1/60 user. 594 00:35:12,510 --> 00:35:15,750 Və sonra göstərilməsi, əvvəlki kimi eyni. 595 00:35:15,750 --> 00:35:19,810 Və belə ki, hər şey var Bu fayl gedirdi. 596 00:35:19,810 --> 00:35:22,490 Biz hadisələr necə ki, var. 597 00:35:22,490 --> 00:35:29,260 Əsas odur ki, burada üz etmək Bu SDL_PullEvent funksiyası var. 598 00:35:29,260 --> 00:35:33,020 Və siz mütləq oxumaq lazımdır SDL_Event haqqında sənədlər daha 599 00:35:33,020 --> 00:35:38,630 birlik, bu veri növü, çünki çox çox əhəmiyyətli, biz bunu istifadə çünki 600 00:35:38,630 --> 00:35:40,690 hadisələr bütün növləri üçün. 601 00:35:40,690 --> 00:35:46,539 >> Məsələn, biz klaviatura üçün istifadə hadisələr, hansı bu faylı üçün nə edir. 602 00:35:46,539 --> 00:35:47,330 Beləliklə, biz nə var? 603 00:35:47,330 --> 00:35:50,180 Biz əvvəlki kimi eyni şey var , SDL başlamaq bir pəncərə yaratmaq 604 00:35:50,180 --> 00:35:55,260 resim yüklemek, bir Renderer yaratmaq yaddaş, faktura yaradır. 605 00:35:55,260 --> 00:36:00,530 Yenə olacaq bu dest düzbucaqlı var, 606 00:36:00,530 --> 00:36:04,890 biz image miqyaslı olacaq dörd, bu bir az kiçik etmək. 607 00:36:04,890 --> 00:36:08,000 İndi biz başlamaq niyyətindəyik Ekranın mərkəzində sprite. 608 00:36:08,000 --> 00:36:12,090 Amma bu dəfə biz müəyyən olacaq ilkin x və sıfır y sürəti, 609 00:36:12,090 --> 00:36:15,140 klaviatura, çünki bu nəzarət olacaq. 610 00:36:15,140 --> 00:36:18,900 Və bundan əlavə, biz olacaq bu dəyişənlərin takip 611 00:36:18,900 --> 00:36:20,450 up, aşağı, sol və sağ. 612 00:36:20,450 --> 00:36:23,090 Və saxlamaq olacaq biz olub track 613 00:36:23,090 --> 00:36:27,370 klaviatura düymələri bərk ki, up, aşağı, sola uyğun, 614 00:36:27,370 --> 00:36:28,460 və sağ. 615 00:36:28,460 --> 00:36:32,440 >> İndi bu xülya növüdür biz W, A, S istifadə edə bilərsiniz, çünki, 616 00:36:32,440 --> 00:36:35,480 Burada D, və ya faktiki arrow düymələri. 617 00:36:35,480 --> 00:36:38,590 Biz yalnız bir ikinci görəcəksiniz. 618 00:36:38,590 --> 00:36:41,140 Beləliklə, biz emal olacaq əvvəl kimi hadisə. 619 00:36:41,140 --> 00:36:42,530 Biz hadisə çəkin. 620 00:36:42,530 --> 00:36:45,840 Amma indi biz olacaq Hadisə növü yandırın. 621 00:36:45,840 --> 00:36:47,710 Bu SDL_Quit varsa, biz istəyirik yaxın müəyyən olacaq 622 00:36:47,710 --> 00:36:49,990 əvvəl kimi bir tələb. 623 00:36:49,990 --> 00:36:52,315 Ki, x emal pəncərə künc, 624 00:36:52,315 --> 00:36:55,050 Bizim pəncərə həqiqətən bağlayır ki. 625 00:36:55,050 --> 00:37:00,110 >> Əks halda, biz bir SDL açarı almaq əgər aşağı biz əsas bərk deməkdir hadisə, 626 00:37:00,110 --> 00:37:04,470 sonra biz nə olacaq, biz istəyirik Burada bu şey keçid gedir, 627 00:37:04,470 --> 00:37:11,370 olan belə event.key means-- hadisə birlik müalicə deməkdir, 628 00:37:11,370 --> 00:37:15,490 getmək və əsas almaq bu hadisə strukturu. 629 00:37:15,490 --> 00:37:18,810 Belə ki, bu çıxır ki, union əsas hadisə strukturu. 630 00:37:18,810 --> 00:37:22,820 Və sonra əsas getmək Tədbirin strukturu öz sahəsində 631 00:37:22,820 --> 00:37:26,140 adlı Keysym və sonra scancode. 632 00:37:26,140 --> 00:37:29,480 Və yenə, mütləq oxumaq Bu barədə sənədlər. 633 00:37:29,480 --> 00:37:31,220 Açar söz giriş olduqca maraqlı. 634 00:37:31,220 --> 00:37:34,020 Siz scan kodları və ya əsas kodları əldə edə bilərsiniz. 635 00:37:34,020 --> 00:37:38,590 Və bu, bir az incə, lakin sənədlərin olduqca yaxşı. 636 00:37:38,590 --> 00:37:43,380 >> Biz scan kodu görsələr belə olan W və ya bizim əsas mətbuat, 637 00:37:43,380 --> 00:37:45,450 biz 1 bərabər qurmaq olacaq. 638 00:37:45,450 --> 00:37:47,240 Və sonra biz bu keçid çıxmaq. 639 00:37:47,240 --> 00:37:52,980 Bu A və ya sol varsa, biz et, 1 tərk müəyyən Cetera Et Cetera, aşağı və sağ üçün. 640 00:37:52,980 --> 00:37:57,080 İndi bu xarici keçid həyata, biz hadisəni bir əsas görürsünüzsə, 641 00:37:57,080 --> 00:38:00,730 ki, biz əsas azad etdik deməkdir və biz artıq basaraq edirik. 642 00:38:00,730 --> 00:38:05,380 Beləliklə, mən 0 bərabərdir qədər demək gedirəm, Sol sağ, aşağı, 0 bərabərdir 0 bərabərdir 643 00:38:05,380 --> 00:38:08,260 0 bərabərdir, Et Cetera. 644 00:38:08,260 --> 00:38:12,070 >> Və biz bu hər var fark iki hallarda bir-birinə doğru növbəti qoymaq 645 00:38:12,070 --> 00:38:14,490 ayrıca kodu ilə Birinci halda, hansı 646 00:38:14,490 --> 00:38:18,180 Bu olsun o deməkdir ki, S və ya burada bir aşağı, 647 00:38:18,180 --> 00:38:20,520 bu kodu icra edəcək. 648 00:38:20,520 --> 00:38:22,090 Belə ki, olduqca lazımlı deyil. 649 00:38:22,090 --> 00:38:24,830 Bu, bizə daha çox olan qarşısını alır şərtləri və ifs və hər şeyi 650 00:38:24,830 --> 00:38:26,980 bunun kimi. 651 00:38:26,980 --> 00:38:29,420 >> Belə ki, biz olacaq sürət müəyyən edir. 652 00:38:29,420 --> 00:38:31,020 Biz 0 sürət seçin. 653 00:38:31,020 --> 00:38:33,910 Sonra bərk halda və aşağı, sonra biz 654 00:38:33,910 --> 00:38:37,450 mənfi sürəti y sürət seçin. 655 00:38:37,450 --> 00:38:42,930 Mənfi xatırlayıram çünki mənfi y istiqamətdə edir. 656 00:38:42,930 --> 00:38:45,540 Və müsbət y istiqamətdə aşağı edir. 657 00:38:45,540 --> 00:38:47,510 Bərk Əgər və up, sonra biz istəyirik 658 00:38:47,510 --> 00:38:53,860 müsbət sürəti müəyyən etmək gedir, olan ekran aşağı gedir deməkdir. 659 00:38:53,860 --> 00:38:55,460 Sol və sağ ilə eyni şey. 660 00:38:55,460 --> 00:38:58,200 >> Və sonra biz yeniləmə olacaq əvvəl kimi mövqeləri. 661 00:38:58,200 --> 00:39:00,740 Biz toqquşma nə olacaq həddi ilə aşkar, 662 00:39:00,740 --> 00:39:04,290 lakin biz yenidən fikrində deyilik sürət, sürət yalnız, çünki 663 00:39:04,290 --> 00:39:06,780 klaviatura tərəfindən nəzarət. 664 00:39:06,780 --> 00:39:11,230 Amma biz yenidən gedir mövqeləri pəncərə saxlamaq üçün. 665 00:39:11,230 --> 00:39:14,400 Və biz müəyyən olacaq struct vəzifələr 666 00:39:14,400 --> 00:39:17,400 və sonra bütün etmək əvvəl məhsulları göstərilməsi. 667 00:39:17,400 --> 00:39:20,750 Belə ki, nə görmək edək. 668 00:39:20,750 --> 00:39:25,460 Belə ki, SRCS-- görək etmək, Bu hello6_keyboard.c edir. 669 00:39:25,460 --> 00:39:38,140 670 00:39:38,140 --> 00:39:38,820 >> Ah, yox. 671 00:39:38,820 --> 00:39:40,150 Beləliklə, biz burada bəzi xəbərdarlıq var. 672 00:39:40,150 --> 00:39:43,840 Və sadəcə etmədik söyləyərək hər bir mümkün növ yoxlamaq 673 00:39:43,840 --> 00:39:45,610 Tədbirin. 674 00:39:45,610 --> 00:39:49,470 Çünki, OK Onlardan 236 və ya belə var. 675 00:39:49,470 --> 00:39:51,760 Beləliklə, mən bu xəbərdarlıqlara məhəl qoymamaq üçün gedirəm. 676 00:39:51,760 --> 00:39:53,530 Bu hələ gözəl tərtib edir. 677 00:39:53,530 --> 00:39:56,100 Belə ki, oyun oynamaq üçün gedirəm. 678 00:39:56,100 --> 00:39:57,590 Bu hərəkət deyil. 679 00:39:57,590 --> 00:40:04,150 Amma indi mən klaviatura mash zaman, Mən burada bəzi WASD hərəkət edə bilərsiniz 680 00:40:04,150 --> 00:40:06,870 Mən də mənim ok tuşlarını istifadə edin. 681 00:40:06,870 --> 00:40:10,070 Mən deyiləm, baxmayaraq ki, qeyd sağ indi basaraq, 682 00:40:10,070 --> 00:40:13,804 Bu, pəncərə həyata niyyətində deyil Mən hər çərçivəsində yenidən çünki. 683 00:40:13,804 --> 00:40:14,720 Belə ki, olduqca səliqəli var. 684 00:40:14,720 --> 00:40:19,420 Siz Mario ətrafında hərəkət təsəvvür edə bilərsiniz bir arrow düymələri və ya kimi bir şey. 685 00:40:19,420 --> 00:40:22,880 Və bəli, X çalışır. 686 00:40:22,880 --> 00:40:26,900 >> Gedirik Belə ki, son fayl hellow7_mouse baxmaq. 687 00:40:26,900 --> 00:40:29,600 Bu siçan daxil əldə edir. 688 00:40:29,600 --> 00:40:34,790 Biz bu bir So riyaziyyat mövzu idxal, 689 00:40:34,790 --> 00:40:38,100 biz olacaq, çünki Burada riyaziyyat bir az. 690 00:40:38,100 --> 00:40:45,260 Eyni köhnə, eyni köhnə stuff, təyinat, əvvəl görüldü, köhnə eyni. 691 00:40:45,260 --> 00:40:46,910 Bəli, bu maraqlıdır. 692 00:40:46,910 --> 00:40:51,730 Belə ki, biz yalnız yoxlanılması geri istəyirik SDL üçün tədbir çıxın. 693 00:40:51,730 --> 00:40:52,460 Niyə ki? 694 00:40:52,460 --> 00:40:55,110 Belə ki, hadisələr siçan daxil əldə edə bilərsiniz. 695 00:40:55,110 --> 00:40:57,670 Siçan hərəkət edən zaman olduğu kimi, Siz ki, bir hadisə olsun. 696 00:40:57,670 --> 00:41:00,520 Bir siçan düyməsini bərk zaman, siz ki, bir hadisə əldə edə bilərsiniz. 697 00:41:00,520 --> 00:41:05,760 >> Lakin, bir az sadə bir var bəlkə də, siçan daxil almaq üçün API. 698 00:41:05,760 --> 00:41:09,500 Və sadəcə SDL get siçan dövlət var. 699 00:41:09,500 --> 00:41:14,370 Beləliklə, mən x bir int və kursor mövqe üçün y. 700 00:41:14,370 --> 00:41:18,910 Mən SDL_GetMouseState üçün keçir olan bu edir. 701 00:41:18,910 --> 00:41:22,200 Və bu mövqe pəncərə koordinat sistemi. 702 00:41:22,200 --> 00:41:25,520 Belə ki, kütləvi sol üst əgər pəncərə ki, 0, 0 olardı. 703 00:41:25,520 --> 00:41:28,040 704 00:41:28,040 --> 00:41:33,380 >> İndi mən nə gedirəm mən gedirəm edir vektor riyaziyyat bir az etmək. 705 00:41:33,380 --> 00:41:36,910 Mən sizə deyil düşündüm bahis CS50 ki, görəcəksiniz, lakin burada deyil. 706 00:41:36,910 --> 00:41:40,720 Mən bəzi vektor gedirəm math vektor almaq üçün 707 00:41:40,720 --> 00:41:43,840 kursor image. 708 00:41:43,840 --> 00:41:53,280 Və belə ki, niyə mən var Burada bu toplama işlemi? 709 00:41:53,280 --> 00:42:01,350 Bəli, mən yalnız Hedef istifadə əgər .-- belə Mən siçan x tərcümə etmək lazımdır 710 00:42:01,350 --> 00:42:05,166 və yarım eni y və image hündürlüyü, 711 00:42:05,166 --> 00:42:08,040 Mən mərkəzi istəyirəm, çünki image, siçan doğru davam etmək 712 00:42:08,040 --> 00:42:10,160 image deyil mənşəyi. 713 00:42:10,160 --> 00:42:15,650 >> Belə ki, mən söhbət alıram əmin etmək yalnız var Burada image mərkəzi haqqında. 714 00:42:15,650 --> 00:42:19,510 Sonra biz delta x və y, almaq hədəf fərq 715 00:42:19,510 --> 00:42:23,430 image faktiki mövqe. 716 00:42:23,430 --> 00:42:25,690 Və sonra biz əldə edə bilərsiniz burada məsafə olan 717 00:42:25,690 --> 00:42:29,140 Pythagorean olacaq teoremi, x kvadrat kök 718 00:42:29,140 --> 00:42:32,720 dəfə x plus y dəfə y. 719 00:42:32,720 --> 00:42:38,400 >> İndi jitter qarşısını almaq və mən göstərə bilər Mən bu yoxdur, əgər bu nə, 720 00:42:38,400 --> 00:42:45,830 əgər kursor və arasında məsafə image mərkəzi, az beş edir 721 00:42:45,830 --> 00:42:48,730 Mən yalnız image hərəkət etmək fikrində deyiləm. 722 00:42:48,730 --> 00:42:52,900 Əks halda, biz sürət seçin. 723 00:42:52,900 --> 00:42:55,960 Və biz belə ki, müəyyən sürət həmişə sabit olacaq. 724 00:42:55,960 --> 00:42:58,770 Və bütün xalis nəticə Bu riyaziyyat image edir 725 00:42:58,770 --> 00:43:01,660 kursor istiqamətində hərəkət edir. 726 00:43:01,660 --> 00:43:08,470 >> İndi, bu çıxır ki, SDL_GetMouseState, 727 00:43:08,470 --> 00:43:14,490 qəbulu əlavə x və y dəlilləri, 728 00:43:14,490 --> 00:43:21,340 bu da uyğundur bir int qaytarır siçan düymələri dövlət. 729 00:43:21,340 --> 00:43:24,600 Belə ki, oxuya bilməz birbaşa, lakin biz 730 00:43:24,600 --> 00:43:29,090 bir bu makro istifadə bitwise operator ki, qorxudan deyil, 731 00:43:29,090 --> 00:43:30,650 yalnız bir bitwise və. 732 00:43:30,650 --> 00:43:38,320 Beləliklə, biz nəticəsidir ki, düymələri demək Bizim SDL_GetMouseState, ki, əgər 733 00:43:38,320 --> 00:43:43,990 bitwise və bu makro və Burada SDL_BUTTON_LEFT. 734 00:43:43,990 --> 00:43:47,680 >> Belə ki, bu, sadəcə həll etmək üçün gedir uyğun bitmap 735 00:43:47,680 --> 00:43:51,090 sol siçan düyməsini bərk olunur. 736 00:43:51,090 --> 00:43:55,470 Və belə bitwise əgər və baş və bu 737 00:43:55,470 --> 00:43:59,340 deməkdir sıfır, sol düyməni basıldı, 738 00:43:59,340 --> 00:44:04,320 sonra biz, həqiqətən, inkar olacaq həm x və y sürəti, 739 00:44:04,320 --> 00:44:06,700 olan yalnız image qaçaq edəcək. 740 00:44:06,700 --> 00:44:07,980 Update mövqeləri. 741 00:44:07,980 --> 00:44:10,920 Toqquşma təsbitlər, Göründüyü bütün əvvəl göstərilməsi, bütün hüququ. 742 00:44:10,920 --> 00:44:11,510 Nin edək. 743 00:44:11,510 --> 00:44:14,200 744 00:44:14,200 --> 00:44:16,050 Belə ki, SRC = hello7_mouse.c etmək var. 745 00:44:16,050 --> 00:44:21,720 746 00:44:21,720 --> 00:44:22,220 Great. 747 00:44:22,220 --> 00:44:23,490 No səhvlər. 748 00:44:23,490 --> 00:44:24,900 Və oyun. 749 00:44:24,900 --> 00:44:26,440 >> Belə ki, burada mənim siçan var. 750 00:44:26,440 --> 00:44:29,000 Və şəkil həqiqətən Mənim siçan chasing. 751 00:44:29,000 --> 00:44:33,140 İndi bir oyun bəlkə etmək bu bir düşmən chasing kimi 752 00:44:33,140 --> 00:44:35,240 Sizin kiçik xarakter və ya nə. 753 00:44:35,240 --> 00:44:37,440 Amma burada biz var image siçan chasing. 754 00:44:37,440 --> 00:44:41,000 Mən basın siçan image chasing başlayır 755 00:44:41,000 --> 00:44:42,860 və resim üz siçan çalışır. 756 00:44:42,860 --> 00:44:43,810 Belə ki, olduqca sərin var. 757 00:44:43,810 --> 00:44:47,770 Və bildiriş yenə var Burada hələ toqquşma aşkarlanması. 758 00:44:47,770 --> 00:44:53,930 >> Belə ki, son az demo Mən burada qurmaq. 759 00:44:53,930 --> 00:44:58,870 Və daha bir şey nəzər salaq. 760 00:44:58,870 --> 00:45:02,970 Belə ki, geri burada, mən bu jitter qeyd. 761 00:45:02,970 --> 00:45:05,000 Oldu. 762 00:45:05,000 --> 00:45:12,890 Məsafə az beş piksel Belə ki, Mən sıfır x və y sürət qəbulu edilib. 763 00:45:12,890 --> 00:45:15,960 Ki, xilas ne olur? 764 00:45:15,960 --> 00:45:19,070 Mən yalnız bunu gedirəm. 765 00:45:19,070 --> 00:45:23,820 766 00:45:23,820 --> 00:45:30,150 Bu horrendous stil üzr edin, lakin biz doğru kodunu bildirib. 767 00:45:30,150 --> 00:45:38,080 Belə ki, saxlamaq və gedirəm etmək üçün əvvəl eyni komanda. 768 00:45:38,080 --> 00:45:38,785 >> Oldu. 769 00:45:38,785 --> 00:45:39,660 İndi nə olar? 770 00:45:39,660 --> 00:45:43,260 771 00:45:43,260 --> 00:45:43,760 Yaxşı. 772 00:45:43,760 --> 00:45:45,801 Biz hələ aşağıdakı edirik əvvəl kimi siçan, 773 00:45:45,801 --> 00:45:49,310 lakin biz siçan almaq zaman, bu ümumi jitter var. 774 00:45:49,310 --> 00:45:50,320 Orada nələr olur? 775 00:45:50,320 --> 00:45:52,600 Bəli, bizim vektor riyaziyyat, biz xatırlayıram 776 00:45:52,600 --> 00:45:57,540 arasında məsafə alaraq kursor və image mərkəzi? 777 00:45:57,540 --> 00:46:00,710 Yaxşı ki, yaxınlaşır kimi 0, biz əldə başlamaq 778 00:46:00,710 --> 00:46:06,280 crazy davranış bu növ kimi harada image sort edir 779 00:46:06,280 --> 00:46:08,910 Kursor ətrafında sağa kimi. 780 00:46:08,910 --> 00:46:12,000 Və bu sarsıntıdan yaradılması oldu. 781 00:46:12,000 --> 00:46:13,020 Və həqiqətən çirkin var. 782 00:46:13,020 --> 00:46:15,103 Və yəqin ki, yoxdur Sizin oyun bunu istəyirəm, 783 00:46:15,103 --> 00:46:17,350 bu halda xüsusi təsiri bir növ var. 784 00:46:17,350 --> 00:46:21,960 >> Biz nə ki, var yalnız bu ixtiyari 785 00:46:21,960 --> 00:46:27,150 biz demək, beş piksel kəsdi Bu beş piksel varsa, biz yaxşı deyilik. 786 00:46:27,150 --> 00:46:29,560 Biz artıq image hərəkət etmək lazım deyil. 787 00:46:29,560 --> 00:46:32,260 Belə ki, orada neler var. 788 00:46:32,260 --> 00:46:37,390 789 00:46:37,390 --> 00:46:40,870 >> Belə ki, olduqca çox var. 790 00:46:40,870 --> 00:46:44,390 İndi yaratmaq üçün necə bir pəncərə bir resim yüklemek, 791 00:46:44,390 --> 00:46:49,330 pəncərə bir görünüş çəkən almaq klaviatura giriş, siçan daxil almaq, 792 00:46:49,330 --> 00:46:52,190 digər bir dəstə var input ki, deyil ki 793 00:46:52,190 --> 00:46:56,070 Yalnız bir sərf əgər almaq üçün necə sənədlərin baxaraq neçə dəqiqə. 794 00:46:56,070 --> 00:46:59,670 Beləliklə, siz həqiqətən var olduqca bir İndi sizin ixtiyarınızdadır bir neçə alətləri 795 00:46:59,670 --> 00:47:01,650 tam hüquqlu oyun yazmaq üçün. 796 00:47:01,650 --> 00:47:05,030 >> İndi hər oyun bəzi audio lazımdır, lakin audio sənədlər 797 00:47:05,030 --> 00:47:06,460 da olduqca yaxşı. 798 00:47:06,460 --> 00:47:09,200 Mən ki, əgər bahis istəyən Ben Siz hər şeyi anlamaq 799 00:47:09,200 --> 00:47:14,560 biz bu gün haqqında danışdı şəkillər, və səthlərin, 800 00:47:14,560 --> 00:47:18,370 sonra Windows, və hər şey, həyata figuring audio API deyil 801 00:47:18,370 --> 00:47:21,170 gedir ki, pis. 802 00:47:21,170 --> 00:47:27,420 Beləliklə, mən səbirsizliklə gözləyirik Siz SDL nə yaradır. 803 00:47:27,420 --> 00:47:31,595