THOMAS Lively: Kull dritt.
Hi, kulħadd.
Jien Thomas Lively.
Dan is-seminar se tkun miktub logħob 2D fis-C bl-użu SDL.
So I taf int kollha tistaqsi, yeah, I really
trid tilgħab logħob u jagħmlu logħob, imma dak li hu dan in-negozju SDL?
Allura SDL hija librerija C.
Hija tirrappreżenta l Sempliċi Saff Directmedia.
U huwa pjattaforma transkonfinali, logħba librerija iżvilupp.
Dan jaħdem fuq Windows, Mac, Linux, anki IOS u Android.
Hija mankijiet affarijiet simili aċċess għas-sistemi awdjo
għall-kompjuter, il-keyboard, u ġurdien, joysticks, jekk dawn qed imwaħħla.
Fuq il-mowbajl, tista 'anki tagħmel l- touch input u kollha ta 'dak.
U ovvjament, dan mankijiet grafika, tpinġija affarijiet għall-iskrin.
>> Allura huwa użat b'mod wiesa 'ħafna, anki jekk inti tista 'ma smajt ta' qabel.
Huwa mibni fis, per eżempju, Magna sors Valve, il
fejn il-kompetenzi logħob bħal Portal u Team Fortress 2.
Huwa wkoll f'numru kbir ħafna ta 'logħob Indie li toħroġ,
hekk jien eċċitati biex tara dak li kollha se tkun qed tagħmel magħha.
>> L-għanijiet seminar huma li inti tikseb stabbiliti biex tkun jiżviluppaw SDL.
Aħna qed tmur biex jitgħallmu kif toħloq tieqa logħba.
Aħna qed tmur biex joħolqu sprites, li huma l-immaġini fil-logħba tiegħek
li jistgħu jiċċaqalqu madwar.
Aħna qed tmur biex jitgħallmu kif għal u janimaw l-sprites,
hekk mċaqalqa madwar, jagħmlu minnhom jinbidlu maż-żmien.
U aħna qed tmur biex jitgħallmu kif biex jaqbdu keyboard u mouse
input mill-kompjuter.
Dak li aħna mhux se jitkellem dwar llum hija 3D graphics,
minħabba li l kkumplikata ħafna suġġett li aħna ma jkollhom il-ħin għall.
Aħna mhux se jitgħallmu kif play awdjo fuq logħob tagħna.
U aħna mhux se tkun bini għal xejn imma Linux.
>> Issa l-caveats hemm li, nisperaw, sa tmiem is-seminar,
inti ser tkun komda ma ' id-dokumentazzjoni SDL,
sabiex inti ser tkun tista 'tmur insemmu kif jilagħbu awdjo għalik innifsek.
Bini wkoll għall Mac jew PC għandha taħdem eżattament l-istess bħal bini għall Linux,
iżda l-setup għaddej biex jkun ftit differenti.
Allura inti għandek tkun kapaċi biex insemmu kif jagħmlu dawn l-affarijiet
sal-aħħar tal seminar tal-lum.
>> Dan għall-imwaqqaf, aħna qed tmur li tuża magna virtwali.
Aħna se jużaw l-IDE CS50, minħabba aħna qed biss se jkun miktub fil C.
Iżda peress li l-IDE mhux browser, aħna ma tistax toħloq twieqi ġodda jew display
graphics fiha.
Għalhekk għandna bżonn magna virtwali.
Allura inti tista 'ssegwi l-istruzzjonijiet hawn fuq manual.CS50.net/appliance/15
biex tinstalla l-appliance CS50 uffiċjali, li huwa biss Linux virtwali
magna.
>> U allura ladarba inti għandek li kollha stabbiliti up-- dan
jista 'jieħu ftit filwaqt li, minħabba a download-- kbir ħafna int ser
li jseħħ fl-sudo apt-nikseb VM aġġornament.
U li verament għaddejjin li taġġorna l-software
pakketti fuq magna virtwali tiegħek.
>> Wara dan, inti qed tmur jiddekorri sudo apt-nikseb jinstallaw, libsdl2-2.0-0,
libsdl2-DBG, libsdl2-DEV, u addizzjonalment libsdl2--immaġni 2.0-0,
libsdl2-immaġni DBG, u libsdl2-immaġni DEV.
Allura dak li ma tagħmel?
Li sempliċement jinstalla l-debug informazzjoni, dokumentazzjoni, headers,
u binaries għal żewġ libreriji.
Regolari qodma, SDL 2.0, u librerija ieħor
imsejħa Image SDL, li aħna qed tmur biex tkun qed tuża
tagħbija fajls immaġini fil-logħba tagħna.
>> Allura ladarba inti għandek li wkoll li, biss meta hija tistaqsi,
inti biss tip iva, hit Ikteb biex jinstallaw dawk il-pakketti,
u allura inti għandek tkun tajba biex tmur.
Allura biex jiksbu l-kodiċi ta 'distribuzzjoni, inti can-- oh qalb, din ma hux aġġornat.
Sakemm ikollok account-- GitHub jekk għandek kont GitHub,
inti tista 'tagħmel dan Git kmand klonu għall-repo
u li se tniżżel l Git repo ma 'l-kodiċi fiha,
sabiex inti ser ikollok l-kodiċi.
>> Jekk inti ma għandekx GitHub kont, dak li għandek tagħmel huwa tip
wgithttps: //github.com/tlively/sdl seminar-- u hawn huwa different--
/archive/master.zip.
Għalhekk għal darb'oħra, dak l-istess eżatt URL, ħlief li għaddej biex tkun
tlively / SDL_seminar / master.zip u inti qed tuża wgit biex tniżżel dan.
U allura inti tista 'sempliċement unzip li arkivju
u allura inti ser ikollok l-source code.
Allura sorry dwar dan.
U allura l-kodiċi se tkun ospitata wkoll paġna web-seminar CS50 fil koppja
jiem.
>> Kull dritt.
Allura kif nistgħu tibda miktub game tagħna stess?
Ukoll, l-ewwel ħaġa aħna qed tmur jridu jagħmlu
hu li tħares lejn id-dokumentazzjoni SDL.
Allura hawnhekk-VM.
U hawnhekk il-paġna web.
Stajt navigati li jgħixu libsdl.org.
Dak li jien ser tagħmel hawnhekk hija tmur fuq għall-sidebar, taħt id-dokumentazzjoni,
u kklikkja fuq il-wiki.
Dan se jġib me lill-wiki li għandha ħafna mill-dokumentazzjoni għall SDL.
Fuq ix-sidebar hawn, aħna qed ser ikklikkja API skond il-kategorija,
għaliex huwa ser jagħti us-ħsieb kategorika sbieħ
tal-API kollu għall SDL.
>> Hekk per eżempju, għandna l inizjalizzazzjoni bażiku
u mitfija, l-tip ta ' Jittieħed amministrattiva għall-użu SDL,
u allura għandna l taqsima għal wiri affarijiet għall-iskrin.
Li video.
Avvenimenti Input, li jkollna kontribut mill-keyboard,
jkollna input mill-maws, u l-joystick, jekk ikollok anke.
Hemm forza feedback għall-affarijiet bħal kontrolluri logħba, li
aħna mhux qed tmur biex jitkellmu dwar.
U hawnhekk awdjo.
U allura hemm mazz ta 'ieħor għalf li SDL jista 'jagħmel għalik.
>> Imma llum aħna qed tmur biex tiffoka fuq il-inizjalizzazzjoni hawn,
juri immaġini fil-video taqsima, u t-tqandil avvenimenti input.
Allura dawn huma l-ewlenin sezzjonijiet ta 'dokumentazzjoni
li inti għandek tkun inkwetanti dwar.
Biss għall-gost, jekk immorru fuq hawn u kklikkja fuq API bl-isem,
nistgħu tara lista ta 'kull ħaġa waħda fil-librerija SDL.
Allura dawn il-funzjonijiet kollha, enumerazzjonijiet, strutturi, ammont crazy ta 'għalf,
ordni alfabetiku.
U b'mod ċar, sakemm inti taf li qed tagħmel,
dan mhux se jkun utli wisq, huwa għalhekk li aħna nagħmlu API skond il-kategorija.
>> Mela ejja tibda.
Nisperaw inti stajt diġà jitniżżel il-kodiċi tad-distribuzzjoni.
U għalhekk dak li inti tista 'tagħmel huwa, right hawn fl-appliance CS50,
sempliċiment tiftaħ terminal.
Here we go.
Hekk stajt diġà jitniżżel l- kodiċi distribuzzjoni bl-użu zip
metodu.
U stajt unzipped dan.
Allura hawnhekk huwa fl-kaptan seminar SDL.
Hekk jien se jmorru f'dik id-direttorju.
U dak li naraw hawnhekk huwa li għandna seba fajls Ċ.
U dan se-kodiċi aħna qed tmur biex tkun tħares lejn llum.
Għandna makefile.
U aħna għandna direttorju riżorsi, li sempliċement għandu immaġini
li inti ser tkun qed tara malajr biżżejjed.
>> Mela ejja jiftħu dawn il-fajls bl-użu editur G-Edit.
So I tixtieq li tiftaħ il-fajls kollha li tibda bil bonjour u jintemm bit .c.
Here we go.
Allura dak tieqa żgħira, hekk aħna qed ser jippruvaw jagħmlu dan akbar.
Le, marru.
>> Kull dritt.
Allura hawnhekk-ewwel fajl aħna qed tmur biex tħares lejn.
Huwa sejjaħ hello1_sdl.c.
U dan kollu ma huwa initialize l SDL librerija sabiex inkunu nistgħu jibdew jużawh.
Kif tkun taf li ġejjin up ma 'dan il-kodiċi yourself?
Ukoll, jekk inħarsu aktar fil--dokumentazzjoni
u aħna jmorru fil-inizjalizzazzjoni u mitfija it-taqsima,
li għaddej biex tgħidilna kollha dwar kif initialize SDL.
Allura definittivament taqra dan xi żmien ieħor.
Li għaddej biex jgħidlek kollha dwar x'inhu għaddej hawn.
Iżda l-punt kruċjali prinċipali tal-kwistjoni hija li għandna bżonn li sejħa dan SDL funzjoni Fil Huwa
u tgħaddih liema tip ta 'affarijiet irridu li l-librerija biex initialize.
Allura fil-każ tagħna, aħna qed biss jmorru initialize l-video għal issa,
sabiex inkunu tista 'tibda wiri immaġini.
>> Hawn fuq, tista 'tara jekk aħna ikklikkja fuq SDL fiha, aħna
jista 'jikseb saħansitra aktar informazzjoni, inkluż il-valur tar-ritorn.
Allura naraw hawn li returnes żero fuq is-suċċess.
Allura fil-kodiċi tagħna, aħna qed tmur biex ara jekk dan ma jerġax lura żero,
u jekk ma jerġax lura żero, u għalhekk ma kienx ta 'suċċess,
allura aħna qed tmur biex sempliċiment print żball jużaw din il-funzjoni l-oħra,
SDL get żball, li jirritorna string jiddeskrivi l-iżball li sar.
Aħna qed tmur biex jistampaw li żball u allura aħna qed biss
ser joħorġu mis-programm ma 'kodiċi ta' żball.
>> Imbagħad ħaġa oħra li għandna bżonn tagħmel hu, qabel ħruġ programm,
jekk aħna b'suċċess initialized SDL, Jinħtieġ li hija sejħa SDL nieqaf.
U li għaddej biex jimmaniġġaw tindif kollha tar-riżorsi interni SDL għalina.
Allura id-dokumentazzjoni there-- mill-ġdid, aħna qegħdin hawn fil-inizjalizzazzjoni
u mitfija taqsima tad-dokumentazzjoni.
Inti tista 'sempliċement ikklikkja fuq il- funzjoni hawn, SDL nieqaf,
u inti tista 'taqra kollha dwar dan ukoll.
U ħafna ta 'dawn il-funzjoni paġni dokumentazzjoni
ikollhom eżempju kodiċi, għalhekk dan huwa riżorsa tajba ħafna.
Żgur jqattgħu xi żmien qari partijiet ta 'dan wiki
jekk int ser tagħmel dan għal proġett.
>> Kull dritt.
Allura dak programm kollu tagħna.
Dak li nistgħu nagħmlu issa is-- jien ser tiftaħ il-makefile hawn,
hekk jien ser jieħdu tħares lejn kif li jaħdem.
U huwa makefile sempliċi ħafna, simili għal dak li inti stajt tidher qabel.
Wieħed mill-differenzi ewlenin hija li, hawnhekk, dan
se daħħal ir-riżultat ta 'tmexxija dan il-kmand, li inti stajt diġà
installati jekk inti ħadthom installati SDL.
U dan huwa kmand li għaddej biex jiġġeneraw
xi bnadar żejda għall-kompilatur.
>> B'żieda għal dan, aħna qed jtuha l-kmandi tas-soltu, kif ukoll
dawn iż-żewġ jikkmanda.
Allura l--lsdl2-immaġni manki jgħaqqad fil-librerija immaġini SDL.
U l--lm attwalment mankijiet jgħaqqdu fil-matematika librerija C standard.
Allura aħna mhux ser jeħtieġu dawk għall kollha ta 'fajls C tagħna,
imma aħna biss jitqiegħed fil sabiex inkunu nistgħu jużaw l-istess makefile għal kollox
mingħajr modifiki.
>> Hawn fuq fis-sorsi, dan huwa fejn youd
tpoġġi l-fajls li inti kienu se biex jikkompilaw għall-proġett tiegħek.
Iżda peress li kull wieħed mill C tiegħi fajls hawn għandu funzjoni ewlenija,
li għaddej biex tikseb konfuż jekk aħna jpoġġuhom kollha fil.
Hekk jien ser biss jgħidu, għal issa, hello1_sdl.c,
li huwa l-waħda aħna biss ħares lejn.
Mela jekk immur lura matul hawn, I tista 'ma tagħmel.
U dak li għamlet hija biss kkompilata li l-ewwel fajl.
U allura aħna tista tip ./game, minħabba huwa l-eżekutibbli huwa għamel.
U kull ma għamlet kien print inizjalizzazzjoni ta 'suċċess.
Allura għamilna xi ħaġa dritt.
Iżda dan kien tip ta 'boring, għaliex aħna ma tara tieqa,
xejn kien miexi madwar.
>> Hekk kbir, sirna SDL initialized.
Issa, ejja jimxu fuq xi ħaġa ftit aktar interessanti.
Allura hawnhekk għandna hello2_window.c, u dan se jkun ftit aktar
programm C kumpless li initializes SDL bħad qabel,
ħlief issa aħna qed wkoll se initialize timer SDL.
U dan se let us aċċess għall-timer intern
u l-funzjonijiet użu relatat għal żmien.
>> U mbagħad ejja tfittex l isfel hawn.
Dak li nagħmlu hija li għandna din pointer għal Struct tieqa SDL, li
se tkun maħluqa minn din is-sejħa għall-funzjoni, SDL joħolqu tieqa.
Issa, dan jieħu ħafna argumenti, so ejja go nħarsu lejn id-dokumentazzjoni.
Għalhekk għal darb'oħra, jien ser API skond il-kategorija, jien
jinżel 'l isfel għall-vidjo hawn, u l-ewwel taqsima, wiri ġestjoni tieqa.
Allura din is-sezzjoni għandha ton ta 'għalf fiha,
imma jekk inti tfittex permezz dawn il-funzjonijiet, inti ser
tara li probabbilment l-waħda aħna tixtieq tissejjaħ SDL toħloq tieqa,
li jiġri li jkun tajjeb fil-quċċata.
>> U għalhekk dan huwa l- dokumentazzjoni għal din il-funzjoni.
It-tieqa għaddej biex ikollhom titolu, x u l-pożizzjoni y fuq l-iskrin,
li għaddej biex ikollhom wisa, għoli, u mbagħad li għaddej biex tieħu xi bnadar.
Issa, aħna ma attwalment kura dwar kwalunkwe minn dawn il-bnadar dritt issa,
imma jekk inti riedu jagħmlu xi ħaġa bħal tagħmel tieqa full screen,
inti tista 'tagħti ħarsa lejn dak.
Għal issa, aħna qed biss jmorru biex jużaw dawn il-valuri speċjali,
Tieqa SDL plus ċċentrata għall x uy sabiex
biss joħolqu l-tieqa fiċ-ċentru ta iskrin tagħna.
>> Allura dak hu li dan qed jagħmel.
U jekk tieqa jiġri li jkun null, li jfisser hemm żball,
imbagħad għal darb'oħra aħna qed biss ser jistampa l-iżball użu iżball get SDL.
U allura għaliex aħna initialized SDL, aħna issa jeħtieġ li tagħlaq dan.
Allura nitolbu SDL nieqaf qabel jirritornaw wieħed għal prinċipali.
>> Allura aħna għandna dan il-tieqa miftuħa nisperaw.
U dak li aħna qed tmur tagħmel hu aħna qed tmur
sejħa SDL għall 5,000 millisekondi, li hija l-istess bħal ħames sekondi.
U meta aħna qed isir ma 'dan, li għaddej biex jeqirdu l-tieqa,
jitnaddaf l-librerija SDL, u ħruġ tal-programm.
Mela ejja imorru quddiem u tagħti lil dak sparatura.
>> Allura issa minflok jinbidlu l makefile kull darba,
I tista 'sempliċement ma tagħmel, u imbagħad fuq il-linja tal-kmand,
jgħidu sorsi jkun ugwali u mbagħad il-fajl aħna qed kumpilazzjoni.
Allura huwa hello2_window.c.
Fantastic.
Ebda erros.
Issa, jekk aħna run eżegwibbli tagħna, naraw dan il-tieqa.
Issa hemm ftit problemi bil-tieqa.
Nistgħu jimxu madwar, iżda għandha dan junk isfond ġewwa ta 'dan.
Allura aħna ma miġbuda xejn, u għalhekk huwa
biss sħiħa ta 'żibel, li hija pjuttost dak li nistennew.
>> Barra minn hekk, ma nistgħux qrib it-tieqa.
Jien ippressar dan X fil- kantuniera u xejn qed jiġri.
Allura aħna ser tara kif jiffissaw li fi ftit ftit.
Mela ejja tiffissa l-parti fejn il- tieqa hija sħiħa ta 'żibel ewwel.
Mela jekk immorru quddiem għall hello3_image.c, liema nistgħu naraw huwa li konna miżjud ftit
affarijiet aktar hawn.
Imxejna miżjud dan header ġdida fajl li jiksbu l-funzjonijiet tajmer.
I raden aħna ma li fl-aħħar wieħed, wisq, u jien ma jsemmuha.
Imma issa għaliex aħna qed taħdem bi stampi,
għandna bżonn li jinkludi l-SDL fajl header image ukoll.
Allura huwa l-istess ħaġa bħat qabel, initializing SDL hawn,
istess jittrattaw mal-ħolqien twieqi.
Rajna li qabel issa.
>> Issa għandna bżonn li tinħoloq xi ħaġa imsejħa a renderer, liema tip ta jmur flimkien
mal-tieqa.
Imma hija tip ta ' oġġett astratt li l-
responsabbli li jagħmlu dawn kollha tpinġija operazzjonijiet għall-tieqa.
U fil-fatt jikkorrispondi għal programm mgħobbija
fil-hardware grafika tiegħek kompjuter jew telefon tiegħek jew ikun x'ikun.
Allura l-bnadar li rridu jgħaddu it-- u inti tista 'tħares lejn id-dokumentazzjoni
biex tikseb aktar dettall here-- ser li jiġu SDL jirrendu aċċellerat, li
ifisser li għaddej biex tkun bl-użu grafika hardware
u mhux biss imitat fis-software.
>> U aħna qed tmur għall-użu SDL renderer PRESENTVSYNC.
VSYNC hija ħaġa li sempliċiment tagħmel grafika tiegħek ħarsa jipprevjeni aħjar u
dan ħaġa imsejħa screen terrur, fejn nofs
ta 'qafas wieħed u nofs l-ieħor frejm jiksbu mfassla fl-istess ħin
u jidher orribbli.
Iżda għal darb'oħra, inti tista 'tmur taqra dwar li fuq tiegħek.
>> Allura aħna għandna xi bnadar hawn.
U hekk aħna qed biss ser sejħa dan SDL funzjoni joħolqu renderer.
Aħna qed tmur biex jagħtuh il-tieqa li jassoċja ma 'dik renderer.
Waħda negattiva ifisser li aħna ma kura liema grafika sewwieq aħna qed tmur għall-użu.
Allura li għandhom pretty ħafna dejjem tkun waħda negattiva,
sakemm inti taf dwar is-sewwieqa grafika.
U allura aħna qed biss jmorru tgħaddih bnadar tagħna.
Mela jekk dan jirritorna null, allura aħna qed morna għall-istampa l-iżball bħas-soltu,
iżda mbagħad aħna qed wkoll se li jeqirdu l-tieqa
biex tnaddaf dawk ir-riżorsi qabel ssejjaħ SDL nieqaf u r-ritorn.
>> Issa, il-parti interessanti hawn huwa fejn aħna tagħbija immaġini tagħna
jużaw din IMG_load funzjoni.
Dan huwa l-uniku funzjoni aħna qed tmur għall-użu mill-bibljoteka immaġini SDL.
Hu l-unika waħda għandna bżonn.
Huwa funzjoni li jieħu l-sekwenza li hija t-triq ta 'kull riżorsa immaġini.
U jista 'jkun png, a GIF, Bitmap, kwalunkwe minn dawn l-affarijiet.
U hu għalhekk li din il-funzjoni huwa hekk sbieħ.
Dan jista 'jittratta pretty ħafna xi format.
Tagħbijiet fis memorja u taħżnu bħala ħaġa imsejjaħ wiċċ SDL.
>> Issa wiċċ SDL hija biss Istituzzjonjijiet li tirrappreżenta data ta 'immaġini fil-memorja.
Allura inti tista 'taqra aktar dwar li fid-dokumentazzjoni tnejn.
U jekk dan żbalji, allura aħna qed se tagħmel il-ħaġa sħiħa fejn
aħna jistampaw il-żball, jintefa tagħna riżorsi, u mbagħad nieqaf-programm.
Issa l-ħaġa interessanti hija, qabel nistgħu tiġbed din id-dehra għall-tieqa,
għandna bżonn li attwalment jagħmilha texture.
Issa ftit jikkorrispondi nisġa li data ta 'immaġini mgħobbija
fil-memorja hardware tal-grafika tal tal.
>> Allura wiċċ huwa prinċipali memorja, memorja regolari
li aħna kont qed tuża l semestru, u texture Huwa f'dan VRAM separata
memorja li l-kontrolli karta grafika.
Allura nitolbu din il-funzjoni SDL_CreateTextureFromSurface.
Nagħtu renderer tagħna u l-wiċċ tagħna.
U allura aħna qed attwalment jsir bil-wiċċ,
hekk aħna qed biss jmorru ħielsa it.
Aħna ma bżonnha aktar.
U allura hekk jekk din is-sejħa errored u lura null,
allura aħna qed tmur biex tagħmel l-sħiħ rappurtar ħaġa mill-ġdid żball.
>> Kull dritt.
Hawnhekk, irridu jiksbu fis xi funzjonijiet tirrendi attwali.
Allura ssejjaħ SDL_RenderClear u jgħaddiha
l renderer assoċjat with window tagħna sempliċiment jagħmel il-tieqa jmorru iswed.
Għalhekk tneħħi li junk li rajna fil tieqa tagħna qabel u jagħmilha iswed.
U allura aħna qed tmur sejħa SDL_RenderCopy,
tagħtiha renderer tagħna, nisġa tagħna.
U aħna ser nitkellmu dwar dak li dawn l-oqsma huma daqsxejn.
Iżda li għaddej biex jieħdu l-data nisġa
u kopja hija fuq tagħna tieqa tiġbed l-immaġini.
Allura wara we ghamilt din il-kopja id-data għal fuq tieqa tagħna,
għandna nagħmlu din il-funzjoni addizzjonali imsejħa SDL_RenderPresent.
>> U dan huwa interessanti għaliex dan gets
fi tema imsejjaħ buffering doppja.
Allura buffering doppja hija teknika li jagħmel grafika tiegħek ħarsa ħafna aħjar.
Għal darb'oħra, dan jevita li dmugħ screen I kien tkellem dwar preċedenti, fejn
għandek żewġ buffers.
Hemm buffer lura fil memorja u buffer quddiem.
Il-buffer quddiem huwa litteralment x'hemm fuq l-iskrin tiegħek fil-mument.
Allura nagħmlu kollha dawn tiġbed varjazzjonijiet, bħal SDL tirrendi kopja jew SDL_RenderClear
għall-buffer lura.
Allura dawn jimmodifikaw affarijiet fil-buffer dahar.
Here we jista 'jkun tpinġija din kwadru aħdar għall-buffer lura.
>> Allura mbagħad meta aħna qed isir nagħmlu jagħmlu operazzjonijiet tagħna, li
jista 'jieħu twil verament ħin, dak li aħna qed tmur biex tagħmel
huwa jaqilbu l-buffers.
Allura litteralment biss jieħu l- buffer quddiem u l-buffer lura
u swiċċijiet minnhom, sabiex li, istantanju,
f'operazzjoni waħda, minflok forsi mijiet jew eluf,
kollha tagħna għadhom kif ġew mogħtija oġġetti huma fuq l-iskrin.
U dan jipprevjeni affarijiet bħall-iġjeniċi iskrin
nofs meta konna biss miktuba ta 'oġġetti tagħna għall-qafas.
Allura huwa għalhekk li għandna bżonn tirrikorri SDL_RenderPresent, kif ukoll
kif SDL_RenderCopy.
>> Għal darb'oħra, aħna qed biss jmorru li tistenna għal ħames sekondi.
Allura aħna qed tmur biex tnaddaf riżorsi tagħna.
Għandna pjuttost ftit aktar dan iż-żmien.
U allura aħna qed biss jmorru għall-ħruġ tal-programm.
Mela ejja tagħmel dan.
Jien ser tip għamla, u mbagħad sorsi ugwali hello-- issa 3image.c dan huwa.
Kull dritt, dik ikkumpilata l-ebda żbalji.
U tista 'tara hawn stajt issa miġbudin image tiegħi, Hello, CS50!
tieqa tagħna, li tisparixxi wara ħames sekondi.
>> Issa, dan xorta għandu problemi, right?
Din mhix applikazzjoni tajba, għaliex meta nipprova li tagħlaq il-tieqa,
xejn jiġri.
Li x għadu mhux responsivi.
Mela ejja tagħti ħarsa lejn l- fajl jmiss, hello4animation.
Allura dan huwa l-fajl li għaddej biex jintroduċu
jiċċaqilqu u moviment mad-dehra tagħna.
Allura aħna qed tmur biex jagħmlu l- istess ħaġa bħal qabel,
tibda SDL, joħolqu l- tieqa, joħolqu l-renderer,
tagħbija l-immaġni fi memorja, joħolqu l-istruttura.
Rajna kollha li qabel.
Issa, dan huwa ġdid.
Aħna qed tmur biex ikollha struttura imsejħa l rect SDL, li huwa biss rettangolu.
Jekk immorru minn hawn, nistgħu tagħmel tfittxija għal rect SDL,
u tista 'tara huwa struttura sempliċi ħafna.
Hija għandha x, y għal il-pożizzjoni, u
għandha wisa 'u għoli għall id-daqs tar-rettangolu.
>> Allura dak li aħna qed tmur biex tagħmel hu li aħna qed ser jiddefinixxu dan SDL dest rect,
għad-destinazzjoni.
U dan huwa l-post fuq l-iskrin fejn
aħna qed tmur biex jiġu tpinġija immaġini tagħna, id-dritt So
jekk aħna qed tmur biex tkun jiċċaqalqu l-immaġni madwar,
allura l-destinazzjoni fejn aħna qed tmur biex tiġbed l-immaġini
jeħtieġ li jkunu jiċċaqilqu madwar.
Allura aħna qed tmur biex sejħa dan SDL_QueryTexture funzjoni.
U avviż jien jgħaddi l-indirizz tal dest.w, li hija l-wisa ',
u dest.h, li huwa l-għoli.
U għalhekk SDL_QueryTexture va li jaħżen f'dawk l-oqsma l-wisa '
u l-għoli ta 'nisġa tagħna.
>> U allura dak li jien ser tagħmel hu jien ser
li jiġu stabbiliti dest.x li jkun tieqa dest.w nieqes wisa ', li hija
l-wisa 'tal-Sprite, diviż bl 2.
U dan se din tintrama b'tali mod li l-immaġini huwa perfettament ċċentrata
Tieqa tagħna, id-dritt?
Allura issa I għandhom pożizzjoni y.
U dan se jkun fattur varjabbli li l-
jinbidlu, għaliex aħna qed tmur biex tkun jiċċaqalqu l-immaġini fil-direzzjoni y.
U issa għandna xi ħaġa jissejjaħ loop animazzjoni.
>> Allura kif ma 'l-animazzjoni taħdem?
Ukoll, għajn tal-bniedem jistgħu jindividwaw 12 distinta immaġini f'kull sekonda, id-dritt?
Mela jekk inti flash 12 cards immaġni fil lili fit-tieni, I raw kull wieħed minn dawk l-immaġini
kif image individwali distinti tagħha stess.
Issa, jekk inti flash aktar immaġini fil lili fit-tieni,
allura għajn tiegħi kienet ser tibda biex iċajpru flimkien
u nixtieq jipperċepiha bħala mozzjoni, minflok immaġini waħda distinti.
Għalhekk, per eżempju, films u televiżjoni, dawn flash immaġini fil inti 24 darba
tieni.
Allura dak 24 frejm kull sekonda.
Iskrins tal-kompjuter, min-naħa l-oħra, spiss huma fi 60 frejm kull sekonda.
C'est veloċità riffriskar tagħhom.
Li kemm ta 'spiss jġedded l-istampa fuq l-iskrin.
Allura mira tagħna se tkun 60 frejm kull sekonda għas logħob tagħna.
>> Mela ejja ara dak fil-kodiċi.
Allura għal kull qafas, aħna qed l-ewwel ser jiċċara l-tieqa.
Dan huwa l-mudell ġenerali.
Inti dejjem ċar l- tieqa kull qafas, u mbagħad
tagħmel kollha ta 'tfassil tiegħek operazzjonijiet, u mbagħad fl-aħħar,
do RenderPresent biex juru kollox fil-qafas.
U allura int ser jkollhom jistennew fl-aħħar
li wieħed jistenna sakemm il-li jmiss qafas għandu jibda.
>> Hekk jekk I kienet tagħmel ħafna ta ' komputazzjoni kumplessi hawn
li ħadet aktar minn 16 millisekondi, ikun impossibbli għalija
tikseb dik ir-rata qafas ta '60 li Jien ridt, għaliex kull qafas huwa
jieħdu wisq żmien biex tiġi kkalkulata.
Barra minn hekk, aħna qed verament tagħmel tip ta 'ammont negliġibbli ta' xogħol
hawn, għaliex hemm biss ħaġa waħda aħna qed tpinġija.
So I biss stenna 1/60 ta ' tieni, li huwa t-tul
ta 'qafas bejn frames.
Hekk jien tip ta 'feint li jagħmlu xogħol kollu tiegħi jieħu ż-żmien żero.
Iżda fil-logħba reali, youd għandek naqqas
l-ammont ta 'ħin li ħadet biex tagħmel din il-ħidma minn żmien bqija tiegħek.
>> Allura xorta, dak am I fil-fatt jagħmlu f'dan loop?
I ċar l-tieqa.
I stabbiliti l-dest.y, li hija int li pożizzjoni tiegħi y attwali mitfugħa fi int.
Issa, nixtieq float riżoluzzjoni għall-pożizzjoni y tiegħi fil-logħba tiegħi,
iżda mbagħad fil-fatt tiġbed fuq l-iskrin,
jeħtieġ ints, għaliex dan huwa f'unitajiet ta ' pixels, b'tali mod li dak l-voti huwa għall.
Jien ser tiġbed l-immaġini.
Allura dan huwa l-rettangolu sors.
U dan huwa l-rettangolu destinazzjoni.
So I għadda null għal ir-rettangolu sors
ngħid nixtieq li tiġbed nisġa kollu tiegħi.
Imma jekk kellek ħafna ta ' textures fil-logħba tiegħek
u dawn qed kollha fil-mappa waħda nisġa big li ġie mgħobbi fuq SDL bħala wieħed biss
tessut, inti tista jużaw rettangolu sors
li pick wieħed mill-nisġa iżgħar, wieħed mill-sprites iżgħar,
barra minn dak mappa nisġa kbar.
>> Għalhekk għal darb'oħra, jien tgħaddi tirrendi tiegħi, my nisġa, u issa d-destinazzjoni.
Dan se jkun fejn fil- tieqa li għaddej biex jitfasslu.
U mbagħad, għaliex jien tanima xi ħaġa, I bżonn moviment,
Jien ser jiġu aġġornament tal- pożizzjoni Sprite fuq kull frame.
So I jkollhom din imsejħa iscroll kostanti veloċità f'unitajiet ta 'pixels kull sekonda.
Issa, kull darba li nagħmlu moviment, Il-qafas huwa biss 1/60 ta 'sekonda.
Hekk jien ser jaqsmu dan b'60.
U mbagħad, ejja ara, jien jitnaqqas dak mill-pożizzjoni y.
Why am I jitnaqqas?
Aħna ser jiksbu għal dak fit-tieni.
Mela allura I tnaddaf riżorsi tiegħi u l-programm fuq.
>> Mela ejja jagħmlu dan.
Mela ejja jmorru fil-għamla SRCS = hello4 animation.c, id-dritt?
Game.
Hemm inti tmur.
So I jkollhom dan scrolling l- tieqa, li huwa pjuttost pulita.
Iżda li jkollhom fuq, I kien jitnaqqas mill-pożizzjoni y kull darba.
X'qed jiġri hemmhekk?
Ukoll, jirriżulta li fil SDL, u fil-fatt, f'ħafna kompjuter grafika,
l-oriġini għall-sistema tal-koordinati huwa l-aqwa xellug tat-tieqa.
>> Allura l-direzzjoni pożittiva x tmur madwar tieqa tiegħek lejn il-lemin.
U d-direzzjoni y pożittiva attwalment jinżel.
Għalhekk għal darb'oħra, fil-oriġini tal fuq ix-xellug ta 'fuq tat-tieqa tiegħek,
direzzjoni y pożittiva huwa jistabbilixxi, u pożittiv x hija lejn il-lemin.
Allura meta I inaqqas mit il-pożizzjoni y, li
se jagħmilha jmorru fuq il-negattiv direzzjoni y, li hija l-tieqa.
Allura dak hu li għaddej hemmhekk.
Kessaħ.
>> Ejja nħarsu lejn il-fajl jmiss.
Hawn hija l-parti tal- juru fejn aħna finalment
nikseb li X fil-kantuniera tat-tieqa li suppost li qrib it-tieqa
tahdem.
Allura x'inhu għaddej?
Aħna initialize SDL, joħolqu l-tieqa, joħolqu l-renderer, tagħbija l-immaġini,
joħolqu l-istruttura bħal konna rajna qabel.
Għandna l-istess rettangolu destinazzjoni bħal qabel,-istess sejħa għall-mistoqsija nisġa.
Iżda dan iż-żmien, aħna qed allura ser jaqsam il-wisa
u l-għoli ta 'destinazzjoni tagħna b'4.
Dan biss l-effett ta ' skalar immaġini tagħna stabbiliti meta
aħna wiri fit-tieqa minn erba '.
Allura dak pjuttost pulita.
Nistgħu biss iskala biss bħal dik.
Aħna ser tibda l-Sprite fiċ-ċentru tal-iskrin.
U issa għandna x u veloċità y u dawn qed kemm ser tibda fuq iż-żero.
>> Dan huwa l-fajl ħażin.
Jiddispjaċini.
Allura li kollox veru.
Li kollox għadu f'dan il-fajl.
Għandna l-iddividi 4 u kollox.
Allura hawnhekk għandna tagħna xuy pożizzjoni għaċ-ċentru tat-tieqa.
U aħna jagħtih veloċità inizjali ta 'din il-veloċità kostanti, li
Nemmen hija 300 pixels kull sekonda.
Issa, aħna għandna dan int tista 'biss kif ukoll tkun Boolean imsejjaħ qrib mitluba.
U minflok tagħmel xi loop infinita fuq timer hawn,
aħna qed tmur biex jiġu janimaw bħala Sakemm qrib ma jiġux mitluba.
>> Allura kif aħna proċess avvenimenti?
Ukoll, SDL kjuwijiet up avvenimenti fi kju litterali wara l-kwinti.
U mbagħad kull qafas, nistgħu dequeue avvenimenti
minn dak kju użu dan SDL_PullEvent sejħa.
U għal darb'oħra, definittivament tmur taqra dwar dan fid-dokumentazzjoni.
Hemm ħafna aktar dettall u ħafna funzjonijiet aktar inti tista 'tuża ma' dan.
Aħna tgħaddiha-indirizz ta 'dan il-ħaġa, SDL_Event
li għandna hawn fuq il-munzell.
>> Issa, dak li huwa SDL_event?
Minħabba SDL, jekk inħarsu fil l documentation-- ejja
tara, API skond il-kategorija, input avvenimenti, tqandil avveniment,
nistgħu nħarsu lejn in-numru avvenimenti ta 'diversi hawn
u nistgħu naraw hemm ton kollu tagħhom.
Allura dak li huwa dan ħaġa SDL_Event?
SDL_Event hija unjoni.
Ara naqra, x'hemm unjoni?
Inti stajt probabbilment qatt ma semgħu li qabel.
U li OK.
>> Għaqda huwa tip simili a Struct, ħlief Istituzzjonjijiet
għandu spazju għal kulħadd ta ' oqsma u l-memorja,
billi unjoni għandha biss biżżejjed spazju biex jitwaħħal l-akbar
wieħed mill-oqsma ta, li jfisser li jista 'biss jaħżen wieħed mill-oqsma ta
fi żmien, liema tip ta ' jagħmel sens għal avvenimenti, right?
Jista 'jkollna tastiera avveniment jew avveniment tieqa,
iżda avveniment wieħed ma jista 'jkun kemm avveniment keyboard u avveniment tieqa,
għalhekk d jkun iblah li jkollhom spazju għall kemm ta 'dawk ġewwa avveniment unjoni tagħna.
Mela jekk int riedu joħolqu unjoni tiegħek stess,
jidher eżattament l-istess il-ħolqien ta 'Struct,
ħlief li aħna nużaw l-keyword unjoni minflok il-keyword Istituzzjonjijiet.
U ftakar, għal kulħadd ta 'l- affarijiet ġewwa unjoni tiegħek,
il-varjabbli attwali li huwa l-unjoni jista 'biss jkollhom waħda minn dawk il-valuri
kull darba.
>> Allura kif nistgħu tgħid liema tip ta 'avveniment aħna biss popped off ta 'dan kju?
Well, nistgħu test għall event.type.
U jekk dan huwa ugwali li SDL_Quit, nafu
huwa l-każ li kien iġġenerat meta aħna
hit li X fil-kantuniera tat-tieqa.
U nistgħu stabbilit mitluba mill-qrib ugwali 1.
Il-bqija huwa biss ftit animazzjoni li inti stajt tidher qabel.
Mela ejja imorru quddiem u jagħmlu dan u tara kif taħdem tajjeb.
Hekk jien ser tip għamla u imbagħad SRCS = hello5_events.c.
Hemm immorru.
Logħob.
>> Issa, nistgħu naraw li kien tabilħaqq jitnaqqsu mill erbgħa.
U issa huwa bouncing madwar.
Għandi xi skoperta kolliżjoni għaddejjin mal-ġnub tat-tieqa
li nistgħu tagħti ħarsa lejn.
U x'jiġri meta mmur biex tagħlaq dan?
Li jagħlaq.
Fantastic.
Irċevejna dak l-avveniment.
U aħna ttrattat.
>> Mela ejja nħarsu lura lejn il-kodiċi.
Allura kif ma I ġġibu bouncing madwar bħal dik?
Ftakar I sett kemm xu y inizjalment għall-veloċitajiet.
U l-veloċità hija pożittiva kostanti, b'tali mod li
se ġġibu bdew jinżel 'l isfel u lejn il-lemin.
>> Issa, kull qafas, minbarra l-immaniġġjar kwalunkwe avvenimenti li setgħu ġraw,
Jien ser jiskopru jekk ikunx Sprite tiegħi qed tipprova tmur barra mit-tieqa.
Allura nistgħu nagħmlu dan billi biss verifika x_pos ma 0, y_pos 0, u mbagħad
wkoll x_pos u y_pos ma wisa tieqa u għoli tieqa.
Avviż Stajt mnaqqsa l-wisa 'tal-Sprite.
U dan huwa minħabba li jekk I ma naqqas il-wisa 'tal-Sprite,
ikun biss tivverifika li l-oriġini tal-Sprite
ma jmorru barra l-tieqa.
Iżda rridu l kollu wisa 'tal-Sprite
li dejjem tkun ġewwa l-tieqa u l-għoli kollu tal-Sprite
li dejjem tkun ġewwa l-tieqa.
Allura dak hu li l-tnaqqis huwa għall.
A lott ta 'ġeometrija hawn tista jkun utli li jindikaw it out
fuq karta bil-tikkoordina sistema biex tara dak li qed jiġri.
>> Mela jekk jien jikkonfliġġu, I biss sempliċiment reset-pożizzjoni
b'tali mod li mhux se barra mill-iskrin.
U jien ser, jekk bounces fuq waħda mill-ġnub,
Jien ser jiċħdu l- x veloċità sabiex
jibda bouncing fid-direzzjoni oħra.
U bl-istess mod, jekk hits il-quċċata jew il-qiegħ,
Jien ser jistabbilixxu l-veloċità y daqs il-veloċità y negattiv,
hekk li se bounce back.
Allura li jinsab biss kif aħna qbilna li hawn.
>> U l-pożizzjonijiet aġġornament bħad konna rajna qabel,
iddividi 60, għaliex aħna qed biss immaniġġjar 1/60 ta 'sekonda.
U mbagħad tirrendi, eżattament l-istess bħal qabel.
U hekk dan huwa dak kollu li kien għaddej dan il-fajl.
Allura li kif nagħmlu avvenimenti.
Il-ħaġa prinċipali għal take away hawn hija din il-funzjoni SDL_PullEvent.
U inti għandek definittivament taqra l- dokumentazzjoni aktar dwar SDL_Event
l-unjoni, għaliex dan it-tip tad-data hija ħafna, importanti ħafna, għaliex nużawha
għal kull xorta ta 'avvenimenti.
>> Per eżempju, nużawha għall keyboard avvenimenti, li huwa dak li dan il-fajl huwa għall.
Allura dak li għandna?
Għandna l-istess ħaġa bħal qabel, initialize SDL, toħloq tieqa,
joħolqu renderer, tagħbija l-immaġini fil-memorja, joħolqu l-istruttura.
Għal darb'oħra, aħna qed tmur biex jkollhom dan ir-rettangolu dest,
aħna qed tmur għall-iskala l-immaġni minn erba ', jagħmilha daqsxejn iżgħar.
Issa, aħna ser tibda l- Sprite fiċ-ċentru tal-iskrin.
Iżda dan iż-żmien, aħna qed tmur biex tiffissa l- x inizjali u veloċitajiet y għal żero,
minħabba li l-keyboard huwa ser tikkontrolla dawk.
U barra minn hekk, aħna qed tmur biex iżżomm kont ta 'dawn il-varjabbli
up, down, xellug, u lemin.
U li għaddej biex iżommu rekord ta 'jekk konna
ippressat-buttuni tastiera li jikkorrispondu għal up, down, xellug,
u lemin.
>> Issa, dan huwa tip ta 'fancy għaliex nistgħu nużaw W, A, S,
D hawn, jew il-keys vleġġa attwali.
Ser naraw li fi ftit tieni.
Allura aħna qed tmur biex jipproċessaw F'każ bħad qabel.
Aħna iġbed l-avveniment.
Imma issa aħna qed tmur biex jaqilbu fuq it-tip avveniment.
Jekk huwa SDL_Quit, aħna qed ser tiffissa qrib
mitlub għal wieħed, bħad qabel.
Li mankijiet l-x fid l-kantuniera tat-tieqa,
sabiex tieqa tagħna attwalment jagħlaq.
>> Inkella, jekk irridu jiksbu ċavetta SDL isfel avveniment, li jfisser li għandna ippressat ewlenin,
allura dak li aħna qed tmur biex tagħmel hu li aħna qed se jaqilbu fuq din il-ħaġa hawn,
li means-- hekk event.key ifisser jittrattaw avveniment union tagħna,
mur u jiksbu l-muftieħ istruttura avveniment fiha.
Għalhekk jirriżulta li dan unjoni hija struttura avveniment ewlieni.
U mbagħad mur l-ewlenin istruttura avveniment qasam tagħha
imsejħa keysym u mbagħad scancode.
U għal darb'oħra, definittivament taqra id-dokumentazzjoni dwar dan.
Inputs Keyword pjuttost interessanti.
Tista 'tikseb kodiċijiet scan jew kodiċi ewlenin.
U huwa ftit sottili, iżda id-dokumentazzjoni hija pjuttost tajba.
>> Mela jekk naraw il-kodiċi scan għall istampa ewlenin tagħna qed W jew up,
aħna qed tmur biex iwaqqfu ugwali għal 1.
U allura aħna break out ta 'dak swiċċ.
Jekk huwa A jew xellug, waqqafna xellug għal 1, et cetera, eċċetera, għal isfel u lemin.
Issa, f'dan swiċċ barra, jekk naraw ewlieni up avveniment,
dan ifisser konna rilaxxati ewlieni u aħna qed m'għadhomx tippressa.
Hekk jien se ngħid up ikun egwali għal 0, xellug ugwali 0, down ugwali 0, id-dritt
ikun egwali għal 0, eċċetera.
>> U avviż għandna f'kull wieħed minn dawn żewġ każijiet tpoġġi dritt ħdejn xulxin
bl-ebda kodiċi separat għall-ewwel każ, li
ifisser li jekk huwa S jew fl-dritt hawn,
li għaddej biex tesegwixxi dan il-kodiċi.
Allura dak pjuttost handy.
Dan jipprevjeni lilna ma jkollhom jagħmlu aktar kondizzjonijiet u IFs u affarijiet
bħal dik.
>> Allura aħna qed tmur biex ddeterminata l-veloċità.
Waqqafna l-veloċità għal 0.
Imbagħad jekk up hija ppressata u mhux stabbiliti, allura aħna
tistabbilixxi l-veloċità y għall-veloċità negattiv.
Ftakar negattiv, minħabba li l- direzzjoni y negattiv huwa up.
U d-direzzjoni y pożittiva huwa jistabbilixxi.
Jekk l hija ppressata u mhux up, allura aħna qed
ser tiffissa lilha għall-veloċità pożittiva, li jfisser jinżel 'l isfel l-iskrin.
Istess ħaġa ma xellug u lemin.
>> U allura aħna qed tmur biex taġġorna il-pożizzjonijiet bħad qabel.
Aħna qed tmur biex tagħmel ħabta skoperta ma limiti,
iżda aħna mhux qed tmur għal reset l- veloċità, minħabba li l-veloċità huwa biss
ikkontrollata mill-keyboard.
Imma aħna ser reset- pożizzjonijiet li jżommha fis-tieqa.
U aħna qed tmur biex tiffissa l- pożizzjonijiet fil-Struct
u mbagħad jagħmlu l- tirrendi Jittieħed minn qabel l.
Mela ejja ara dak li tagħmel.
Sabiex tagħmel SRCS-- ejja ara, dan huwa hello6_keyboard.c.
>> Oh, no.
Allura aħna ltqajna xi twissijiet hawn.
U li sempliċiment tgħid aħna ma jikkontrolla għal kull tip wieħed possibbli
ta 'avveniment.
Dak OK, għaliex hemm 236 minnhom jew hekk.
Hekk jien ser jinjora dawn it-twissijiet.
Huwa għadu kkompilata multa.
Hekk jien ser jilagħbu l-logħba.
Mhuwiex jiċċaqalqu.
Imma issa, meta I maxx fuq it-tastiera tiegħi, I tista 'tagħmel xi moviment WASD hawn,
I użu arrow ċwievet tiegħi ukoll.
U avviż, anki jekk jien ippressar dritt dritt issa,
mhuwiex ser barra mit-tieqa, minħabba I reset fuq kull frame.
Allura dak pjuttost pulita.
Tista 'timmaġina li jiċċaqalqu madwar Mario ma xi ċwievet vleġġa jew xi ħaġa bħal dik.
U iva, il-X jaħdem.
>> Fajl sabiex finali aħna qed tmur li tħares lejn, hellow7_mouse.
Dan huwa dwar jkollna input ġurdien.
Allura f'dan il-wieħed, aħna jimportaw il-header matematika,
għaliex aħna qed tmur biex ikollhom xi ftit ta 'matematika hawn.
Istess qodma, istess qodma Jittieħed, id-destinazzjoni, istess qodma, jidher li qabel.
Ukoll, dan huwa interessanti.
Allura aħna qed lura biss verifika għall-SDL nieqaf avveniment.
Għaliex huwa li?
Allura inti tista 'tikseb input mouse minn avvenimenti.
Simili meta l-maws mċaqalqa, ikollok avveniment għal dan.
Meta mouse button hija ppressata, inti tista 'tikseb avveniment għal dan.
>> Iżda hemm ieħor, ftit aktar sempliċi forsi, API għall jkollna input ġurdien.
U li sempliċiment istat maws get SDL.
So I jkollhom int għal xu y għall-pożizzjoni cursor.
I tgħaddih lill SDL_GetMouseState, li tistabbilixxi dawn.
U dan huwa fil-pożizzjoni jikkoordinaw sistema tat-tieqa.
Allura jekk il-massa hija fil-quċċata xellug tat-tieqa, li kieku 0, 0.
>> Issa, dak li jien ser tagħmel hu li jien ser li tagħmel ftit ta 'matematika vector.
I bet int ħsibt inti ma tkunx tara li fil CS50, iżda hawnhekk huwa.
Jien ser jagħmlu xi vector matematika li jiksbu l-vettur
mill-immaġni li l-cursor.
U hekk għaliex għandi dan it-tnaqqis hawn?
Ukoll, jekk I biss użati dest .-- hekk I bżonn biex tittraduċi l-maws x
u y bin-nofs il-wisa u l-għoli tad-dehra,
minħabba I jridu li l-ċentru tal- immaġni li jkunu għaddejjin lejn l-maws,
mhux l-oriġini tal-immaġini.
>> Allura dak biss biex tiżgura li nkun qiegħed jitkellem dwar il-ċentru tal-immaġni hawn.
Imbagħad irridu jiksbu delta xuy, li hija d-differenza mill-mira
għall-pożizzjoni attwali ta 'l-immaġini.
U allura nistgħu nibdew il- distanza hawn, li
se tkun Pythagorean teorema, għerq ikkwadrat ta 'x
darbiet x plus żminijiet y y.
>> Issa biex jipprevjenu jitter, u I tista 'turi x'għandek dan ma jekk jien ma tagħmel dan,
jekk id-distanza bejn il-cursor u iċ-ċentru immaġini huwa inqas minn ħamsa,
Jien biss mhux ser jiċċaqalqu l-immaġini.
Inkella, aħna waqqafna l-veloċità.
U aħna waqqafna hekk li l- veloċità dejjem se jkun kostanti.
U r-riżultat nett ta 'kull dan matematika huwa li l-immaġini
se timxi lejn il-cursor.
>> Issa, jirriżulta li SDL_GetMouseState,
minbarra l-iffissar tal- x u argumenti y hawn,
dan jirritorna wkoll int li jikkorrispondi għall-istat tal-buttuni maws.
Allura ma nistgħux taqra dan direttament, iżda nistgħu
jużaw dawn macros, wieħed operatur bitwise, mhux li scary,
biss bitwise u.
Allura aħna ngħidu buttuni, li hija r-riżultat tal SDL_GetMouseState tagħna, jekk dan
u bitwise u, dan makro hawn, SDL_BUTTON_LEFT.
>> Allura dan se sempliċiment isolvu għall-Bitmap li jikkorrispondi
li mouse button xellug jiġu ppressati.
U hekk jekk l-bitwise u sseħħ u huwa
mhux żero, li jfisser buttuna xellug kien ippressat,
allura aħna qed attwalment għaddejjin biex tinnega kemm il-x u l-veloċitajiet y,
li se tagħmel l-runaway immaġini.
Pożizzjonijiet Aġġornament.
Rilevamenti Kolliżjonijiet, tidher li kollha qabel, tirrendi, id-dritt.
Ejjew nagħmluha.
Allura inti ltqajna tagħmel SRCS = hello7_mouse.c.
Great.
Ebda żbalji.
U logħba.
>> So here I jkollhom ġurdien tiegħi.
U l-immaġini huwa fil-fatt tmur ġurdien tiegħi.
Issa, fil-logħba inti tagħmel, forsi dan hija bħal jiġru ghadu
karattru ftit tiegħek jew ikun x'ikun.
Iżda hawnhekk għandna l immaġni tmur il-maws.
U meta I ikklikkja,-maws jibda tmur l-immaġni
u l-immaġini huwa qed jaħarbu mill-ġrieden.
Allura dak pjuttost jibred.
U avviż darb'oħra, hemm xorta sejbien kolliżjoni hawn.
>> Allura dan huwa l-ftit finali demo I waqqfu hawn.
U ejja tagħti ħarsa lejn ħaġ'oħra.
Allura lura hawn, semmejt dan jitter.
Kull dritt.
Mela jekk distanza tkun inqas minn ħames pixels, I kien iffissar x uy veloċità għal żero.
X'jiġri jekk irridu teħles minn dik?
Hekk jien ser biss tagħmel dan.
Jekk jogħġbok skuża dan l-istil orribbli, iżda aħna ikkummenta l-kodiċi korretti.
Hekk jien ser jiffranka dan u jagħmlu l- istess kmand minn qabel biex jagħmlu dan.
>> Kull dritt.
U issa x'jiġri?
Tajba.
Aħna qed għadhom wara l ġurdien bħad qabel,
iżda meta aħna jiksbu l-maws, konna ltqajna dan jitter gross.
X'qed jiġri hemmhekk?
Ukoll, fil-vector tagħna matematika, ftakar konna
tieħu d-distanza bejn il- cursor u ċ-ċentru tal-immaġni?
Ukoll, bħal dik approċċi 0, nibdew jkollna
bħal dan it-tip ta 'mġiba crazy fejn l-immaġini huwa tip ta '
bħall joxxilla madwar il-cursor.
U li jinħoloq dan jitter.
U li verament ikrah.
U inti probabilment ma tixtieq logħob tiegħek tagħmel dan,
sakemm huwa xi tip ta 'effett speċjali.
>> Allura hu għalhekk li għandna biss dan arbitrarja
cut off ta 'ħames pixels, fejn ngħidu jekk huwa fi żmien ħames pixels, aħna qed tajba.
Aħna ma bżonn biex jimxu l-immaġini aktar.
Allura dak hu li għaddej hemmhekk.
>> Allura dak pjuttost ħafna dan.
Inti issa taf kif toħloq tieqa, tagħbija immaġini,
jiġbed immaġni għall-tieqa, jiksbu keyboard input, tirċievi opinjonijiet maws,
hemm mazz ta 'ieħor input li inti ma tkunx
taf kif tikseb jekk inti biss jonfqu ftit minuti tħares lejn dokumentazzjoni.
Allura inti fil-fatt ikollhom pjuttost ftit għodda għad-dispożizzjoni tiegħek issa
jiktbu logħba full-sħiħ.
>> Issa, kull logħba jeħtieġ xi awdjo, iżda d-dokumentazzjoni awdjo
hija wkoll pjuttost tajba.
U jien lest li bet li jekk inti tifhem l-affarijiet
tkellimna dwar llum ma l-immaġini, u l-uċuħ,
l-twieqi, u kollox, imbagħad jidhru l-API awdjo mhuwiex
se tkun dik ħażina.
So I ħerqana li tara dak li toħloq ma SDL.