THOMAS જીવંત: બધા અધિકાર. હાય દરેક વ્યક્તિને. હું થોમસ લાઇવલી છું. આ પરિસંવાદ હોઈ ચાલે છે SDL ઉપયોગ સી 2D ગેમ્સ લખવાનું. તેથી હું તમને બધા છો ખબર અરે વાહ, હું ખરેખર પૂછવા રમતો રમે છે અને રમતો બનાવવા માંગો છો, પરંતુ આ SDL બિઝનેસ શું છે? તેથી SDL એક સી પુસ્તકાલય છે. તે સરળ માટે વપરાય છે DirectMedia સ્તર. અને તે એક ક્રોસ પ્લેટફોર્મ છે રમત વિકાસ પુસ્તકાલય. તે વિન્ડોઝ, મેક પર કામ કરે છે Linux, પણ iOS અને Android. તે જેવી વસ્તુઓ સંભાળે ઓડિયો સિસ્ટમો માટે પ્રવેશને કોમ્પ્યુટર, કીબોર્ડ, અને માઉસ, જોયસ્ટિક, તેઓ જોડાયેલ કરી રહ્યાં છો. મોબાઇલ પર, તે પણ કરી શકો છો ઇનપુટ અને તે તમામ સ્પર્શ. અને અલબત્ત, તે ગ્રાફિક્સ સંભાળે છે, સ્ક્રીન પર વસ્તુઓ ચિત્રકામ. તેથી તે ખૂબ જ વ્યાપક છે, તેમ છતાં વપરાય છે તમે તે પહેલાં સાંભળ્યું ન શકે. તે, ઉદાહરણ તરીકે, માં સમાયેલ છે, વાલ્વ સ્રોત એન્જિન, જેમ કે સત્તા જે ગેમ્સ પોર્ટલ અને ટીમ ફોર્ટ્રેસ 2. તે ખૂબ જ મોટી સંખ્યામાં પણ છે બહાર આવે છે કે ઇન્ડી રમતો, તેથી હું તમને તે જોવા માટે ઉત્સાહિત છું તે બધા સાથે બનાવવા કરવામાં આવશે. આ પરિસંવાદ ગોલ તમે વિચાર છે SDL સાથે વિકાસ કરી બહાર સુયોજિત કરવા માટે. અમે કેવી રીતે જાણવા માટે જઈ રહ્યાં છો રમત વિન્ડો બનાવવા માટે. અમે sprites બનાવવા જઈ રહ્યાં છો કે જે તમારી રમત છબીઓ હોય છે કે આસપાસ ખસેડી શકો છો. અમે કેવી રીતે જાણવા માટે જઈ રહ્યાં છો અને sprites ચેતન, તેથી તેમને આસપાસ ખસેડવા બનાવવા તેમને સમય પર બદલો. અને અમે કેવી રીતે જાણવા માટે જઈ રહ્યાં છો કીબોર્ડ અને માઉસ મેળવવા માટે કમ્પ્યુટર ઇનપુટ. અમે શું વાત કરવામાં આવશે નહીં આજે 3D ગ્રાફિક્સ છે, કે ખૂબ જ જટિલ છે, કારણ કે અમે સમય નથી કે વિષય. અમે જાણવા આવશે કેવી રીતે કરવા માટે અમારી રમતો પર ઓડિયો ભજવે છે. અને અમે મકાન કરવામાં આવશે નહીં Linux પરંતુ ખાવા માટે. હવે ચેતવણીઓ કે ત્યાં છે, આસ્થાપૂર્વક, ઓવરને પરિસંવાદ દ્વારા, તમારી સાથે આરામદાયક હશો આ SDL દસ્તાવેજીકરણ, જેથી તમે બહાર આકૃતિ જાઓ સમક્ષ રજુ કરવાનો પ્રયત્ન કરીશું કેવી રીતે તમારા માટે ઓડિયો રમવા માટે. પણ કામ કરીશું Mac અથવા પીસી માટે મકાન બરાબર Linux માટે નિર્માણ જ, પરંતુ સેટઅપ રહ્યું છે થોડી અલગ છે. તેથી જો તમે આકૃતિ કરવાનો પ્રયત્ન કરીશું આ વસ્તુઓ કરવા માટે બહાર કેવી રીતે આજે પરિસંવાદ ના અંત સુધીમાં. આ સેટ તેથી, અમે જઈ રહ્યાં છો વર્ચ્યુઅલ મશીન વાપરવા માટે. અમે, કારણ કે આ CS50 IDE ઉપયોગ કરશે અમે હમણાં જ સી માં લખી શકાય જઈ રહ્યાં છો પરંતુ જ્યારે IDE અમે એક બ્રાઉઝર નથી કારણ કે નવી વિન્ડો અથવા ડિસ્પ્લે બનાવી શકતા નથી તે ગ્રાફિક્સ. તેથી અમે વર્ચ્યુઅલ મશીન જરૂર છે. તેથી તમે સૂચનોને અનુસરી શકે છે અહીં manual.CS50.net/appliance/15 પર સત્તાવાર CS50 સાધન સ્થાપિત કરવા માટે, જે માત્ર એક Linux વર્ચ્યુઅલ છે મશીન. અને પછી તમે એક વાર કે બધા તેને up-- સુયોજિત કારણ કે, થોડો સમય લાગી શકે છે તમે જઈ રહ્યાં છો એક ખૂબ મોટા download-- VM ને sudo તત્પર વિચાર સુધારામાં ચલાવવા માટે. અને તે ખરેખર રહ્યું છે બધા સોફ્ટવેર અપડેટ કરવા તમારા વર્ચ્યુઅલ મશીન પર પેકેજો. કે પછી, તમે ચલાવવા માટે જઈ રહ્યાં છો sudo સ્થાપન, libsdl2-2.0-0 ચાલાક-વિચાર libsdl2-DBG, libsdl2-દેવ, અને વધુમાં libsdl2 ઇમેજ-2.0-0, libsdl2 ઇમેજ-DBG, અને libsdl2 ઇમેજ-dev. તેથી તે શું કરે છે? તે માત્ર ડિબગ સ્થાપિત માહિતી, દસ્તાવેજીકરણ, હેડરો, અને બે લાઇબ્રેરીઓ માટે દ્વિસંગીઓ. SDL 2.0, જૂના નિયમિત, અને અન્ય પુસ્તકાલય કહેવાય SDL છબી, જે અમે ઉપયોગ કરી રહ્યા છીએ અમારા રમત માં ઈમેજ ફાઈલો લોડ કરવા માટે. તમે પણ છે તેથી એક વખત , તે પૂછે છે માત્ર ત્યારે, તે તમે માત્ર હા પ્રકાર દાખલ હિટ પેલા પેકેજો સ્થાપિત કરવા માટે, અને પછી તમે જવા માટે સારા પ્રયત્ન કરીશું. તેથી જો તમે વિતરણ કોડ મેળવવા માટે ઓહ પ્રિય can--, આ સુધારેલ નથી. તમે જ્યાં સુધી GitHub account-- છે તમે GitHub એકાઉન્ટ છે, તો તમે આ ગિટ કરી શકો છો રેપો, ક્લોન કરવા માટે આદેશ અને તે ગિટ ડાઉનલોડ કરશે તે તમામ કોડ સાથે રેપો કે જેથી તમે કોડ પડશે. તમે GitHub ન હોય તો એકાઉન્ટ, શું તમે કરવું જોઈએ પ્રકાર છે wgithttps: //github.com/tlively/sdl seminar-- અને તેને અહીં different-- છે /archive/master.zip. તેથી ફરી, કે જે ચોક્કસ જ છે URL, તે જ હશે સિવાય tlively / SDL_seminar / master.zip અને તમે તે ડાઉનલોડ કરવા માટે wgit ઉપયોગ કરી રહ્યાં છો. અને પછી તમે માત્ર આ કરી શકો છો કે આર્કાઇવ ઝિપસાંકળ છોડવી અને પછી તમે પડશે બધા સ્રોત કોડ. તે વિશે તેથી માફ કરશો. અને પછી આ કોડ પણ અંતે યોજવામાં આવશે એક દંપતિ માં આ CS50 પરિસંવાદ વેબ પાનું દિવસ. બધા અધિકાર. તેથી અમે કેવી રીતે પ્રારંભ કરી શકું આપણા પોતાના રમત લખવા? વેલ, પ્રથમ વસ્તુ અમે કરવા માંગો છો જઈ રહ્યાં છો આ SDL દસ્તાવેજીકરણ જોવા છે. તેથી અહીં VM છે. અને અહીં વેબ પાનું છે. હું libsdl.org રહેવા માટે નેવિગેટ છે. હું અહીં શું કરવા જઇ રહ્યો છું પર જાઓ છે સાઇડબારમાં, દસ્તાવેજીકરણ હેઠળ, અને વિકિ પર ક્લિક કરો. આ વિકિ મને લાવશે SDL માટે દસ્તાવેજીકરણનો મોટા ભાગના છે. અહીં સાઇડબારમાં પર, અમે છો શ્રેણી દ્વારા API ક્લિક કરો જઈ, કારણ કે આપી રહ્યું છે અમને એક સરસ નિર્ણાયાત્મક જુઓ SDL માટે સમગ્ર API ના. તેથી, ઉદાહરણ તરીકે, અમે મૂળભૂત આરંભ અને નીચે બધા પ્રકારની બંધ SDL વાપરવા માટે વહીવટી સામગ્રી, અને પછી અમે વિભાગ માટે છે સ્ક્રીન પર વસ્તુઓ પ્રદર્શિત કરે છે. તે વિડિઓ છે. ઇનપુટ ઘટનાઓ, કે રહ્યું છે કીબોર્ડ તરફથી ઇનપુટ, માઉસ ઇનપુટ મેળવવામાં, અને જોયસ્ટિક, તમે પણ તે હોય છે. વસ્તુઓ માટે બળ પ્રતિસાદ છે રમત નિયંત્રકો, જેમ જે અમે વિશે વાત કરવા જઈ રહ્યાં છો. અને અહીં ઓડિયો છે. અને પછી અન્ય એક ટોળું હોય છે SDL માટે તમે કરી શકો છો કે સામગ્રી. પરંતુ આજે અમે ધ્યાન કેન્દ્રિત કરવા માટે જઈ રહ્યાં છો અહીં આરંભ પર, વિડિઓ છબીઓ પ્રદર્શિત વિભાગ અને ઇનપુટ ઘટનાઓ સંભાળવા. તેથી આ મુખ્ય છે દસ્તાવેજીકરણ વિભાગો તમે વિશે ચિંતાજનક જોઇએ. માત્ર આનંદ માટે, અમે ઉપર જાઓ તો અહીં અને નામ દ્વારા API પર ક્લિક કરો અમે દરેક યાદી જોઈ શકો છો આ SDL પુસ્તકાલય એક વસ્તુ. તેથી આ બધા કાર્યો, એન્યુમરેશન્સ, માળખાં, સામગ્રી ક્રેઝી જથ્થો મૂળાક્ષર ક્રમમાં. અને સ્પષ્ટ રીતે, ત્યાં સુધી તમે કરી રહ્યાં છો ખબર છે, આ પણ મદદરૂપ થઈ નથી જઈ રહ્યા છે જે અમે શ્રેણી દ્વારા API કરી શા માટે છે. તેથી આપણે પ્રારંભ કરીએ. આસ્થાપૂર્વક તમે પહેલાથી જ કર્યું છે વિતરણ કોડ ડાઉનલોડ કરી છે. અને તેથી તમે શું કરી શકો અધિકાર છે, અહીં CS50 સાધન, ખાલી ટર્મિનલ ખોલો. અહીં અમે જાઓ. તેથી હું પહેલેથી ડાઉનલોડ કર્યું ઝિપ ઉપયોગ વિતરણ કોડ પદ્ધતિ. અને હું તેને unzipped છે. તેથી અહીં તે SDL પરિસંવાદ માસ્ટર છે. તેથી મને લાગે છે કે ડિરેક્ટરીમાં જાઓ જાઉં છું. અને શું અમે અહીં જુઓ કે અમે સાત સી ફાઈલો હોય છે. અને આ કોડ રહ્યું છે આજે આપણે જોઈ શકાય જઈ રહ્યાં છો. અમે એક Makefile હોય છે. અને અમે એક રિસોર્સિઝ ડિરેક્ટરી હોય છે, જે ફક્ત એક છબી છે કે તમે તરત પૂરતી જોયા આવશે. તેથી આપણે આ ફાઈલો ખોલો દો જી સંપાદિત કરો સંપાદક મદદથી. તેથી હું આ બધી ફાઈલો ખોલવા માંગો છો હેલો સાથે શરૂ થાય છે અને સી સાથે અંત. અહીં અમે જાઓ. તેથી કે જે એક નાના વિન્ડો છે, તેથી અમે છો મોટા કે બનાવવા માટે પ્રયાસ કરવા જઈ રહી છે. ના, તે દૂર થયું. બધા અધિકાર. તેથી અહીં ખૂબ જ પ્રથમ છે ફાઇલ અમે જોવા માટે જઈ રહ્યાં છો. તે hello1_sdl.c કહેવાય છે. અને આ બધા કરે છે SDL પ્રારંભ છે પુસ્તકાલય અમે તેનો ઉપયોગ શરૂ કરી શકો છો કે જેથી. તમે આવો કેવી રીતે ખબર પડશે આ કોડ તમારી જાતને સાથે? વેલ, અમે ઉપર જોવા હોય તો દસ્તા પર અને અમે આરંભ જાય અને વિભાગ નીચે બંધ તે અમને તમામ કહી રહ્યું છે SDL પ્રારંભ કરવા માટે કેવી રીતે. તેથી ચોક્કસપણે આ કેટલાક અન્ય સમય વાંચો. તે તમે બધા કહી રહ્યું છે અહીં શું થઈ રહ્યું છે તે વિશે. પરંતુ આ બાબત મુખ્ય સમસ્યા એ છે કે અમે તે આ કાર્ય SDL કૉલ કરવાની જરૂર અને તે પસાર શું વસ્તુઓ પ્રકારના અમે ગ્રંથાલયનો પ્રારંભ કરવા માંગો છો. અમારા કિસ્સામાં તેથી અમે ફક્ત જઈ રહ્યાં છો હવે વિડિઓ આરંભ કરવા માટે, કે જેથી અમે છબીઓ પ્રદર્શિત શરૂ કરી શકો છો. અહીં કુલ સ્કોર, જો તમે જોઈ શકો છો અમે તેને એક SDL પર ક્લિક કરો, અમે પણ વધુ માહિતી મેળવી શકો છો, વળતર કિંમત સમાવેશ થાય છે. જેથી અમે તેને અહીં જુઓ કે returnes સફળતા પર શૂન્ય. અમારા કોડ તેથી, અમે જઈ રહ્યાં છો તે શૂન્ય પાછા નથી તો જુઓ, અને તે પાછા ન થાય તો શૂન્ય છે, તેથી તે સફળ રહી ન હતી પછી અમે ફક્ત છાપી રહ્યા છીએ આ અન્ય કાર્ય ની મદદથી એક ભૂલ, એક શબ્દમાળા આપે છે કે જે SDL વિચાર ભૂલ, આવી કે ભૂલ વર્ણન. અમે તે છાપી રહ્યા છીએ ભૂલ અને પછી અમે માત્ર છો આ કાર્યક્રમ બહાર નીકળવા માટે રહ્યું એક ભૂલ કોડ સાથે. અમે જરૂર છે કે જે પછી અન્ય વસ્તુ છે કરવા માટે, કાર્યક્રમ બહાર નીકળે તે પહેલાં, અમે સફળતાપૂર્વક SDL આરંભ તો, અમે હમણાં જ SDL છોડી કૉલ કરવાની જરૂર છે. અને તે સાફ હેન્ડલ રહ્યું છે અમારા માટે SDL આંતરિક સંસાધનો બધા. તેથી દસ્તાવેજીકરણ, ફરી ત્યાં અહીં અમે આરંભ છે અને વિભાગ નીચે બંધ દસ્તાવેજીકરણ. તમે માત્ર પર ક્લિક કરી શકો છો અહીં કાર્ય, SDL છોડી, અને તમે પણ છે કે જે વિશે બધા વાંચી શકે છે. અને આ કાર્ય ઘણો દસ્તાવેજીકરણ પૃષ્ઠો ઉદાહરણ કોડ હોય છે, તેથી આ ખૂબ જ સારો સ્રોત છે. ચોક્કસપણે અમુક સમય પસાર આ વિકિ ભાગો વાંચન તમે શું કરવા જઇ રહ્યાં છો, તો એક પ્રોજેક્ટ માટે આ. બધા અધિકાર. તેથી તે અમારા સમગ્ર કાર્યક્રમ છે. આપણે હવે હું છું is-- શું કરી શકો અહીં Makefile ખોલવા જઈ, તેથી હું લેવા જાઉં છું કે કામ કરે છે કેવી રીતે જુઓ. અને તે ખૂબ જ સરળ Makefile છે તમે પહેલાં જોઈ કર્યું શું સમાન. મુખ્ય તફાવત એ છે કે, અહીં, આ છે ચાલી પરિણામ દાખલ કરવા માટે જતા હોય છે જો તમે પહેલાથી જ છે જે આ આદેશ તમે SDL સ્થાપિત કર્યા છે, તો સ્થાપિત થયેલ છે. અને આ એક આદેશ છે કે પેદા કરવા જઈ રહ્યું છે કમ્પાઇલર માટે કેટલાક વધારાના ફ્લેગ્સ. આ ઉપરાંત, અમે તેને આપી રહ્યા છો બધા સામાન્ય આદેશો, તેમજ આ બે આદેશો. તેથી -lsdl2 ઇમેજ હાથા આ SDL છબી પુસ્તકાલય લિંક. અને એલએમ ખરેખર લિંક સંભાળે મૂળભૂત C ગણિત લાઇબ્રેરી માં. તેથી અમે જરૂર નથી જઈ રહ્યા છે અમારા C બધી ફાઈલોને માટે તે, અમે કરી શકો છો કે જેથી પરંતુ અમે માત્ર તેમને મૂકી બધું માટે સમાન Makefile ઉપયોગ ફેરફારો વગર. અહીં કુલ સ્કોર સ્ત્રોતો, આ જ્યાં તમે કરશો છે તમે જતા હતા કે જે ફાઈલો મૂકી તમારા પ્રોજેક્ટ માટે કમ્પાઇલ. પરંતુ મારા સી દર એક થી અહીં ફાઇલો મુખ્ય કાર્ય છે તે ગુંચવણ ના થવી રહ્યું છે અમે તેમને બધા મૂકવા જો. તેથી હું માત્ર કહેવા જાઉં છું હવે માટે, hello1_sdl.c, જે અમે અંતે જોવામાં આવે છે. હું પાછા જાઓ તેથી જો અહીં, હું બનાવવા કરી શકો છો. અને તે શું કર્યું તે માત્ર છે કે પ્રથમ ફાઈલ કમ્પાઈલ. અને પછી અમે, કારણ કે ./game ટાઈપ કરી શકો છો તે ઉત્પાદન એક્ઝેક્યુટેબલ છે. અને તે હતી બધા પ્રિન્ટ હતી આરંભ સફળ. તેથી અમે અધિકાર કંઈક કર્યું. પરંતુ તે પ્રકારની કંટાળાજનક હતું અમે વિન્ડો જોઈ ન હતી, કારણ કે કંઇ આસપાસ રહ્યો હતો. એટલા મહાન છે, અમે SDL આરંભ થઈ જાય છે. હવે, ચાલો કંઈક પર ખસેડો થોડી વધુ રસપ્રદ. તેથી અહીં અમે hello2_window.c હોય છે, અને આ એક થોડી વધારે હોઈ ચાલે છે જટિલ સી કાર્યક્રમ છે કે જે SDL પહેલા ગમશે પ્રારંભ, હવે સિવાય અમે પણ જઈ રહ્યાં છો SDL ટાઈમર પ્રારંભ કરવા માટે. અને આ અમને દો રહ્યું છે આંતરિક ટાઈમર ઍક્સેસ અને ઉપયોગ કાર્યો સમય લગતા. અને પછી નીચે અહીં જુઓ. અમે શું અમે આ નિર્દેશક હોય છે એક SDL વિન્ડો સ્ટ્રક્ટ, જે આ કોલ દ્વારા બનાવવામાં કરી રહ્યું છે કાર્ય કરવા માટે, SDL વિન્ડો બનાવો. હવે, આ દલીલો ઘણો લે છે, તેથી આ દસ્તાવેજો જુઓ જવા દો. તેથી ફરી, હું જાઉં છું શ્રેણી દ્વારા API, હું છું પ્રથમ અહીં વિડિઓ નીચે રહ્યું છે, અને વિભાગ વિન્ડો વ્યવસ્થાપક પ્રદર્શિત કરે છે. તેથી આ વિભાગ છે તે સામગ્રી એક ટન, પરંતુ તમે મારફતે જોવા હોય તો આ વિધેયો, ​​તમે તે કદાચ એક અમે જુઓ SDL વિન્ડો બનાવવા કહેવામાં આવે છે કરવા માંગો છો, જે ટોચ પર અધિકાર બને છે. અને તેથી આ છે આ કાર્ય માટે દસ્તાવેજીકરણ. વિન્ડો શીર્ષક ચાલી રહ્યું છે, સ્ક્રીન પર એક એક્સ અને વાય સ્થિતિ, તે પહોળાઈ હોય ચાલી રહ્યું છે, ઊંચાઈ, અને પછી તે કેટલાક ફ્લેગો લાગી રહ્યું છે. હવે, અમે ખરેખર વિશે કાળજી નથી હમણાં આ ફ્લેગ્સ કોઇ, પરંતુ તમે કંઈક કરવા ઇચ્છતા હોય તો જેવી સંપૂર્ણ સ્ક્રીન વિન્ડો બનાવવા, તમે તે પર એક નજર કરી શકે છે. હવે માટે, અમે માત્ર જઈ રહ્યાં છો આ ખાસ કિંમતો વાપરવા માટે, SDL વિન્ડો વત્તા કેન્દ્રિત ક્રમમાં એક્સ અને વાય માટે ફક્ત વિન્ડો બનાવવા માટે અમારા સ્ક્રીનની મધ્યમાં છે. તેથી કે શું કરી રહ્યો છે છે. અને વિન્ડો બને તો નલ, એક ભૂલ છે, જેનો અર્થ થાય પછી ફરીથી અમે માત્ર જઈ રહ્યાં છો SDL વિચાર ભૂલ મદદથી ભૂલ છાપો. અને પછી અમે આરંભ કારણ કે SDL, આપણે હવે તેને બંધ કરવાની જરૂર છે. તેથી અમે SDL પહેલાં બહાર નીકળવા કૉલ મુખ્ય માટે એક પરત. તેથી અમે આ વિન્ડોની આસ્થાપૂર્વક ખોલવા છે. અને અમે શું જઈ રહ્યાં છો અમે જઈ રહ્યાં છો છે કરવા માટે 5,000 મિલિસેકન્ડોમાં માટે SDL કૉલ કરવા માટે, જે પાંચ સેકન્ડ તરીકે જ છે. અને અમે પૂર્ણ કરી લીધું છે, તે વિન્ડો નાશ ચાલી રહ્યું છે, , આ SDL પુસ્તકાલય સાફ અને કાર્યક્રમ બહાર નીકળો. તેથી આપણે આગળ વધીશું અને શોટ આપવા દો. તેથી હવે બદલે બદલવા આ Makefile દર વખતે, હું ફક્ત બનાવે છે, અને કરી શકો છો પછી આદેશ વાક્ય પર, સૂત્રોએ બરાબર અને પછી કહે છે અમે સંકલન કરી રહ્યાં છો ફાઇલ. તેથી તે hello2_window.c છે. વિચિત્ર. કોઈ erros. હવે, અમે અમારા એક્ઝેક્યુટેબલ માટે, તો અમે આ વિન્ડોની જુઓ. હવે થોડા છે વિન્ડો સાથે સમસ્યાઓ. અમે તે આસપાસ ખસેડી શકો છો, પરંતુ તે છે તે અંદર આ પૃષ્ઠભૂમિ જંક. તેથી અમે દોરેલા હોય કંઈપણ છે, અને તેથી તે કચરો, માત્ર સંપૂર્ણ, જે ખૂબ ખૂબ અમે અપેક્ષા છે. વધુમાં, અમે વિન્ડો બંધ કરી શકો છો. હું આ એક્સ દબાવીને છું ખૂણે અને કંઈ થઈ રહ્યું છે. તેથી અમે કેવી રીતે સુધારવા માટે જોશો થોડો છે. તેથી આ ભાગ ઠીક કરીએ જ્યાં વિન્ડો પ્રથમ કચરો સંપૂર્ણ છે. તેથી અમે hello3_image.c પર જવા માટે તો, શું અમે થોડી ઉમેર્યા છે કે નહીં તે જોવા કરી શકો છો અહીં વધુ વસ્તુઓ. અમે આ નવી હેડર ઉમેરી છે ટાઈમર કાર્યો વિચાર ફાઇલ. હું અમે છેલ્લા કર્યું કે ધારી એક, પણ, અને હું તેને ઉલ્લેખ કર્યો ન હતો. પરંતુ હવે અમે છો કારણ કે ચિત્રો સાથે કામ કરે છે, અમે SDL સમાવેશ કરવાની જરૂર છબી હેડર ફાઈલ તેમજ. તેથી તે જ વસ્તુ તરીકે છે પહેલાં, અહીં SDL પ્રારંભ, વિન્ડોઝ બનાવવા સાથે જ સોદો. હવે અમે તે પહેલાં જોઇ છે. હવે અમે કહેવાય કંઈક બનાવવાની જરૂર છે પ્રકારની સાથે જાય છે કે જે રેન્ડરર, વિન્ડો સાથે. પરંતુ તે એક પ્રકારની છે છે કે અમૂર્ત પદાર્થ આ બધા કરી ચાર્જ વિન્ડો કામગીરી ચિત્રકામ. અને તે ખરેખર અનુલક્ષે લોડ કાર્યક્રમ માં ગ્રાફિક્સ હાર્ડવેર તમારા કમ્પ્યુટર અથવા તમારા ફોન અથવા ગમે. તેથી અમે કરવા માંગો છો ફ્લેગ્સ તેને પસાર કરવા માટે અને તમારી પાસે આ દસ્તાવેજ જોવા કરી શકો છો અહીં જતા હોય છે વધુ વિગતવાર મેળવવા માટે SDL વેગ રેન્ડર કરવા માટે કે જે તે હોઈ ચાલે છે એનો અર્થ એ થાય ગ્રાફિક્સ હાર્ડવેરનો ઉપયોગ કરીને અને માત્ર સોફ્ટવેર માં અનુકરણ નથી. અને અમે ઉપયોગ જઈ રહ્યાં છો SDL રેંડરર PRESENTVSYNC. VSync ફક્ત બનાવે છે કે જે વસ્તુ છે તમારા ગ્રાફિક્સ સારી અને અટકાવે જુઓ આ વસ્તુ કહેવાય સ્ક્રીન આતંક, જ્યાં અડધા આગામી એક ફ્રેમ અને અડધા ફ્રેમ જ સમયે દોરવામાં અને તે ભયાનક દેખાય છે. પરંતુ ફરીથી, તમે વાંચી જઈ શકે છે તમારા પોતાના પર છે કે જે વિશે. તેથી અમે અહીં કેટલાક ફ્લેગો છે. અને તેથી અમે ફક્ત કહી રહ્યા છીએ આ કાર્ય SDL રેંડરર બનાવો. અમે તે વિન્ડો આપવા જઈ રહ્યાં છો કે રેન્ડરર સાથે સાંકળવા માટે. નકારાત્મક એક અમે શું કાળજી નથી એનો અર્થ એ થાય ગ્રાફિક્સ ડ્રાઇવર અમે ઉપયોગ જઈ રહ્યાં છો. તેથી તે ખૂબ ખૂબ જોઈએ હંમેશા નકારાત્મક એક હોઈ શકે છે, તમે ગ્રાફિક્સ ડ્રાઈવરો વિશે ખબર જ્યાં સુધી. અને પછી અમે માત્ર જઈ રહ્યાં છો તે અમારા ફ્લેગ્સ પસાર કરવા માટે. નલ આપે, તો પછી અમે છો હંમેશની જેમ ભૂલ છાપી રહ્યું છે, પરંતુ તે પછી આપણે પણ જઈ રહ્યાં છો વિન્ડો નાશ પહેલાં તે સાધનો સાફ કરવા માટે SDL છોડી ફોન અને પરત. હવે, રસપ્રદ ભાગ અહીં અમે અમારા છબી લોડ થયેલ છે આ કાર્ય IMG_load મદદથી. આ અમે જઈ રહ્યાં છો માત્ર એક જ કાર્ય છે આ SDL ઇમેજ પુસ્તકાલય માંથી વાપરવા માટે. તે અમે જરૂર માત્ર એક જ છે. તે શબ્દમાળા લે છે કે એક કાર્ય છે કે કોઈપણ ઈમેજ સ્રોત છે. અને તે એક .png હોઈ શકે છે, એક GIF, બીટમેપ, આ કોઈપણ વસ્તુઓ. આ કાર્ય જેથી સરસ છે અને તે શા માટે છે. તે ખૂબ ખૂબ કોઈપણ બંધારણમાં સંભાળી શકે છે. મેમરી અને સ્ટોર્સ તેને લોડ તે એક વસ્તુ SDL સપાટી કહેવાય છે. હવે SDL સપાટી માત્ર એક સ્ટ્રક્ટ છે કે મેમરી છબી માહિતી રજૂ કરે છે. તેથી જો તમે વિશે વધુ વાંચી શકો છો દસ્તા બે છે. અને આ ભૂલો, તો પછી અમે છો સમગ્ર બાબત જ્યાં કરવા જઇ અમે ભૂલ છાપો, બંધ અમારા સંપત્તિ, અને પછી કાર્યક્રમ છોડી દીધું. હવે રસપ્રદ બાબત એ પહેલાં, છે અમે વિન્ડો આ છબી ડ્રો કરી શકો છો અમે ખરેખર તે પોત કરવાની જરૂર છે. હવે પોત અનુલક્ષે લોડ છબી માહિતી ગ્રાફિક હાર્ડવેર મેમરી માં. તેથી સપાટી મુખ્ય છે મેમરી નિયમિત મેમરી અમે બધા સત્ર નો ઉપયોગ કરવામાં આવ્યા છે કે, અને પોત આ અલગ VRAM છે મેમરી ગ્રાફિક્સ કાર્ડ નિયંત્રણો છે. તેથી અમે આ કાર્ય કૉલ SDL_CreateTextureFromSurface. અમે તેને અમારા રેંડરર અને અમારા સપાટી આપે છે. અને પછી અમે ખરેખર છો સપાટી સાથે કરવામાં આવે છે, તેથી અમે ફક્ત તેને મુક્ત જઈ રહ્યાં છો. અમે હવે તેને જરૂર નથી. અને તે પછી આ કોલ તેથી જો errored અને નલ પાછો ફર્યો, પછી અમે સમગ્ર કરી રહ્યા છીએ ફરી વસ્તુ જાણ ભૂલ. બધા અધિકાર. અહીં, અમે કેટલીક માં વિચાર વાસ્તવિક રેન્ડરીંગ કાર્ય કરે છે. તેથી SDL_RenderClear ફોન અને તે પસાર અમારા વિન્ડો સાથે સંકળાયેલ રેંડરર ખાલી વિન્ડો બ્લેક જાય છે. તેથી તે જંક અમે જોયું કે દૂર અમારા વિન્ડો પહેલાં અને તે કાળા બનાવે છે. અને પછી અમે જઈ રહ્યાં છો SDL_RenderCopy કૉલ કરવા માટે, તે અમારા રેંડરર અમારા પોત આપે છે. અને અમે વિશે વાત કરીશું શું આ ક્ષેત્રો થોડી છે. પરંતુ તે ચાલી રહ્યું છે પોત માહિતી લેવા અને તે પર નકલ અમારા વિન્ડો છબી ડ્રો. અમે આ નકલ કર્યું છે તેથી પછી અમારા વિન્ડો પર માહિતી અમે આ વધારાના કાર્ય કરવા માટે હોય છે SDL_RenderPresent કહેવાય છે. અને આ રસપ્રદ છે આ નહીં કારણ કે ડબલ બફરીંગને કહેવાય વિષય માં. તેથી ડબલ બફરીંગને એક ટેકનિક છે કે તમારા ગ્રાફિક્સ ઘણો સારી જોવા બનાવે છે. ફરીથી, તે સ્ક્રીન જબરદસ્ત અટકાવે હું જ્યાં અગાઉ અંગે વાત કરી હતી તમે બે બફરો છે. બેક બફર માં છે મેમરી અને સામે બફર. આગળના બફર શાબ્દિક અર્થ છે શું આ ક્ષણે તમારી સ્ક્રીન પર હોય છે. તેથી અમે આ ભેદ ડ્રો બધા શું, SDL જેવા નકલ અથવા SDL_RenderClear રેન્ડર પાછળ બફર છે. તેથી તેઓ વસ્તુઓ સુધારવા પાછળ બફર. અહીં અમે આ ચિત્ર થઈ શકે છે પાછળ બફર લીલા ચોરસ. તેથી તો અમે શું કરી પૂર્ણ કરી રહ્યાં છો ત્યારે અમારા રેન્ડર કામગીરી, કે જે ખરેખર લાંબા સમય લાગી શકે છે સમય, અમે શું કરવા જઇ રહ્યા છો આ બફરો સ્વીચ છે. તેથી તે શાબ્દિક માત્ર લે સામે બફર અને પાછળ બફર અને તેથી, તેમને સ્વિચ કે, તત્કાલ, એક ઓપરેશન, તેના બદલે કદાચ સો અથવા હજારો, અમારા નવા પ્રસ્તુત તમામ વસ્તુઓ સ્ક્રીન પર હોય છે. અને આ વસ્તુઓ અટકાવે સ્ક્રીન પ્રેરણાદાયક જેવા ત્યારે અમે માત્ર દોરવામાં કર્યું અડધા ફ્રેમ માટે અમારા વસ્તુઓ. અમે કૉલ કરવાની જરૂર તેથી કે શા માટે SDL_RenderPresent, તેમજ SDL_RenderCopy છે. ફરીથી, અમે માત્ર જઈ રહ્યાં છો પાંચ સેકન્ડો માટે રાહ જોવી પડી. પછી અમે જઈ રહ્યાં છો અમારી સ્રોતો સાફ. અમે વધુ તદ્દન થોડા આ સમય હોય છે. અને પછી અમે માત્ર જઈ રહ્યાં છો આ કાર્યક્રમ બહાર નીકળવા માટે. તેથી આપણે તે કરવા દો. હું સ્રોતો બનાવવા લખો રહ્યું છે, અને પછી કરું છું હેલ્લો હવે 3image.c છે સમકક્ષ હોય છે. બધા હક છે, કે કોઈ ભૂલો કમ્પાઇલ કરેલ છે. અને તમે અહીં જોઈ શકો છો કે હું હવે કર્યું મારી ઈમેજ બહાર ખેંચવામાં, હેલો, CS50! અમારા વિન્ડો, જે પાંચ સેકન્ડો પછી અદૃશ્ય થઈ જાય છે. હવે, આ હજુ પણ અધિકાર, સમસ્યાઓ ધરાવે છે? આ એક સારી એપ્લિકેશન નથી, હું બારી બંધ કરવા માટે પ્રયત્ન કરો ત્યારે, કારણ કે કંઇ બને છે. કે એક્સ હજુ જવાબદાર નથી. તેથી આ પર એક નજર કરીએ આગામી ફાઇલ, hello4animation. તેથી આ ફાઇલ છે કે શરૂ કરવા જઈ રહ્યું છે અમારા છબી જવાનું અને ચળવળ. તેથી અમે કરવા જઇ રહ્યા છો એક જ વસ્તુ પહેલાં, SDL શરૂ બનાવો વિન્ડો, રેન્ડરર બનાવવા માં ઇમેજ લોડ મેમરી પોત બનાવો. અમે પહેલાં તે તમામ જોઇ છે. હવે, આ નવા છે. અમે એક માળખું કહેવાય છે જઈ રહ્યાં છો માત્ર એક લંબચોરસ છે, જે એક SDL RECT. અમે અહીં જાઓ તો, અમે કરી શકો છો SDL RECT માટે શોધ કરવા માટે, અને તમે તેને જોઈ શકો છો ખૂબ જ સરળ માળખું. તે એક્સ, વાય માટે છે સ્થિતિ છે, અને તે પહોળાઈ અને ઊંચાઈ માટે છે લંબચોરસ માપ. તેથી અમે શું કરી રહ્યાં છો અમે કરી રહ્યા છીએ છે આ SDL RECT DEST વ્યાખ્યાયિત કરવા માટે જવાનું, ગંતવ્ય માટે. અને આ સ્થળ છે જ્યાં સ્ક્રીન પર અમે ચિત્રકામ કરી રહ્યા છીએ અમારા છબી, અધિકાર જેથી અમે પ્રયત્ન જઈ રહ્યાં છો, તો આસપાસ છબી ખસેડવા માટે, પછી સ્થળ જ્યાં અમે છબી ખેંચવા માટે જઈ રહ્યાં છો આસપાસ ખસેડવા કરવાની જરૂર છે. તેથી અમે આ કહી રહ્યા છીએ કાર્ય SDL_QueryTexture. અને હું સરનામા પસાર છું નોટિસ dest.w, આ પહોળાઈ છે, કે જે અને dest.h, ઊંચાઇ છે. અને તેથી SDL_QueryTexture રહ્યું છે પહોળાઇ તે ક્ષેત્રો માં સંગ્રહે અને અમારા પોત ઊંચાઇ. અને પછી હું જાઉં છું શું હું જાઉં છું છે કરવા માટે dest.x હોઈ વિન્ડો સુયોજિત કરવા માટે છે, કે જે પહોળાઈ ઓછા dest.w, 2 દ્વારા વિભાજી સ્પ્રાઈટ પહોળાઇ. અને આ તેથી તે સુયોજિત કરવા માટે જઈ રહ્યો છે છબી સંપૂર્ણપણે કેન્દ્રિત છે કે અમારા વિન્ડોમાં, બધા અધિકાર? તેથી હવે હું એક વાય પોઝિશન છે. અને આ રહ્યું છે છે કે એક ચલ છે અમે પ્રયત્ન જઈ રહ્યાં છો કારણ કે, બદલાતી વાય દિશામાં છબી ખસેડવાની. અને હવે અમે કંઈક હોય એનિમેશન લૂપ કહેવાય છે. તેથી કેવી રીતે એનિમેશન કામ કરે છે? વેલ, માનવ આંખ 12 અલગ શોધી શકે છે દરેક બીજા છબીઓ, બધા અધિકાર? તમે મને 12 છબી કાર્ડ ફ્લેશ તેથી જો બીજા, હું તે છબીઓ દરેક જોયું તેના પોતાના અલગ વ્યક્તિગત છબી તરીકે. હવે, તમે વધુ ફ્લેશ તો બીજા મને છબીઓ, પછી મારી આંખ શરૂ કરશે તેમને મળીને બ્લર અને હું ગતિ, કે સાબિત થશે, તેના બદલે એક અલગ ઇમેજ. તેથી, ઉદાહરણ તરીકે, ફિલ્મો અને ટેલીવિઝન, તેઓ તમને 24 સમયે છબીઓ ફ્લેશ એક સેકન્ડ. જેથી સેકન્ડ પ્રતિ 24 ચોકઠાંઓ છે. કમ્પ્યુટર સ્ક્રીન, બીજી બાજુ પર, ઘણી વખત 60 સેકંડ દીઠ ફ્રેમમાં છે. કે તેમના તાજું ઝડપ છે. એટલે કે, તેઓ તાજું કેટલી વાર છે સ્ક્રીન પર ચિત્ર. તેથી અમારા લક્ષ્ય 60 પ્રયત્ન રહ્યું છે અમારી રમતો માટે સેકંડ દીઠ ફ્રેમમાં. તેથી આ કોડ કે જોવા દો. દરેક ફ્રેમ માટે તેથી, અમે પ્રથમ છો વિન્ડો સાફ કરવા માટે જઈ રહી છે. આ સામાન્ય પેટર્ન છે. તમે હંમેશા સાફ વિન્ડો દરેક ફ્રેમ, અને પછી તમારા ચિત્ર તમામ કરવું કામગીરી, અને પછી ઓવરને અંતે, RenderPresent બતાવવા માટે નથી ફ્રેમ બધું. અને પછી તમે જઈ રહ્યાં છો ઓવરને અંતે રાહ છે આગામી ત્યાં સુધી રાહ જોવી ફ્રેમ શરૂ થવી જોઈએ. હું ઘણો કરી હતી તેથી જો અહીં જટિલ ગણતરી કરતાં વધુ 16 મિલિસેકન્ડોમાં લીધો, તે મારા માટે અશક્ય છે 60 કે ફ્રેમ દર વિચાર કે દરેક ફ્રેમ હોય છે, કારણ કે હું ઇચ્છતા ગણતરી માટે ખૂબ લાંબા લેવા. વધુમાં, અમે ખરેખર કરી રહ્યા છીએ કામ નહિવત્ રકમ સૉર્ટ અહીં, માત્ર કારણ કે ત્યાં અમે દોરીએ છીએ એક વસ્તુ. તેથી હું માત્ર એક ના 1/60 રાહ બીજું, લંબાઈ, કે જે ફ્રેમ વચ્ચે એક ફ્રેમ. તેથી હું પ્રકારની કરી હોવાનો ઢોંગ કરી રહ્યો છું મારા બધા કામ શૂન્ય સમય લે છે. પરંતુ વાસ્તવિક રમત, તમે બાદબાકી હોય તો સમય જથ્થો તે કરવા લીધો તમારા બાકીના સમય આ બધા કામ કરે છે. તેથી કોઈપણ રીતે, હું શું છું ખરેખર આ લૂપ માં કરી? હું બારી સાફ કરો. હું પૂર્ણાંક છે કે જે dest.y સુયોજિત મારા વાસ્તવિક વાય પોઝિશન પૂર્ણાંક માં આપ્યા હતા. હવે, હું ઠરાવ ફ્લોટ માંગો છો મારા રમત મારા વાય પોઝિશન માટે, પરંતુ પછી ખરેખર સ્ક્રીન પર તે ડ્રો, તે એકમો છે, કારણ કે તે ints જરૂર પિક્સેલ્સ, જેથી કાસ્ટ માટે શું છે. હું છબી ખેંચવા માટે જઇ રહ્યો છું. તેથી આ સ્રોત લંબચોરસ છે. અને આ સ્થળ લંબચોરસ છે. તેથી હું નલ પસાર સ્ત્રોત લંબચોરસ હું મારી સમગ્ર પોત દોરવા માંગો છો કહે છે. પરંતુ જો તમે ઘણો હતો તમારા રમત દેખાવ અને તેઓ એક મોટા પોત નકશો તમામ છો કે જે હમણાં જ એક તરીકે SDL માં લોડ થયું હતું પોત, તમે કરી શકે સ્ત્રોત લંબચોરસ ઉપયોગ નાના ટેક્સ્ચર્સમાંથી એક પસંદ કરવા માટે, નાના sprites એક, કે મોટા પોત નકશો બહાર. તેથી ફરી, હું મારા રેન્ડર પસાર છું, મારા પોત છે, અને હવે ગંતવ્ય. આ જ્યાં હોઈ ચાલે છે વિન્ડો દોરવામાં કરી રહ્યું છે. અને પછી, હું ઉત્સાહિત છું કારણ કે કંઈક, હું ચળવળ જરૂર છે, હું અપડેટ કરી જાઉં છું દરેક ફ્રેમ પર સ્પ્રાઈટ સ્થિતિ. તેથી હું આ સતત કહેવાય સ્ક્રોલ છે સેકન્ડ પ્રતિ પિક્સેલ એકમો ઝડપ. હવે, આપણે એક આંદોલન કરી દરેક વખતે, ફ્રેમ માત્ર 1/60 બીજા છે. તેથી હું 60 કે વિભાજીત કરવા માટે જઇ રહ્યો છું. અને પછી, હું છું, માતાનો જોવા દો વાય પોઝિશન કે બાદબાકી. હું શા માટે બાદબાકી છું? અમે એક બીજા કે મળશે. તેથી પછી હું મારા સાધનો સાફ અને કાર્યક્રમ પર છે. તેથી આપણે તે કરવા દો. તેથી આપણે બનાવવા SRCS = hello4 જાય animation.c, બધા અધિકાર? રમત. તમે ત્યાં જાઓ. તેથી હું તેને સરકાવનાર છે ખૂબ સુઘડ છે, જે વિન્ડો. પરંતુ હું બાદબાકી કરવામાં આવી હતી, પકડી વાય સ્થિતિમાં દરેક સમય. ત્યાં શું થઈ રહ્યું છે? વેલ, તે SDL બહાર વળે છે, અને હકીકતમાં, મોટાભાગના કમ્પ્યુટર ગ્રાફિક્સ, આ સંકલન સિસ્ટમ માટે મૂળ વિન્ડો બાકી ટોચ છે. તેથી હકારાત્મક એક્સ દિશામાં જાય છે તમારી જમણી વિન્ડો સમગ્ર. અને હકારાત્મક વાય દિશામાં ખરેખર નીચે જાય છે. તેથી ફરી, મૂળ માં તમારા વિન્ડોની ટોચ ડાબે, હકારાત્મક વાય દિશા, નીચે છે અને હકારાત્મક એક્સ યોગ્ય છે. તેથી હું બાદબાકી જ્યારે વાય સ્થિતિમાં છે, કે તે નકારાત્મક પર જાઓ કરી રહ્યા વિન્ડો ઉપર છે, કે જે વાય દિશામાં. જેથી તે ત્યાં ચાલી રહ્યું છે તે છે. કૂલ. માતાનો આગામી ફાઈલ પર નજર કરીએ. અહીં ભાગ છે જ્યાં છેવટે અમે બતાવવા વિન્ડો ના ખૂણે કે એક્સ વિચાર કે વિન્ડો બંધ કરવા માટે માનવામાં આવે છે કામ કરવા. તેથી શું થઈ રહ્યું છે? અમે વિન્ડો બનાવવા માટે, SDL પ્રારંભ જે રેન્ડરર બનાવવા છબી લોડ, પોત બનાવવા જેમ આપણે પહેલાં જોઇ છે. અમે એ જ ગંતવ્ય લંબચોરસ છે પહેલાની જેમ જ કોલ પોત પ્રશ્ન છે. પરંતુ આ સમય, અમે પછી છો પહોળાઇ વિભાજીત કરવા માટે જઈ અને 4 કરીને અમારી ગંતવ્ય ઊંચાઇ. આ માત્ર ત્યારે જ અસર ધરાવે છે અમારા છબી નીચે જ્યારે ખેંચે અમે ચાર દ્વારા વિન્ડોમાં પ્રદર્શિત. તેથી તે ખૂબ સુઘડ છે. અમે હમણાં જ તે જેમ પરિમાણ કરી શકો છો. અમે સ્પ્રાઈટ શરૂ જઈ રહ્યાં છો સ્ક્રીન કેન્દ્ર છે. અને હવે અમે એક્સ અને વાય વેગ હોય છે અને તેઓ બંને શૂન્ય પર શરૂ કરવા માટે જઈ રહ્યાં છો. આ ખોટું ફાઇલ છે. હું દિલગીર છું. તેથી તે બધા સાચા છે. આ ફાઈલમાં તમામ હજુ પણ છે. અમે 4 અને બધું દ્વારા વિભાજન છે. તેથી અહીં અમે અમારા એક્સ અને વાય પોઝિશન છે વિન્ડો કેન્દ્ર છે. અને અમે તેને એક પ્રારંભિક વેગ આપી આ સતત ઝડપ, જે હુ દર સેકંડે 300 પિક્સેલ્સ છે માને છે. હવે, આપણે આ પૂર્ણાંક માત્ર તેમજ શકે છે બંધ વિનંતી કહેવાય બુલિયન છે. અને તેની જગ્યાએ એક કરી અહીં એક ટાઈમર પર અનંત લૂપ, અમે ઉત્સાહિત કરી રહ્યા છીએ બંધ કરો તરીકે લાંબા સમય સુધી વિનંતી નથી. તેથી અમે કેવી રીતે ઘટનાઓ પ્રક્રિયા? વેલ, SDL એક ઘટનાઓ ઉપર કતારમાં ગોઠવે છે પડદા પાછળ શાબ્દિક કતાર. અને પછી દરેક ફ્રેમ, અમે ઘટનાઓ dequeue કરી શકો છો ઉપયોગ કરીને તે કતાર થી આ કોલ SDL_PullEvent. અને ફરી, ચોક્કસપણે વાંચી જાઓ દસ્તાવેજીકરણ આ વિશે. ઘણો વધુ વિગતવાર અને ઘણો છે વધુ કાર્યો તમે આ સાથે ઉપયોગ કરી શકો છો. અમે તે સરનામા પસાર આ વસ્તુ, SDL_Event કે અમે અહીં સ્ટેક પર છે. હવે, SDL_event શું છે? SDL, કારણ કે અમે જોવા તો આ documentation-- ચાલો શ્રેણી, ઇનપુટ દ્વારા, API જોવા ઘટનાઓ, ઘટના હેન્ડલિંગ, અમે નંબર જોવા કરી શકો છો અહીં અલગ અલગ ઘટનાઓ અને આપણે ત્યાં છે જોઈ શકે છે તેમને સમગ્ર ટન. તેથી આ SDL_Event વસ્તુ શું છે? SDL_Event એક યુનિયન છે. વાહ, યુનિયન શું છે? તમે કદાચ ક્યારેય કર્યું છે પહેલાં સાંભળ્યું. અને તે બરાબર છે. યુનિયન જેવા પ્રકારની છે એક સ્ટ્રક્ટ સિવાય એક સ્ટ્રક્ટ, બધા માટે એક જગ્યા છે તેના ક્ષેત્રો અને મેમરી યુનિયન માત્ર છે, જ્યારે પૂરતી જગ્યા સૌથી ફિટ તે અર્થ એ થાય કે જે તેના ક્ષેત્રોમાં એક, માત્ર તેના ક્ષેત્રોમાં એક સ્ટોર કરી શકો છો એક સમયે જે પ્રકારની અધિકાર, ઘટનાઓ માટે અર્થમાં બનાવે છે? અમે કીબોર્ડ હોઈ શકે છે ઘટના અથવા વિન્ડો ઘટના, પરંતુ એક ઘટના બંને ન હોઈ શકે કીબોર્ડ ઘટના અને વિન્ડો ઘટના, તેથી તે માટે જગ્યા હોય સિલી હશો અમારા ઇવેન્ટ યુનિયન અંદર તે બંને. તેથી જો તમે ઇચ્છતા હોય તો તમારા પોતાના યુનિયન બનાવવા તે બરાબર એ જ જુએ છે એક સ્ટ્રક્ટ બનાવવા, સિવાય કે અમે યુનિયન કીવર્ડની તેના બદલે સ્ટ્રક્ટ કીવર્ડ. અને બધા માટે, યાદ રાખો તમારા યુનિયન અંદર વસ્તુઓ, યુનિયન છે કે વાસ્તવિક ચલ માત્ર તે કિંમતો એક હોઈ શકે છે એ સમયે. તેથી અમે કેવી રીતે ઘટના કેવા પ્રકારની કહી શકો છો અમે ફક્ત આ કતાર બંધ પોપ? વેલ, અમે event.type માટે પરીક્ષણ કરી શકે છે. અને તે બરાબર છે, તો SDL_Quit કરવા માટે, આપણે જાણીએ છીએ તે ઘટના છે કે ત્યારે અમે પેદા કરવામાં આવી હતી વિન્ડો ના ખૂણે કે એક્સ હિટ. અને બંધ વિનંતી સેટ કરી શકો છો અમે 1 સમકક્ષ હોય છે. બાકીના માત્ર કેટલાક એનિમેશન છે તમે પહેલાં જોઈ કર્યું છે. તેથી આપણે આગળ વધીશું અને બનાવવા દો આ અને તે કામ કરે છે કેવી રીતે જુઓ. તેથી હું મેક લખો જાઉં છું અને પછી SRCS = hello5_events.c. ત્યાં અમે જાઓ. ગેમ્સ. હવે, આપણે તે જોઈ શકો છો ખરેખર ચાર નાનું. અને હવે તે આસપાસ સ્થૂળ છે. હું કેટલાક અથડામણ શોધ છે વિન્ડો બાજુઓ સાથે રહ્યું અમે પર એક નજર કરી શકો છો. હું તેને બંધ કરવા જાઓ ત્યારે અને શું થાય છે? તે બંધ થાય છે. વિચિત્ર. અમે તે ઘટના પ્રાપ્ત થઈ છે. અને અમે તેને સંભાળી. તેથી આ કોડ પર એક નજર કરીએ. તેથી હું તેને કેવી રીતે મેળવો શું કે જેમ આસપાસ સ્થૂળ? યાદ રાખો હું બંને એક્સ સેટ અને શરૂઆતમાં ઝડપે વાય. અને ઝડપ હકારાત્મક છે સતત છે, કે જેથી છે તે જવા બહાર શરૂ કરવા માટે નીચે અને જમણી જઈ રહી છે. હવે, હેન્ડલિંગ ઉપરાંત દરેક ફ્રેમ, આવી શકે છે કે જે કોઈપણ ઘટનાઓ, હું મારા સ્પ્રાઈટ કે શું શોધવા માટે જઇ રહ્યો છું વિન્ડો બહાર જવા માટે પ્રયાસ કરી રહી છે. તેથી અમે ફક્ત ચકાસીને તે કરી શકો છો 0 x_pos, તો પછી y_pos 0, અને પણ x_pos અને y_pos સાથે વિન્ડો પહોળાઈ અને વિન્ડો ઊંચાઇ. હું subtracted છે નોટિસ સ્પ્રાઈટનો પહોળાઇ. હું ન હતી, કારણ કે જો અને આ છે સ્પ્રાઈટનો પહોળાઇ બાદબાકી, તે માત્ર છે કે તપાસ કરશે સ્પ્રાઈટનો મૂળ વિન્ડો બહાર જવા ન હતી. પરંતુ અમે સમગ્ર માંગો છો સ્પ્રાઈટનો પહોળાઈ હંમેશા વિન્ડો અંદર હોઈ શકે છે અને સ્પ્રાઈટનો સમગ્ર ઊંચાઈ હંમેશા વિન્ડો અંદર હોય છે. જેથી બાદબાકી માટે શું છે. અહીં ભૂમિતિ ઘણાં કરી શકો છો તે બહાર ડ્રો કરવા માટે ઉપયોગી થઈ આ સંકલન સાથે કાગળ પર સિસ્ટમ પર ચાલે છે તે જોવા માટે. હું ટકરાતા હોય તો, હું માત્ર ખાલી સ્થિતિ રીસેટ તે નથી જતા હોય છે કે જેથી સ્ક્રીન બહાર. તે બાઉન્સ અને જો હું જાઉં છું આ sidewalls પર, હું રદ કરવા જઇ રહ્યો છું X વેગ કે જેથી તે અન્ય દિશામાં પુષ્ટ થાય છે. અને એ જ રીતે, તે ફટકારે તો ટોચ અથવા તળિયે હું વાય વેગ સુયોજિત કરવા માટે જઇ રહ્યો છું નકારાત્મક વાય પ્રવેગ જેટલા, કે જેથી તે પાછા બાઉન્સ આવશે. જેથી અમે અહીં મળી માત્ર કેવી રીતે. અને અપડેટ સ્થિતિ માત્ર અમે પહેલાં જોઇ અમે છો કારણ કે, 60 દ્વારા વિભાજીત માત્ર એક બીજા 1/60 સંભાળવા. અને પછી રેન્ડરીંગ, પહેલાં બરાબર એ જ. અને જેથી બધું આ ફાઇલ પર રહ્યા હતા. અમે ઘટનાઓ શું કેવી રીતે તે છે. મુખ્ય વસ્તુ અહીં લઇ આ SDL_PullEvent કાર્ય છે. અને તમે ચોક્કસપણે વાંચવી જોઈએ SDL_Event વિશે દસ્તાવેજીકરણ વધુ યુનિયન, આ માહિતી પ્રકાર છે, કારણ કે ખૂબ, ખૂબ મહત્વનું છે, અમે તેનો ઉપયોગ કારણ કે ઘટનાઓ તમામ પ્રકારના માટે. ઉદાહરણ તરીકે, અમે કીબોર્ડ માટે તેનો ઉપયોગ ઘટનાઓ, કે જે આ ફાઈલ માટે શું છે. તેથી અમે શું છે? અમે પહેલાની જેમ જ વસ્તુ છે , SDL પ્રારંભ વિન્ડો બનાવવા માટે, છબી લોડ, એક રેંડરર બનાવવા મેમરીમાં, પોત બનાવો. ફરીથી, અમે જઈ રહ્યાં છો આ DEST લંબચોરસ હોય છે, અમે છબી આરોહણ કરવા માટે જઈ રહ્યાં છો ચાર દ્વારા, તે થોડી નાની કરો. હવે, અમે શરૂ કરવા જઇ રહ્યા છે સ્ક્રીન કેન્દ્ર સ્પ્રાઈટ. પરંતુ આ સમય, અમે સેટ જઈ રહ્યાં છો પ્રારંભિક X અને શૂન્ય વાય વેગ, કીબોર્ડ છે, કારણ કે તે નિયંત્રિત કરવા માટે જઈ રહી છે. અને વધુમાં, અમે જઈ રહ્યાં છો આ ચલો ટ્રેક રાખવા ઉપર, નીચે, ડાબે, અને જમણી. અને તે રાખવા ચાલી રહ્યું છે અમે કર્યું છે કે કેમ તે ટ્રેક કીબોર્ડ બટનો દબાવવામાં કે ઉપર, નીચે, ડાબે અનુલક્ષે, અને જમણી. હવે, આ ફેન્સી પ્રકારની છે અમે ડબલ્યુ, એ, એસ ઉપયોગ કરી શકો છો, કારણ કે અહીં ડી, અથવા વાસ્તવિક તીર કીઓ. અમે હમણાં જ એક બીજા કે જોશો. તેથી અમે પ્રક્રિયા કરવા માટે જઈ રહ્યાં છો માત્ર તે પહેલાં જેવા ઘટના. અમે ઘટના ખેંચો. પરંતુ હવે અમે જઈ રહ્યાં છો ઘટના પ્રકાર પર સ્વિચ કરો. તે SDL_Quit છે, તો અમે છો બંધ સુયોજિત કરવા માટે જઈ પહેલાંની જેમ જ એક વિનંતી કરી. તે માં X સંભાળે વિન્ડો ના ખૂણે, અમારા વિન્ડો ખરેખર બંધ છે કે જેથી. અન્યથા, અમે એક SDL કી વિચાર તો નીચે અમે એક કી દબાવવામાં જેનો અર્થ થાય છે ઘટના, પછી અમે શું કરવા જઇ રહ્યા છો અમે છો છે અહીં આ વસ્તુ પર સ્વિચ કરવા માટે જઈ, જે તેથી event.key means-- અમારા ઇવેન્ટ યુનિયન સારવાર અર્થ થાય છે, જાઓ અને કી વિચાર તે ઘટના માળખું. તેથી તે આ છે કે જે બહાર વળે યુનિયન કી ઘટના માળખું છે. અને પછી કી પર જાઓ ઘટના માળખું તેના ક્ષેત્ર કહેવાય keysym અને પછી scancode. અને ફરી, ચોક્કસપણે વાંચી આ અંગે દસ્તાવેજીકરણ. કીવર્ડ ઇનપુટ્સ તદ્દન રસપ્રદ છે. તમે સ્કેન કોડ અથવા કી કોડ મેળવી શકો છો. અને તે થોડી સૂક્ષ્મ છે, પરંતુ દસ્તા ખૂબ જ સારો છે. અમે સ્કેન કોડ માટે જુઓ તેથી જો હોવા ડબલ્યુ અથવા અમારી કી પ્રેસ, અમે 1 બરાબર સુયોજિત કરવા માટે જઈ રહ્યાં છો. અને પછી અમે તે સ્વીચ બહાર તૂટી જાય છે. તે અથવા બાકી છે, તો અમે ઇટી 1 ડાબી સેટ વગેરે, વગેરે એટ છે, નીચે અને અધિકાર માટે. હવે, આ બાહ્ય સ્વીચ બહાર, અમે ઘટના કી જુઓ તો, કે અમે કી પ્રકાશિત કર્યું છે એનો અર્થ એ થાય અને અમે લાંબા સમય સુધી દબાવીને કરી રહ્યાં છો. તેથી હું 0 બરાબર ઉપર કહેવું જાઉં છું, ડાબી અધિકાર નીચે, 0 બરાબર 0 સમકક્ષ હોય છે 0 સમકક્ષ હોય છે, વગેરે એટ. અને અમે આ દરેક પાસે નોટિસ બે કિસ્સાઓમાં દરેક અન્ય બાજુમાં મૂકવામાં કોઈ અલગ કોડ સાથે પ્રથમ કિસ્સામાં, જે તે શું અર્થ એ થાય કે એક એસ અથવા અહીં નીચે, તે આ કોડ ચલાવવા માટે ચાલી રહ્યું છે. તેથી તે ખૂબ સરળ છે. તે અમને વધુ કરવા કર્યા અટકાવે શરતો અને IFS અને વસ્તુઓ તે જેવી. તેથી અમે જઈ રહ્યાં છો વેગ નક્કી કરે છે. અમે 0 વેગ સુયોજિત કરો. પછી દબાવવામાં આવે તો નથી અને નીચે, તો પછી અમે નકારાત્મક ઝડપ વાય વેગ સુયોજિત કરો. નકારાત્મક યાદ રાખો કારણ કે નકારાત્મક વાય દિશામાં છે. અને હકારાત્મક વાય દિશામાં ડાઉન છે. નીચે દબાવવામાં આવે તો અને ન હોય, તો પછી અમે છો હકારાત્મક ઝડપ તે સેટ પર જઈને, જે સ્ક્રીન નીચે રહ્યું છે. ડાબી અને જમણી સાથે જ વાત. અને પછી અમે અપડેટ કરવા જઈ રહ્યાં છો માત્ર પહેલાં જેવી સ્થિતિ. અમે અથડામણ કરી રહ્યા છીએ ભૂસકે સાથે શોધ, પરંતુ અમે ફરીથી સેટ કરવા જઈ રહ્યાં છો વેગ, વેગ માત્ર છે, કારણ કે કીબોર્ડ દ્વારા નિયંત્રિત. પરંતુ અમે ફરીથી સેટ કરવા જતા હોય છે સ્થિતિ વિંડોમાં તેને રાખવા. અને અમે સેટ જઈ રહ્યાં છો સ્ટ્રક્ટ સ્થિતિ અને પછી બધા શું પહેલાં સામગ્રી રેન્ડરીંગ. તેથી તે શું કરે છે તે જોવા દો. તેથી SRCS-- માતાનો જોવા દો, આ hello6_keyboard.c છે. અરે નહિ. તેથી અમે અહીં કેટલાક ચેતવણીઓ મળી. અને તે માત્ર અમે હતી કહેતા છે દરેક એક શક્ય પ્રકારની માટે ચકાસો ઘટના. કારણ કે તે, ઠીક છે તેમને 236 અથવા તેથી છે. તેથી હું તે ચેતવણીઓ અવગણો જાઉં છું. તે હજુ પણ દંડ સંકલિત છે. તેથી હું આ રમત રમવા માટે જઇ રહ્યો છું. તે આગળ વધી રહી નથી. પરંતુ હવે, હું મારા કીબોર્ડ પર મેશ, ત્યારે હું અહીં કેટલાક WASD ચળવળ કરી શકો છો હું તેમજ મારા તીર કીઓ વાપરો. અને હું છું, છતાં પણ નોટિસ અધિકાર હવે દબાવીને, તે વિન્ડો બહાર ચાલી રહ્યું છે હું દરેક ફ્રેમ પર ફરીથી સેટ છે. તેથી તે ખૂબ સુઘડ છે. તમે સાથે મારિયો આસપાસ ખસેડવાની કલ્પના કરી શકો છો કેટલાક તીર કીઓ અથવા કંઈક હોય છે. અને હા, X કામ કરે છે. અમે જઈ રહ્યાં છો તેથી અંતિમ ફાઈલમાં hellow7_mouse જોવા માટે. આ માઉસ ઇનપુટ મેળવવામાં વિશે છે. અમે આ એક તેથી ગણિત હેડર આયાત, અમે પાસે જઈ રહ્યાં છો કારણ કે અહીં ગણિત એક થોડો. જ જૂની, જ જૂના સામગ્રી, સ્થળ પહેલાં જોવા મળે છે, જૂના જ. વેલ, આ રસપ્રદ છે. તેથી અમે માત્ર ચકાસણી પાછા છો આ SDL માટે ઘટના છોડી દીધું. શા માટે છે? તેથી જો તમે ઘટનાઓ માંથી માઉસ ઇનપુટ મેળવી શકો છો. માઉસ ખસેડવામાં જ્યારે જેમ, તમે તે માટે એક ઇવેન્ટ મળે છે. માઉસ બટન દબાવવામાં આવે ત્યારે, તમે તે માટે એક ઇવેન્ટ મેળવી શકો છો. પરંતુ, થોડું સાદું અન્ય છે કદાચ, માઉસ ઇનપુટ મેળવવામાં માટે API. અને તે માત્ર SDL વિચાર માઉસ રાજ્ય છે. તેથી હું એક્સ પૂર્ણાંક હોય છે અને કર્સર સ્થિતિ માટે વાય. હું SDL_GetMouseState તે પસાર જે આ સુયોજિત કરે છે. અને આ સ્થિતિ છે વિન્ડો સિસ્ટમ સંકલન. તેથી માસ ટોચ ડાબી બાજુએ આવેલી હોય તો વિન્ડો, કે 0, 0 કરશે. હવે, હું શું કરવા જઇ રહ્યો છું હું જાઉં છું છે વેક્ટર ગણિત એક થોડો કરવું. હું તમને નથી વિચાર્યું હોડ CS50 માં જુઓ કે, પરંતુ અહીં તે છે. હું કેટલાક વેક્ટર કરવા જઇ રહ્યો છું ગણિત વેક્ટર વિચાર કર્સર ઇમેજ માંથી. અને તેથી હું શા માટે હોય અહીં આ બાદબાકી? ઠીક છે, હું માત્ર DEST ઉપયોગ જો .-- તેથી હું માઉસ એક્સ અનુવાદિત કરવાની જરૂર છે અને અડધા પહોળાઈ દ્વારા Y અને છબી ઊંચાઇ, હું કેન્દ્ર માંગો છો કારણ કે છબી, માઉસ તરફ જઈ શકાય છબી નથી મૂળ. જેથી હું વાત કરું છું તેની ખાતરી કરવા માટે માત્ર છે અહીં છબી કેન્દ્ર વિશે. પછી અમે ડેલ્ટા x અને y, વિચાર, જે લક્ષ્ય તફાવત છે છબી ના વાસ્તવિક સ્થિતિ. અને પછી અમે વિચાર કરી શકો છો અહીં અંતર જે પાયથાગોરસનો હોઈ ચાલે છે પ્રમેય, એક્સ વર્ગમૂળ વખત એક્સ વત્તા વાય વખત વાય. હવે કંપનવાળો અટકાવવા માટે, અને હું બતાવી શકે છે તમે મને આ ન કરવું હોય તો આ શું કરે છે, જો કર્સર અને વચ્ચે અંતર છબી કેન્દ્ર, પાંચ કરતાં ઓછી છે હું માત્ર છબી ખસેડવા માટે નથી જતા છું. અન્યથા, અમે વેગ સુયોજિત કરો. અને અમે કે જેથી તે સેટ વેગ હંમેશા સતત હશે. અને બધા ની ચોખ્ખી પરિણામ આ ગણિત છબી છે કર્સર તરફ જઈ રહ્યું છે. હવે, તે તારણ છે કે જે SDL_GetMouseState, આ સુયોજિત કરવા ઉપરાંત X અને અહીં વાય દલીલો, તે પણ સંકળાયેલ છે પૂર્ણાંક આપે છે માઉસ બટનોની રાજ્ય છે. તેથી અમે તે વાંચી શકતા નથી સીધા છે, પરંતુ અમે કરી શકો છો , એક આ મેક્રો ઉપયોગ bitwise ઓપરેટર, કે ડરામણી નથી, માત્ર એક bitwise છે. તેથી અમે પરિણામ છે કે જે, બટનો કહે અમારા SDL_GetMouseState, કે જો bitwise અને, આ મેક્રો અને અહીં, SDL_BUTTON_LEFT. તેથી આ ફક્ત ઉકેલવા માટે ચાલે છે સંકળાય છે બીટમેપ માટે ડાબી માઉસ બટન દબાવવામાં આવે છે. અને તેથી bitwise તો અને થાય છે અને તે છે જેનો અર્થ થાય છે શૂન્ય નથી, ડાબે બટન દબાવવામાં આવી હતી, પછી અમે ખરેખર ઈનકાર કરવો જઈ રહ્યાં છો બંને એક્સ અને વાય વેગ, જે ફક્ત ઇમેજ રનઅવે કરશે. સુધારા સ્થિતિ. અથડામણમાં detections, તે જોઈ બધા પહેલાં, અનુવાદ, બધા અધિકાર. ચાલો તે બનાવવા દો. તેથી જો તમે SRCS = hello7_mouse.c બનાવવા મળી. ગ્રેટ. કોઈ ભૂલો. અને રમત. તેથી અહીં હું મારા માઉસ છે. અને ઇમેજ ખરેખર છે મારા માઉસ પીછો. હવે, રમત ફૂટ તમે કદાચ કરી આ એક દુશ્મન પીછો જેવી છે તમારી થોડી પાત્ર અથવા ગમે. પરંતુ અહીં અમે છે છબી માઉસ પીછો. અને હું ક્લિક કરો ત્યારે, માઉસ છબી પીછો શરૂ થાય છે અને ઇમેજ છે દૂર માઉસ ચાલી રહ્યું છે. તેથી તે ખૂબ ઠંડી છે. અને નોટિસ ફરી, ત્યાં છે હજુ પણ અહીં અથડામણ શોધ. જેથી અંતિમ ઓછી છે ડેમો હું અહીં કરી છે. અને ચાલો એક વધુ વસ્તુ પર એક નજર કરીએ. તેથી અહીં પાછા, હું આ કંપનવાળો ઉલ્લેખ કર્યો છે. બધા અધિકાર. અંતર કરતાં ઓછી પાંચ પિક્સેલ્સ છે તેથી જો, હું શૂન્ય એક્સ અને વાય વેગ સુયોજિત કરવામાં આવી હતી. અમે તે છૂટકારો મળે તો શું થાય છે? તેથી હું ફક્ત આ કરવા જઇ રહ્યો છું. આ horrendous શૈલી માફ કરો, પરંતુ અમે યોગ્ય કોડ બહાર ટિપ્પણી કરી. તેથી હું સેવ અને કરવા જઇ રહ્યો છું તેને બનાવવા માટે પહેલાં જ આદેશ. બધા અધિકાર. અને હવે શું થાય છે? સારી. અમે હજુ પણ અનુસરી રહ્યાં છે માત્ર પહેલાં જેવી માઉસ, પરંતુ અમે માઉસ મેળવવા માટે, અમે આ કુલ કંપનવાળો મળી છે. ત્યાં શું થઈ રહ્યું છે? વેલ, અમારા વેક્ટર ગણિત, અમે હતા યાદ આ વચ્ચે અંતર લેવા કર્સર અને છબી મધ્યમાં? ઠીક છે, કે પહોંચે 0, અમે મેળવવાનું શરૂ ક્રેઝી વર્તન આ પ્રકારની જેમ જ્યાં છબી સૉર્ટ છે કર્સર આસપાસ ઓસીલેટીંગકેમિકલ જેવા હોય છે. અને તે આ કંપનવાળો બનાવી છે. અને તે ખરેખર નીચ છે. અને તમે કદાચ નથી તમારા રમતો કે જે કરી માંગો છો, તે સિવાય ખાસ અસર અમુક પ્રકારની છે. અમે હોય તેથી કે શા માટે ફક્ત આ મનસ્વી જ્યાં અમે કહે છે, પાંચ પિક્સેલ્સ કાપી તે પાંચ પિક્સેલ્સ અંદર તો, અમે સારા છીએ. અમે હવે છબી ખસેડવા માટે જરૂર નથી. જેથી તે ત્યાં ચાલી રહ્યું છે તે છે. તેથી તે ખૂબ ખૂબ તે છે. હવે તમે બનાવવા માટે કેવી રીતે ખબર વિન્ડો, એક છબી લોડ, વિન્ડો માટે એક છબી ડ્રો, વિચાર કીબોર્ડ ઇનપુટ, માઉસ ઇનપુટ વિચાર, અન્ય એક ટોળું હોય છે ઇનપુટ કે તમે ન હોત તમે માત્ર એક પસાર જો વિચાર કેવી રીતે ખબર દસ્તાવેજીકરણ જોઈ થોડા મિનિટ. તેથી જો તમે ખરેખર ખૂબ હવે તમારી આગળના થોડા સાધનો એક પૂર્ણ રમત લખવા માટે. હવે, દરેક રમત કેટલાક ઓડિયો જરૂર છે, પરંતુ ઓડિયો દસ્તાવેજીકરણ પણ ખૂબ સારી છે. અને હું તો કે હોડ કરવા માટે તૈયાર છું તમે વસ્તુઓ તમામ સમજી અમે સાથે આજે વિશે વાત કરી આ છબીઓ, અને સપાટી પછી વિન્ડોઝ, અને બધું, બહાર figuring ઓડિયો API નથી રહ્યું છે કે ખરાબ હોય છે. તેથી હું જોઈ આગળ જુઓ તમે SDL સાથે શું બનાવો.