THOMAS LIVELY: zote haki. Hi, kila mtu. Mimi nina Thomas Lively. Semina hii ni kwenda kuwa kuandika michezo P2 katika C kwa kutumia SDL. Hivyo najua wewe ni wote kuuliza, ndio, mimi kwa kweli wanataka kucheza michezo na kufanya michezo, lakini ni nini hii biashara SDL? Hivyo SDL ni maktaba C. Ni anasimama kwa Simple DirectMedia Tabaka. Na ni jukwaa msalaba, mchezo maendeleo maktaba. Ni kazi juu ya Windows, Mac, Linux, hata iOS na Android. Hushughulikia mambo kama upatikanaji wa mifumo ya redio kwa kompyuta, keyboard, na panya, joysticks, kama wao ni masharti. Kwenye simu, inaweza hata kufanya kugusa pembejeo na yote hayo. Na bila shaka, Hushughulikia graphics, kuchora mambo ya screen. Hivyo ni sana sana kutumika, ingawa unaweza kuwa na habari ya tukio hilo kabla. Ni kujengwa katika, kwa mfano, Chanzo injini valve ya, ambayo mamlaka michezo kama vile Portal na Timu ya Ngome 2. Ni pia katika idadi kubwa sana ya michezo indie kwamba kuja nje, hivyo mimi nina msisimko kuona nini yote itakuwa kufanya na hayo. Malengo ya semina ni kupata wewe yaliyowekwa kuwa zinazoendelea na SDL. Tunakwenda kujifunza jinsi kujenga mchezo dirisha. Tunakwenda kujenga sprites, ambayo ni taswira katika mchezo wako ambazo zinaweza kuzunguka. Tunakwenda kujifunza jinsi kwa na hai sprites, hivyo hoja yao kote, kufanya nao kubadilika baada ya muda. Na tunakwenda kujifunza jinsi kukamata panya na keyboard pembejeo kutoka kwa kompyuta. Nini sisi si kuzungumza kuhusu leo ​​ni 3D graphics, kwa sababu hiyo ni ngumu sana somo kwamba hatuna muda kwa ajili ya. Sisi si kujifunza jinsi ya kucheza redio juu ya michezo yetu. Na hatutakuwa na kujenga kwa jambo lolote, lakini Linux. Sasa tahadhari kuna watu kwamba, hopefully, ifikapo mwishoni semina hiyo, wewe utakuwa na starehe na SDL nyaraka, hivyo wewe utakuwa na uwezo wa kwenda kufikiri jinsi ya kucheza redio kwa ajili yako mwenyewe. Pia kujenga kwa Mac au PC wanapaswa kufanya kazi sawa kama kujenga kwa ajili ya Linux, lakini kuanzisha kinaendelea kuwa ni kidogo tofauti. Hivyo unapaswa kuwa na uwezo wa kufikiri jinsi ya kufanya mambo haya ifikapo mwishoni mwa semina ya leo. Hivyo kwa kuanzisha, tunakwenda kutumia mashine virtual. Tunataka kutumia CS50 IDE, kwa sababu tunakwenda tu kuwa kuandika katika C. Lakini tangu IDE si browser, sisi Huwezi kuunda madirisha mpya au kuonyesha graphics katika hilo. Hivyo tunahitaji mashine virtual. Hivyo unaweza kufuata maelekezo hapa katika manual.CS50.net/appliance/15 kufunga rasmi appliance CS50, ambayo ni tu Linux virtual mashine. Na kisha mara moja una kwamba wote kuweka up-- ni inaweza kuchukua muda kidogo, kwa sababu download-- kubwa sana wewe ni kwenda kuendesha katika VM sudo anayeweza-kupata update. Na kwamba kweli kinachoendelea update programu zote fedha kwenye mashine yako virtual. Baada ya hapo, wewe ni kwenda kukimbia sudo anayeweza-kupata kufunga, libsdl2-2.0-0, libsdl2-DBG, libsdl2-dev, na kuongeza libsdl2-picha-2.0-0, libsdl2-picha-DBG, na libsdl2-picha-dev. Hivyo ni nini kwamba kufanya? Hiyo tu installs utatuzi Maelezo, nyaraka, headers, na binaries kwa ajili ya maktaba hizo mbili. Mara kwa mara ya zamani, SDL 2.0, na maktaba nyingine aitwaye SDL Image, ambayo sisi ni kwenda kuwa na kutumia kupakia files picha katika mchezo wetu. Hivyo mara tu na kwamba pia kwamba, tu wakati anauliza, wewe tu aina ndiyo, hit Enter kufunga vifurushi hizo, na basi unapaswa kuwa vizuri kwenda. Hivyo kupata usambazaji kificho, wewe can-- loo wapenzi, hii si updated. Isipokuwa kama una GitHub account-- kama una akaunti GitHub, unaweza kufanya hivyo Git msaidizi amri ya repo na kwamba itakuwa kushusha Git repo kwa kificho vyote vilivyomo, hivyo kwamba itabidi kanuni. Kama huna GitHub akaunti, nini unapaswa kufanya ni aina wgithttps: //github.com/tlively/sdl seminar-- na hapa ni different-- /archive/master.zip. Hivyo tena, hiyo ni exact URL, isipokuwa ni kwenda kuwa tlively / SDL_seminar / master.zip na unatumia wgit ya kushusha jambo hilo. Na kisha unaweza tu unzip archive kwamba na kisha itabidi chanzo kanuni zote. Hivyo pole juu ya hilo. Na kisha kificho pia kuwa mwenyeji katika CS50 semina ya mtandao ukurasa katika michache Siku. Sawa. Hivyo ni jinsi gani sisi kupata kuanza kuandika mchezo wetu wenyewe? Naam, jambo la kwanza tunakwenda wanataka kufanya ni kuangalia nyaraka SDL. Hivyo hapa ni VM. Na hapa ni ukurasa wa mtandao. Nimekuwa kutizamwa kuishi libsdl.org. Nini mimi kwenda kufanya hapa ni kwenda juu kwa sidebar, chini ya nyaraka, na click kwenye wiki. Hii kuleta mimi wiki kwamba ina zaidi ya nyaraka kwa ajili ya SDL. Zaidi ya kwenye sidebar hapa, tuko kwenda bonyeza API kwa jamii, kwa sababu ni kwenda kutoa sisi nzuri categorical maoni ya API nzima kwa SDL. Hivyo kwa mfano, tuna initialization msingi na kufunga chini, aina zote za mambo ya kiutawala kwa kutumia SDL, na kisha tuna sehemu kwa ajili ya kuangazishwa mambo ya screen. Hiyo ni video. Matukio pembejeo, hiyo ni kupata pembejeo kutoka keyboard, kupata pembejeo kutoka panya, na joystick, kama una hiyo hata. Kuna nguvu maoni kwa mambo ni kama controllers mchezo, ambayo sisi siyo kwenda kuzungumza kuhusu. Na hapa ni kusikiliza. Na kisha kuna kundi la wengine mambo ambayo SDL anaweza kufanya kwa ajili yenu. Lakini leo sisi ni kwenda kuzingatia juu ya initialization hapa, kuonyesha picha katika video sehemu, na utunzaji matukio ya pembejeo. Basi hizi ni kuu sehemu ya nyaraka kwamba unapaswa kuwa hofu juu. Kwa ajili ya kujifurahisha, kama sisi kwenda juu hapa na bonyeza API majina yao, tunaweza kuona orodha ya kila Jambo moja katika maktaba SDL. Hivyo kazi hizi zote, enumerations, miundo, kiasi mambo ya mambo, herufi utaratibu. Na kwa uwazi, mpaka unajua unafanya, hii si kwenda kuwa na manufaa sana, ambayo ni kwa nini tunafanya API kwa jamii. Basi hebu kuanza. Hopefully wameweza tayari kupakuliwa ugawaji kanuni. Na hivyo nini unaweza kufanya ni, haki hapa katika appliance CS50, tu kufungua wastaafu. Twende sasa. Hivyo nimekuwa tayari kupakuliwa usambazaji kificho kwa kutumia zip mbinu. Na nimekuwa unzipped yake. Hivyo hapa ni katika SDL semina bwana. Hivyo mimi nina kwenda katika saraka huo. Na kile sisi kuona hapa ni kwamba tuna saba mafaili C. Na hii ni kwenda kificho tunakwenda kuwa na kuangalia leo. Tuna Makefile. Na tuna directory rasilimali, ambayo tu ina picha kuwa wewe utakuwa kuona hivi karibuni kutosha. Basi hebu wazi juu files haya kutumia G-Hariri mhariri. Hivyo nataka kufungua mafaili yote ambayo yanayoanza kwa hodi na kuishia na c. Twende sasa. Hivyo hiyo ni dirisha dogo, hivyo sisi ni kwenda kujaribu kufanya kwamba kubwa. Hapana, akaenda zake. Sawa. Hivyo hapa ni sana kwanza faili tunakwenda kuangalia. Ni wito hello1_sdl.c. Na hii yote haina ni initialize SDL maktaba ili tuweze kuanza kutumia. Jinsi gani unajua kuja na kanuni hii wewe mwenyewe? Naam, kama sisi kuangalia juu ya katika nyaraka na sisi kwenda katika initialization na kufunga chini ya kifungu, itakuja kutuambia zote kuhusu jinsi ya initialize SDL. Hivyo dhahiri kusoma hii wakati mwingine. Ni kwenda kukuambia yote kuhusu nini kinaendelea hapa. Lakini crux kuu wa mambo ni kwamba tunahitaji wito huu SDL kazi Katika Ni na kuupitisha ni aina gani ya mambo tunataka maktaba initialize. Hivyo katika kesi yetu, sisi ni kwenda tu initialize video kwa sasa, ili tuweze kuanza kuonyesha picha. Zaidi ya hapa, unaweza kuona kama sisi click kwenye SDL Katika Ni, sisi Unaweza kupata taarifa zaidi, ikiwa ni pamoja na thamani ya kurudi. Hivyo tunaona hapa kwamba returnes sifuri juu ya mafanikio. Hivyo katika kanuni zetu, tunakwenda kuona kama haina kurudi sifuri, na kama hana kurudi sifuri, hivyo ilikuwa si mafanikio, kisha tunakwenda tu magazeti kosa kutumia kazi hii nyingine, SDL kupata kosa, ambayo anarudi kamba kuelezea makosa ambayo yalitokea. Tunakwenda magazeti kwamba kosa na kisha tuko tu kwenda exit mpango na makosa kanuni. Kisha kitu kingine kwamba tunahitaji kufanya ni, kabla ya exits mpango, kama sisi mafanikio initialized SDL, sisi tu haja ya simu yake SDL kujiondoa. Na kwamba itakuja kushughulikia kusafisha yote ya rasilimali SDL ya ndani kwa ajili yetu. Hivyo nyaraka there-- tena, hapa sisi ni katika initialization na kufunga chini ya kifungu ya nyaraka. Unaweza bonyeza tu juu ya kazi hapa, SDL kujiondoa, na unaweza kusoma yote juu kuwa vilevile. Na mengi ya haya kazi kurasa nyaraka kuwa mfano kificho, hivyo hii ni rasilimali nzuri sana. Dhahiri kutumia muda kusoma sehemu ya wiki hii kama wewe ni kwenda kufanya hii kwa ajili ya mradi. Sawa. Hivyo hiyo ni mpango wetu mzima. Nini tunaweza kufanya sasa is-- mimi nina kwenda kufungua Makefile hapa, hivyo mimi nina kwenda kuchukua kuangalia jinsi kazi. Na ni Makefile rahisi sana, sawa na nini umefanya kuona mbele. Moja ya tofauti kubwa ni kwamba, hapa, hii kinaenda kuingiza matokeo ya mbio amri hii, ambayo wameweza tayari imewekwa kama umefanya imewekwa SDL. Na hii ni amri ambayo inaenda kuzalisha baadhi bendera za ziada kwa ajili compiler. Mbali na hilo, sisi ni kutoa ni amri kawaida wote, ikiwa ni pamoja na amri hizi mbili. Hivyo -lsdl2-picha Hushughulikia kuunganisha katika SDL maktaba ya picha. Na-LM kweli kinafanya kuunganisha katika kiwango cha C math maktaba. Kwa hiyo sisi si kwenda haja wale kwa wote wa C mafaili yetu, lakini sisi tu kuziweka katika ili tuweze kutumia Makefile sawa kwa kila kitu bila marekebisho. Juu hapa katika vyanzo, hii ni mahali ambapo wewe d kuweka mafaili kwamba walikuwa wanakwenda kukusanya kwa ajili ya mradi wako. Lakini kwa kuwa kila mmoja C wangu mafaili hapa ina kazi kuu, itakuja kupata kuchanganyikiwa kama sisi kuziweka zote katika. Hivyo nina kwenda kwa kusema tu, kwa sasa, hello1_sdl.c, ambayo ni moja sisi alimwangalia. Hivyo kama mimi kwenda nyuma zaidi hapa, siwezi kufanya kufanya. Na yale iliyo yafanya ni kama tu ulioandaliwa kwamba faili kwanza. Na kisha tunaweza aina ./game, kwa sababu ni kutekelezwa ni zinazozalishwa. Na wote ilivyokuwa mara magazeti initialization mafanikio. Hivyo sisi alifanya kitu sahihi. Lakini hiyo ilikuwa ni aina ya boring, kwa sababu hatukuona dirisha, hakuna kitu wakiogelea. Kubwa sana, tulipata SDL initialized. Sasa, hebu kuondoka na kitu kidogo zaidi ya kuvutia. Hivyo hapa tuna hello2_window.c, na hii ni kwenda kuwa kidogo zaidi tata C mpango huo initializes SDL tu kama kabla, ila sasa sisi ni pia kwenda initialize SDL timer. Na hii ni kwenda hebu kupata timer ndani na kazi ya matumizi yanayohusiana na wakati. Na kisha hebu angalia chini hapa. Tunachofanya ni tuna pointer hii kwa SDL dirisha struct, ambayo ni kwenda kuwa kuundwa kwa wito huu kwa kazi, SDL kuunda dirisha. Sasa, hii inachukua mengi ya hoja, hivyo hebu kwenda kuangalia nyaraka. Hivyo tena, mimi nina kwenda kwa API kwa jamii, mimi nina wakishuka video hapa, na kwanza sehemu, kwa kuonyesha usimamizi dirisha. Hivyo hii ina sehemu tani ya mambo ndani yake, lakini kama wewe kuangalia njia kazi hizi, itabidi kuona kwamba pengine ni moja sisi wanataka inaitwa SDL kuunda dirisha, ambayo hufanyika kuwa haki juu. Na hivyo hii ni nyaraka kwa ajili ya kazi hii. Dirisha kwenda na cheo, x na msimamo y kwenye screen, itakuja na upana, urefu, na kisha kwenda kuchukua baadhi bendera. Sasa, sisi si kweli huduma kuhusu yoyote ya bendera hizi sasa hivi, lakini kama wewe alitaka kufanya kitu kama kufanya kamili dirisha screen, unaweza kuchukua kuangalia hilo. Kwa sasa, tunakwenda tu kutumia maadili haya maalum, SDL dirisha pamoja na unaozingatia kwa x na y ili tu kujenga dirisha katikati ya screen yetu. Hivyo kwamba ni nini kwamba anafanya. Na kama dirisha hutokea kwa kuwa null, maana kuna kosa, kisha tena tunakwenda tu kwa magazeti makosa kwa kutumia SDL kupata kosa. Na kisha kwa sababu sisi initialized SDL, sisi sasa haja ya kulifunga. Hivyo tunatoa wito SDL kujiondoa kabla kurudi moja kwa kuu. Hivyo tuna dirisha hili wazi hopefully. Na nini tunakwenda kufanya ni tunakwenda kuwaita SDL kwa milliseconds 5000, ambayo ni sawa na sekunde tano. Na wakati sisi ni kosa na kwamba, itakuja kuharibu dirisha, kusafisha maktaba SDL, na kujinasua katika mpango huo. Basi hebu kwenda mbele na kutoa kwamba risasi. Hivyo sasa badala ya kubadilisha Makefile kila wakati, Naweza tu kufanya kufanya, na kisha juu ya mstari amri, kusema vyanzo sawa na halafu faili tuko kuandaa. Hivyo ni hello2_window.c. Ajabu. Hakuna erros. Sasa, kama sisi kukimbia kutekelezwa yetu, tunaona dirisha hili. Sasa kuna wachache matatizo na dirisha. Tunaweza kusonga ni kuzunguka, lakini ina hii Junk nyuma ndani yake. Hivyo hatuna inayotolewa kitu chochote, na hivyo ni tu kamili ya taka, ambayo ni kiasi pretty nini tunatarajia. Aidha, hatuwezi funga dirisha. Mimi uendelezaji X huu katika kona na hakuna kitu kinatokea. Hivyo tutaweza kuona jinsi ya kurekebisha kwamba katika kidogo. Basi hebu kurekebisha sehemu ambapo dirisha ni kamili ya takataka kwanza. Hivyo kama sisi kwenda juu ya hello3_image.c, nini tunaweza kuona ni kwamba tumekuwa aliongeza kuwa wachache mambo zaidi hapa. Tumekuwa aliongeza kichwa hii mpya faili ya kupata kazi timer. Nadhani sisi alifanya hivyo katika mwisho moja, pia, na sikuwa kutaja hayo. Lakini sasa kwa sababu tuko kufanya kazi na picha, tunahitaji ni pamoja na SDL picha header faili vilevile. Hivyo kitu kimoja ni kama kabla, initializing SDL hapa, sawa kukabiliana na kujenga madirisha. Tumeona kwamba kabla ya sasa. Sasa tunahitaji kujenga kitu kinachoitwa renderer, ambayo ni aina ya huenda pamoja kwa dirisha. Lakini ni aina ya abstract kitu hiyo ni msimamizi wa kufanya haya yote kuchora shughuli kwa dirisha. Na ni kweli sambamba kwa mpango kubeba ndani ya graphics vifaa katika yako kompyuta au simu yako au chochote. Hivyo bendera tunataka kupitisha it-- na unaweza kuangalia nyaraka kupata maelezo zaidi here-- ni kwenda kuwa SDL atatoa kasi, ambayo ina maana itakuja kuwa kutumia graphics vifaa na si tu kuigwa katika programu. Na sisi ni kwenda kutumia SDL Kionyeshi PRESENTVSYNC. VSync ni jambo kwamba tu hufanya graphics yako kuangalia bora na kuzuia hii kitu inayoitwa screen ugaidi, ambapo nusu ya sura moja na nusu ya ujao sura kupata inayotolewa kwa wakati mmoja na inaonekana kubwa. Lakini tena, unaweza kwenda kusoma juu ya hilo juu yako mwenyewe. Hivyo tuna baadhi bendera hapa. Na hivyo sisi ni kwenda tu kuwaita huu SDL kazi kujenga renderer. Tunakwenda kuwapa dirisha kujiunga na kwamba renderer. Hasi moja ina maana sisi hawajali nini graphics dereva sisi ni kwenda kutumia. Hivyo kwamba lazima pretty much iwe hasi moja, isipokuwa wewe kujua kuhusu graphics madereva. Na kisha tunakwenda tu kupita bendera yetu. Hivyo kama kwamba anarudi null, basi tuko kwenda magazeti makosa kama kawaida, lakini kisha sisi ni pia kwenda kuharibu dirisha kusafisha rasilimali hizo kabla wito SDL kujiondoa na kurudi. Sasa, sehemu ya kuvutia hapa ni mahali ambapo sisi shehena mfano wetu kutumia hii IMG_load kazi. Hii ni kazi tu tunakwenda kutumia kutoka SDL maktaba ya picha. Ni moja tu tunahitaji. Ni kazi ambayo inachukua kamba kuwa ni njia ya rasilimali yoyote picha. Na inaweza kuwa .png, GIF, bitmap, yeyote mambo hayo. Na hii ndiyo maana kazi hii ni nzuri. Inaweza kushughulikia pretty much mfumo wowote. Mizigo yake katika kumbukumbu na maduka hayo kama kitu kinachoitwa SDL uso. Sasa SDL uso ni tu struct kwamba inawakilisha takwimu picha katika kumbukumbu. Hivyo unaweza kusoma zaidi kuhusu kwamba katika nyaraka hizo mbili. Na kama makosa hayo, kisha tuko kwenda kufanya jambo zima ambapo sisi magazeti makosa, karibu yetu rasilimali, na kisha kuacha mpango. Sasa jambo la kuvutia ni, kabla ya tunaweza kuchora picha hii kwa dirisha, tunahitaji kweli kufanya hivyo texture. Sasa sambamba texture na takwimu picha kubeba katika kumbukumbu vifaa mchoro wa ya. Hivyo uso ni katika kuu kumbukumbu, mara kwa mara kumbukumbu kwamba sisi tumekuwa kutumia zote muhula, na umbo ni katika hii VRAM tofauti kumbukumbu kwamba udhibiti graphics kadi. Hivyo sisi kuwaita kazi hii SDL_CreateTextureFromSurface. Sisi kuwapa renderer yetu na uso wetu. Na kisha sisi ni kweli kufanywa na uso, hivyo sisi ni kwenda tu bure hilo. Hatuna haja yake tena. Na kisha hivyo kama wito huu errored na kurudi null, kisha tunakwenda kufanya nzima kosa kutoa taarifa kitu tena. Sawa. Hapa, sisi kupata katika baadhi halisi utoaji kazi. Hivyo wito SDL_RenderClear na kupita renderer kuhusishwa na dirisha letu tu hufanya dirisha kwenda nyeusi. Hivyo ni kuondosha kwamba Junk kuwa tuliona katika dirisha yetu kabla na inafanya kuwa nyeusi. Na kisha tunakwenda kuwaita SDL_RenderCopy, kuwapa renderer yetu, texture yetu. Na tutaweza majadiliano juu ya kile mashamba hayo ni katika kidogo. Lakini hiyo ni kwenda kuchukua data texture na nakala yake kwenye wetu dirisha kuteka picha. Kwa hiyo baada ya tumefanya nakala hii data kwenye dirisha letu, tuna kufanya kazi hii ya ziada aitwaye SDL_RenderPresent. Na hii ni ya kuvutia kwa sababu hii anapata katika mada inayoitwa mara mbili buffering. Hivyo mara mbili buffering ni mbinu ambayo hufanya graphics yako kuangalia mengi zaidi. Tena, ni kuzuia kwamba screen kuchanika Nilikuwa kuzungumza juu ya awali, ambapo una mipaka miwili. Kuna nyuma buffer katika kumbukumbu na buffer mbele. Buffer mbele ni halisi nini juu ya screen yako kwa sasa. Kwa hiyo sisi kufanya yote haya kuteka tofauti, kama SDL atatoa nakala au SDL_RenderClear kwa buffer nyuma. Basi kurekebisha mambo katika buffer nyuma. Hapa sisi tupate kuwa kuchora huu mraba ya kijani kwa nyuma buffer. Hivyo basi wakati sisi ni kosa kufanya wetu atatoa shughuli, ambayo inaweza kuchukua kweli kwa muda mrefu muda, nini tunakwenda kufanya ni kubadili mipaka. Hivyo ni literally tu inachukua mbele buffer na nyuma buffer na swichi yao, hivyo kwamba, mara mmoja, katika operesheni moja, badala ya labda mamia au maelfu, wote wa wetu wapya kulipwa vitu ni juu ya screen. Na hii inazuia mambo kama screen kuogea wakati tumekuwa inayotolewa nusu tu ya vitu yetu kwa sura. Hivyo kwamba ni kwa nini sisi haja ya simu SDL_RenderPresent, ikiwa ni pamoja kama SDL_RenderCopy. Tena, tunakwenda tu kusubiri kwa sekunde tano. Kisha tunakwenda kusafisha rasilimali zetu. Tuna wachache kabisa zaidi wakati huu. Na kisha tunakwenda tu exit mpango. Basi hebu kufanya hivyo. Mimi nina kwenda aina ya kufanya, na kisha vyanzo sawa hujambo hii sasa ni 3image.c. Haki wote, kwamba ulioandaliwa hakuna makosa. Na unaweza kuona hapa Nimekuwa sasa inayotolewa nje ya picha yangu, Hello, CS50! kwa dirisha yetu, ambayo kutoweka baada ya sekunde tano. Sasa, hii bado ina matatizo, sawa? Hii si maombi nzuri, kwa sababu wakati mimi kujaribu karibu ya dirisha, hakuna kinachotokea. Hiyo x bado msikivu. Basi hebu tuangalie faili ijayo, hello4animation. Hivyo hii ni faili hiyo ni kwenda kuanzisha kusonga na harakati kwa mfano wetu. Hivyo sisi ni kwenda kufanya kitu kimoja kama kabla, kuanzisha SDL, kujenga dirisha, kujenga renderer, shehena picha katika kumbukumbu, kujenga texture. Tumeona yote ya kwamba kabla. Sasa, hii ni mpya. Tunakwenda kuwa muundo inayoitwa rect SDL, ambayo ni tu mstatili. Kama sisi kwenda zaidi ya hapa, tunaweza kufanya search kwa SDL rect, na unaweza kuona ni rahisi sana muundo. Ina x, y kwa nafasi, na ina upana na urefu kwa ukubwa wa mstatili. Hivyo nini tunakwenda kufanya ni tuko kwenda kufafanua hii SDL rect dest, kwa marudio. Na hii ni mahali juu ya screen ambapo tunakwenda kuwa kuchora mfano wetu, haki hiyo kama sisi ni kwenda kuwa kusonga picha kote, kisha marudio ambapo tunakwenda kuteka picha haja ya kuwa na kuhamia karibu. Hivyo sisi ni kwenda kuwaita hii kazi SDL_QueryTexture. Na taarifa mimi nina kupita anuani ya dest.w, ambayo ni upana, na dest.h, ambayo ni urefu. Na hivyo SDL_QueryTexture ni kwenda kuhifadhi katika mashamba hayo upana na urefu wa umbo letu. Na kisha nini mimi kwenda kufanya ni mimi nina kwenda kuweka dest.x kuwa dirisha upana bala dest.w, ambayo ni upana wa sprite, kugawanywa na 2. Na hii ni kwenda kuweka it up hivyo kwamba picha ni kikamilifu unaozingatia katika dirisha yetu, sawa? Hivyo sasa nina y msimamo. Na hii ni kwenda kuwa kutofautiana hiyo ni kubadilisha, kwa sababu tunakwenda kuwa kusonga picha katika mwelekeo y. Na sasa tuna kitu aitwaye uhuishaji kitanzi. Hivyo ni jinsi gani uhuishaji kazi? Naam, jicho binadamu inaweza kuchunguza 12 tofauti picha katika kila pili, sawa? Hivyo kama wewe flash 12 picha kadi saa yangu katika pili, nikaona kila mmoja picha hizo kama tofauti yake mwenyewe picha ya mtu binafsi. Sasa, kama wewe flash zaidi picha saa yangu katika pili, kisha jicho langu kuanza blur yao pamoja na napenda kujua kama mwendo, badala ya picha moja tofauti. Hivyo, kwa mfano sinema, na televisheni, wao flash picha wakati wewe mara 24 pili. Hivyo hiyo ni 24 muafaka kwa pili. Kompyuta skrini, kwa upande mwingine, mara nyingi ni saa 60 muafaka kwa pili. Hiyo ni mahitaji kasi yao. Hiyo ni mara ngapi wao kupata mahitaji picha kwenye screen. Hivyo lengo letu ni kwenda kuwa 60 muafaka kwa pili kwa ajili ya michezo yetu. Basi hebu angalia kwamba katika kanuni. Hivyo kwa kila sura, tuko kwanza kwenda wazi dirisha. Hii ni mfano mkuu. Daima wazi dirisha kila sura, na kisha kufanya yote ya kuchora yako shughuli, na kisha mwishoni, Je, RenderPresent kuonyesha kila kitu katika sura ya. Na kisha utaenda na kusubiri mwishoni kusubiri hadi ijayo sura lazima kuanza. Hivyo kama mimi alikuwa akifanya mengi ya tata hesabu hapa kwamba alichukua zaidi ya 16 milliseconds, itakuwa vigumu kwa mimi kupata kwamba kiwango cha frame ya 60 kwamba Nilitaka, kwa sababu sura ya kila ni kuchukua muda mrefu sana kwa compute. Aidha, sisi ni kweli kufanya aina ya kiasi kidogo cha kazi hapa, kwa sababu kuna tu jambo moja sisi ni kuchora. Hivyo mimi tu kusubiri 1/60 wa pili, ambayo ni urefu ya sura katika kati ya muafaka. Hivyo mimi nina aina ya kujifanya kufanya kazi yangu yote inachukua muda sifuri. Lakini katika mchezo halisi, wewe d na Ondoa kiasi cha muda ilichukua kufanya hii kazi yote kutoka muda wako mapumziko. Hivyo anyway, nini mimi kweli kufanya katika kitanzi hii? Mimi wazi dirisha. Mimi kuweka dest.y, ambayo ni int kwa y yangu halisi nafasi kutupwa katika int. Sasa, nataka kuelea azimio kwa y yangu nafasi katika mchezo wangu, lakini kisha kwa kweli kuteka ni kwenye screen, inahitaji ints, kwa sababu ni katika vitengo ya saizi, hivyo kwamba ni nini kutupwa ni kwa. Mimi nina kwenda kuteka picha. Hivyo hii ni chanzo mstatili. Na hii ni marudio mstatili. Hivyo mimi kupita null kwa chanzo Mstatili kusema nataka kuteka texture yangu yote. Lakini kama alikuwa na mengi ya textures katika mchezo wako na wao uko wote katika moja kubwa ramani texture kwamba alikuwa kubeba katika SDL kama moja tu texture, ungeweza kutumia chanzo Mstatili kuchukua moja ya textures ndogo, moja ya sprites ndogo, nje ya kwamba kubwa ramani texture. Hivyo tena, mimi nina kupita atatoa wangu, wangu texture, na sasa marudio. Hii ni kwenda kuwa ambapo katika dirisha ni kwenda kuwa inayotolewa. Na kisha, kwa sababu mimi nina changamfu kitu, mimi haja ya harakati, Mimi nina kwenda kuwa uppdatering sprite msimamo juu ya sura ya kila. Hivyo nina hii mara kwa mara aitwaye kitabu kasi katika vitengo ya saizi kwa pili. Sasa, kila wakati sisi kufanya harakati, sura ni 1/60 tu ya pili. Hivyo nina kwenda kugawa kwamba kwa 60. Na kisha, hebu angalia, mimi nina subtracting kwamba kutoka nafasi y. Kwa nini mimi subtracting? Tutaweza kupata kwamba katika pili. Hivyo basi mimi kusafisha rasilimali yangu na mpango juu. Basi hebu kufanya hivyo. Basi hebu kwenda katika kufanya SRCS = hello4 animation.c, wote haki? Mchezo. Kuna kwenda. Hivyo mimi kuwa ni scrolling up dirisha, ambayo ni pretty nadhifu. Lakini kushikilia, nilikuwa subtracting kutoka nafasi y kila wakati. Nini kinaendelea huko? Naam, zinageuka kuwa katika SDL, na kwa kweli, katika zaidi graphics kompyuta, asili ya mfumo wa kuratibu ni juu kushoto wa dirisha. Hivyo mwelekeo chanya x huenda hela dirisha yako na haki. Na chanya y mwelekeo kweli inakwenda chini. Hivyo tena, asili katika kushoto juu ya dirisha yako, chanya y mwelekeo ni chini, na chanya x ni kwenda kulia. Hivyo wakati mimi Ondoa kutoka y nafasi, hiyo ni kwenda kufanya ni kwenda juu ya hasi y mwelekeo, ambayo ni up window. Hivyo kwamba ni nini kinaendelea huko. Baridi. Hebu tuangalie faili ijayo. Hapa ni sehemu ya kuonyesha ambapo sisi hatimaye kupata kwamba X katika kona ya dirisha kwamba walidhani karibu ya dirisha kufanya kazi. Hivyo nini kinaendelea? Sisi initialize SDL, kujenga dirisha, kujenga renderer, mzigo wa Kisasa, kujenga texture kama tumeona kabla. Tuna huo marudio Mstatili kama kabla, wito huo swala texture. Lakini wakati huu, tuko kisha kwenda kugawanya upana na urefu wa safari yetu na 4. Hii tu ina athari ya kuongeza mfano wetu chini wakati sisi kuonyesha ni katika dirisha na watu wanne. Hivyo hiyo ni pretty nadhifu. Tunaweza tu wadogo tu kama hiyo. Sisi ni kwenda kuanza sprite katikati ya screen. Na sasa tuna x na y kasi na re zote mbili kwenda kuanza saa sifuri. Hii ni faili vibaya. Nasikitika. Hivyo hiyo ni kweli wote. Hayo ni yote bado katika faili hii. Tuna kugawanya na 4 na kila kitu. Hivyo hapa tuna wetu x na y nafasi kwa katikati ya dirisha. Na sisi kuwapa kasi ya awali ya kasi hii mara kwa mara, ambayo Naamini ni 300 saizi per pili. Sasa, tuna hii int inaweza tu kama vile kuwa bulin aitwaye karibu ombi. Na badala ya kufanya kitanzi usio juu ya timer hapa, tunakwenda kuwa changamfu kama muda mrefu kama karibu si ombi. Hivyo ni jinsi gani sisi mchakato matukio? Naam, SDL foleni juu ya matukio katika halisi foleni nyuma ya pazia. Na kisha kila sura, tunaweza dequeue matukio na ile foleni kwa kutumia hii SDL_PullEvent simu. Na tena, dhahiri kwenda kusoma kuhusu hili katika nyaraka. Kuna undani mengi zaidi na mengi kazi zaidi unaweza kutumia kwa hili. Sisi kupita anuani ndilo hili, SDL_Event kwamba sisi hapa juu ya stack. Sasa, ni nini SDL_event? Kwa sababu SDL, kama sisi kuangalia katika documentation-- hebu kuona, API kwa jamii, pembejeo matukio, tukio utunzaji, tunaweza kuangalia idadi matukio ya mbalimbali hapa na tunaweza kuona kuna tani wote kwa jumla. Hivyo ni jambo hili SDL_Event nini? SDL_Event ni muungano. Wow, nini muungano? Wameweza pengine kamwe kusikia kwamba kabla. Na hiyo ni sawa. Muungano ni aina ya kama struct, isipokuwa struct ina nafasi kwa wote wa mashamba yake na kumbukumbu, ambapo chama cha ina tu nafasi ya kutosha na kifafa kubwa moja ya mashamba yake, maana yake inaweza tu kuhifadhi moja ya mashamba yake wakati huo, ambayo aina ya mantiki kwa matukio, sawa? Tunaweza kuwa na keyboard tukio au tukio dirisha, lakini tukio moja hawezi kuwa wote wawili a tukio keyboard na tukio dirisha, hivyo ni d kuwa silly kuwa na nafasi kwa ajili ya wote wa wale ndani ya tukio muungano wetu. Hivyo kama alitaka kujenga umoja yako mwenyewe, inaonekana sawa kama kujenga struct, ila kwa kuwa tunatumia neno la muungano badala ya struct Keyword. Na kumbuka, kwa wote wa mambo ndani ya chama chako, kutofautiana halisi kwamba ni chama cha inaweza tu kuwa moja ya maadili hayo kwa muda. Hivyo ni jinsi gani sisi tunasema ni aina gani ya tukio sisi tu popped mbali ya foleni hili? Naam, tunaweza kupima kwa event.type. Na kama hiyo ni sawa kwa SDL_Quit, tunajua ni tukio ambalo ilitokana wakati sisi kugonga kwamba X katika kona ya dirisha. Na tunaweza kuweka karibu aliomba sawa na 1. Wengine ni baadhi tu sauti kwamba umefanya kuona mbele. Basi hebu kwenda mbele na kufanya hii na kuona jinsi kazi. Hivyo mimi nina kwenda aina ya kufanya na kisha SRCS = hello5_events.c. Kuna sisi kwenda. Michezo. Sasa, tunaweza kuona ni Hakika scaled chini na watu wanne. Na sasa ni bouncing kuzunguka. Mimi na baadhi ya kugundua mgongano kinachoendelea na pande mbili za dirisha tuweze tuangalie. Na kile kinachotokea wakati mimi kwenda kuifunga? Ni kufunga. Ajabu. Tumepokea tukio hilo. Na sisi kubebwa yake. Basi hebu kuangalia nyuma katika kanuni. Hivyo ni jinsi gani mimi kupata bouncing kuzunguka kama hayo? Kumbuka mimi kuweka wote x na y awali kwa kasi. Na kasi ni chanya mara kwa mara, hivyo hiyo ni kwenda kupata hiyo kuanzia nje kwenda chini na kwenda kulia. Sasa, sura ya kila, pamoja na utunzaji matukio yoyote ambayo yanaweza kuwa ilitokea, Mimi nina kwenda kuchunguza kama sprite yangu anajaribu kwenda nje ya dirisha. Hivyo tunaweza kufanya hivyo kwa kuangalia tu x_pos kwa 0, y_pos 0, na kisha Pia x_pos na y_pos kwa dirisha upana na urefu dirisha. Taarifa Nimekuwa subtracted upana wa sprite. Na hii ni kwa sababu kama mimi si Ondoa upana wa sprite, ingekuwa tu kuangalia kwamba asili ya sprite hakwenda nje ya dirisha. Lakini tunataka nzima upana wa sprite daima kuwa ndani ya dirisha na urefu mzima wa sprite daima kuwa ndani ya dirisha. Hivyo kwamba ni nini kutoa ni kwa. Mengi ya jiometri hapa Unaweza kuwa na manufaa kwa kuteka ni nje juu ya karatasi na kuratibu mfumo wa kuona kinachoendelea. Hivyo kama mimi yanapogongana, mimi tu tu upya nafasi hivyo kwamba si kwenda nje ya screen. Na mimi nina kwenda kwa, ikiwa ni bounces kwenye moja ya sidewalls, Mimi nina kwenda yanatofautiana x kasi ili kuanza bouncing katika upande mwingine. Na vile vile, kama ni hits juu au chini, Mimi nina kwenda kuweka y kasi sawa na hasi y kasi, ili kwamba itakuwa bounce nyuma. Hivyo hiyo ni jinsi sisi got kwamba hapa. Na vyeo uboreshaji kama tumeona kabla, kugawanya na 60, kwa sababu tuko tu kuchukua 1/60 wa pili. Na kisha utoaji, sawa kama kabla. Na hivyo ndiyo kila kitu kwamba kinachoendelea faili hii. Hivyo hiyo ni jinsi sisi kufanya matukio. Jambo kuu kuchukua hapa ni hii kazi SDL_PullEvent. Na unapaswa dhahiri kusoma nyaraka zaidi kuhusu SDL_Event muungano, kwa sababu aina hii data ni sana, muhimu sana, kwa sababu sisi kuitumia kwa kila aina ya matukio. Kwa mfano, sisi kuitumia kwa ajili ya keyboard matukio, ambayo ni nini faili hili ni kwa. Basi je, tuna? Tuna kitu kimoja kama kabla, initialize SDL, kujenga dirisha, kujenga renderer, mzigo picha katika kumbukumbu, kujenga texture. Tena, tunakwenda na hii Mstatili dest, tunakwenda wadogo picha na nne, kufanya hivyo kidogo kidogo. Sasa, sisi ni kwenda kuanza sprite katikati ya screen. Lakini wakati huu, tunakwenda kuweka x awali na velocities y na sifuri, kwa sababu keyboard ni kwenda kudhibiti hizo. Na zaidi ya hapo, tunakwenda kuweka wimbo wa vigezo hivi juu, chini, kushoto, na haki. Na kwamba itakuja kushika wimbo wa kama tumekuwa taabu vifungo keyboard kwamba yanahusiana na juu, chini, kushoto, na kulia. Sasa, hii ni aina ya dhana kwa sababu tunaweza kutumia W, A, S, D hapa, au halisi funguo mshale. Tutaweza kuona kwamba katika haki ya pili. Hivyo sisi ni kwenda kwa mchakato tukio kama kabla. Sisi kuvuta tukio hilo. Lakini sasa tunakwenda kubadili juu ya aina ya tukio hilo. Kama ni SDL_Quit, tuko kwenda kuweka karibu aliomba moja, tu kama kabla. Ambacho kinafanya x katika kona ya dirisha, ili dirisha yetu kweli kufunga. Vinginevyo, kama sisi kupata muhimu SDL chini tukio, ambayo ina maana sisi taabu muhimu, kisha nini tunakwenda kufanya ni tuko kwenda kubadili juu ya jambo hili hapa, ambayo means-- hivyo event.key ina maana kutibu tukio muungano wetu, kwenda na kupata ufunguo tukio muundo ndani yake. Hivyo ni zinageuka kuwa hii muungano ni muundo tukio muhimu. Na kisha kwenda muhimu muundo wa tukio ya uwanja wake aitwaye keysym na kisha scancode. Na tena, dhahiri kusoma nyaraka kuhusu hili. Keyword pembejeo kuvutia kabisa. Unaweza kupata namba Scan au maadili ya msingi. Na ni kidogo hila, lakini nyaraka ni nzuri kabisa. Hivyo kama tunaona kificho Scan kwa vyombo vya habari wetu muhimu kuwa W au juu, tunakwenda kuanzisha sawa na 1. Na kisha sisi kuvunja nje ya kwamba kubadili. Kama ni A au kushoto, sisi kuweka kushoto na 1, et kadhalika, na kadhalika, kwa chini na kulia. Sasa, nje katika kubadili hii nje, kama tunaona ufunguo up tukio, hiyo ina maana tumekuwa iliyotolewa ufunguo na sisi ni tena kubwa ni. Hivyo nina kwenda kusema juu ni sawa na 0, kushoto ni sawa na 0, chini ni sawa na 0, haki sawa 0, nakadhalika. Na taarifa tulio nao katika kila moja ya haya kesi mbili kuweka haki karibu na kila mmoja na hakuna kificho tofauti kwa kesi ya kwanza, ambayo ina maana kwamba kama ni S au chini kulia hapa, ni kwenda kutekeleza kanuni hii. Hivyo hiyo ni pretty Handy. Ni kuzuia sisi kuwa na kufanya zaidi hali na ikiwa na mambo kama hiyo. Hivyo sisi ni kwenda kwa kuamua kasi. Sisi kuweka kasi kwa 0. Basi kama ni taabu juu na si chini, basi sisi kuweka y kasi kwa kasi hasi. Kumbuka hasi, kwa sababu hasi y mwelekeo ni juu. Na chanya y mwelekeo ni chini. Kama ni taabu chini na si juu, basi tuko kwenda kuweka kwa kasi chanya, ambayo ina maana kwenda chini ya screen. Same kitu na kushoto na kulia. Na kisha tunakwenda update vyeo tu kama ilivyokuwa kabla. Sisi ni kwenda kufanya mgongano kugundua na mipaka, lakini sisi siyo kwenda kwa upya kasi, kwa sababu kasi ni kudhibitiwa na keyboard. Lakini sisi ni kwenda upya vyeo kuitunza katika dirisha. Na tunakwenda kuweka vyeo katika struct na kisha kufanya yote utoaji mambo kutoka mbele. Basi hebu angalia nini anafanya. Hivyo kufanya SRCS-- hebu angalia, hii ni hello6_keyboard.c. Oh, hakuna. Hivyo tulipata baadhi onyo hapa. Na kwamba tu kusema hatukuwa kuangalia kwa kila aina moja inawezekana wa tukio hilo. Hiyo ni sawa, kwa sababu kuna 236 kati yao au zaidi. Hivyo nina kwenda kwa kupuuza onyo hizo. Ni bado ulioandaliwa faini. Hivyo nina kwenda ya kucheza mchezo. Siyo kusonga mbele. Lakini sasa, wakati mimi mash kwenye keyboard yangu, Siwezi kufanya baadhi ya harakati WASD hapa, Mimi kutumia mshale funguo yangu pia. Na taarifa, hata kama niko uendelezaji wa kulia sasa hivi, si kwenda nje ya dirisha, kwa sababu mimi upya juu ya kila sura. Hivyo hiyo ni pretty nadhifu. Unaweza kufikiria kuhamia karibu Mario na baadhi funguo mshale au kitu kama hicho. Na ndiyo, X haina kazi. Faili hivyo mwisho tunakwenda kuangalia, hellow7_mouse. Hii ni kuhusu kupata pembejeo panya. Hivyo katika hili, sisi kuagiza hesabu kichwa, kwa sababu tunakwenda na kidogo ya math hapa. Umri huo, umri huo mambo, marudio, umri huo, kuonekana kwamba kabla. Naam, hii ni ya kuvutia. Hivyo sisi ni nyuma ya kuangalia tu kwa SDL kujiondoa tukio hilo. Kwanini hivyo? Hivyo unaweza kupata panya pembejeo kutokana na matukio. Kama wakati panya wakiongozwa, kupata tukio kwa ajili hiyo. Wakati kifungo panya ni taabu, unaweza kupata tukio kwa ajili hiyo. Lakini kuna mwingine, kidogo rahisi pengine, API kwa ajili ya kupata pembejeo panya. Na hiyo ndiyo tu SDL kupata panya serikali. Hivyo nina int x na kwa y kwa nafasi ya mshale. Mimi kupita kwa SDL_GetMouseState, ambayo unaweka haya. Na hii ni nafasi katika kuratibu mfumo wa dirisha. Hivyo kama wingi ni katika upande wa juu kushoto ya dirisha, kwamba ingekuwa 0, 0. Sasa, nini mimi kwenda kufanya ni mimi nina kwenda kufanya kidogo ya math vector. I bet wewe walidhani ungekuwa si kuona kwamba katika CS50, lakini hapa ni. Mimi nina kwenda kufanya baadhi vector math kupata vector kutoka picha kwa mshale. Na hivyo kwa nini nina hii kutoa hapa? Naam, kama mimi tu kutumika dest .-- hivyo Mimi haja ya kutafsiri panya x na y kwa nusu upana na urefu wa picha, kwa sababu nataka kituo cha picha kuwa kwenda kuelekea panya, si asili ya picha. Hivyo hiyo ni tu kuhakikisha mimi kuzungumza kuhusu katikati ya picha hapa. Kisha sisi kupata delta x na y, ambayo Kuna tofauti gani kutoka lengo kwa hali halisi ya picha. Na kisha tunaweza kupata mbali na hapa, ambayo ni kwenda kuwa Pythagorean theorem, mraba mizizi ya x Mara x pamoja mara y y. Sasa ili kuzuia jitter, na siwezi kuonyesha wewe nini hii haina kama si kufanya hivyo, kama umbali kati ya mshale na kituo cha picha ni chini ya miaka mitano, Mimi tu si kwenda hoja picha. Vinginevyo, sisi kuweka kasi. Na sisi kuweka hivyo kwamba kasi siku zote kuwa mara kwa mara. Na matokeo halisi ya yote hisabati hii ni kwamba picha ni kwenda kuelekea kwenye mshale. Sasa, zinageuka kuwa SDL_GetMouseState, pamoja na kuweka x na y hoja hapa, pia anarudi int kwamba sambamba kwa hali ya kifungo panya. Hivyo hatuwezi kusoma kwamba moja kwa moja, lakini tunaweza kutumia macros haya, moja bitwise operator, si kwamba inatisha, tu bitwise na. Hivyo tunasema vifungo, ambayo ni matokeo ya SDL_GetMouseState yetu, kama kwamba na bitwise na, hii jumla hapa, SDL_BUTTON_LEFT. Hivyo hii ni kwenda tu kutatua kwa bitmap kwamba sambamba kwa upande wa kushoto mouse kuwa taabu. Na hivyo kama bitwise na hutokea na ni si sifuri, ambayo ina maana kushoto kifungo ilikuwa taabu, kisha sisi ni kweli kwenda yanatofautiana wote x na y velocities, ambayo itakuwa tu kufanya sanamu wamekimbia. Mwisho vyeo. Migongano detections, kuiona wote kabla, utoaji, sawa. Hebu kufanya hivyo. Hivyo wewe got kufanya SRCS = hello7_mouse.c. Kubwa. Hakuna makosa. Na mchezo. Hivyo hapa nina panya yangu. Na picha ni kweli Chasing panya yangu. Sasa, katika mchezo wewe kufanya, labda hii ni kama chasing adui tabia yako kidogo au chochote. Lakini hapa tuna picha Chasing panya. Na wakati mimi click, panya kuanza chasing picha na picha ni kukimbia kutoka panya. Hivyo hiyo ni pretty cool. Na taarifa tena, kuna bado kutambua mgongano hapa. Hivyo kwamba ni kidogo mwisho demo mimi na kuanzisha hapa. Na hebu tuangalie jambo moja zaidi. Hivyo nyuma hapa, nilivyoeleza jitter hii. Sawa. Hivyo kama umbali ni chini ya miaka mitano, saizi Mimi nilikuwa kuweka x na y kasi na sifuri. Nini kinatokea kama sisi kujikwamua kwamba? Hivyo nina kwenda tu kufanya hivyo. Tafadhali udhuru mtindo huu kutisha, lakini sisi maoni nje kificho sahihi. Hivyo nina kwenda kuokoa na kufanya amri hiyo kutoka mbele kwa kufanya hivyo. Sawa. Na sasa nini kitatokea? Nzuri. Bado tuko zifuatazo panya tu kama kabla, lakini wakati sisi kupata panya, sisi tumepewa jitter hii ya jumla. Nini kinaendelea huko? Naam, katika vector yetu hisabati, kumbuka tulikuwa kuchukua umbali kati mshale na katikati ya picha? Naam, kama kwamba mbinu 0, sisi kuanza kupata kama aina hii ya tabia mambo ambapo picha ni aina ya kama oscillating kuzunguka mshale. Na kwamba kujenga jitter hii. Na kwamba ni kweli mbaya. Na pengine hawana wanataka michezo yako kufanya hivyo, isipokuwa ni aina fulani ya athari maalum. Hivyo ndiyo sababu tuna tu hii holela kukatwa la tano saizi, ambapo tunasema ikiwa ni ndani ya tano saizi, tuko nzuri. Hatuna haja ya hoja picha tena. Hivyo kwamba ni nini kinaendelea huko. Hivyo hiyo ni pretty kiasi. Wewe sasa kujua jinsi ya kujenga dirisha, mzigo wa Kisasa, kuteka picha ya dirisha, kupata pembejeo keyboard, kupata pembejeo panya, kuna kundi la wengine pembejeo kwamba wewe ungekuwa si kujua jinsi ya kupata kama wewe tu kutumia dakika chache kuangalia nyaraka. Hivyo kweli kuwa kabisa zana chache ovyo wako sasa kuandika mchezo full-fledged. Sasa, kila mchezo mahitaji ya baadhi ya redio, lakini nyaraka redio Pia nzuri sana. Na mimi niko tayari bet kwamba kama wewe kuelewa mambo yote kuongelea leo kwa picha, na nyuso, madirisha, na kila kitu, basi kuhesabia nje API redio sio kwenda kuwa mbaya. Hivyo mimi kuangalia mbele kuona nini kujenga na SDL.