Tip:
Highlight text to annotate it
X
>> DAVID Malan: Le të shkruaj një program që përfshin një dritare dhe një rreth me
rrethi kërcim mbrapa dhe me radhë off majtë dhe të djathtë
Skajet e kësaj dritare.
Për ta bërë këtë, le të përdorim The Stanford Biblioteka Portable, dhe le të parë
përfshijnë gevents.h mënyrë që ne mund të dëgjuar për lëvizjet e mouse.
Le pastaj të përfshijë gobjects.h mënyrë që ne mund të deklarojë gjëra të tilla si ovals ose
qarqet, me të vërtetë.
Dhe pastaj le të përfshijnë gwindow.h në mënyrë që ne kemi një dritare grafike për
çdo gjë.
>> Le të deklarojnë kryesor në mënyrë të zakonshme.
Dhe le të deklarojnë tani dhe të ilustroj me shembull konkret ose krijoni atë dritare, GWindow -
dhe ne do të thërrasë dritaren e ndryshueshme -
merr newGWindow.
Dhe ne do të në mënyrë arbitrare e bëjnë të 320 piksele nga 240 pixels.
>> Le të ardhshëm ilustroj me shembull konkret një rreth.
Por për të ilustroj me shembull konkret këtë rreth, ne duhet të bëjmë pak më shumë punë.
Në veçanti, le të plotësoni këtë rreth mënyrë që i gjithë gjë është
e zezë dhe jo vetëm përshkruajë saj.
GOval -
ne do të thërrasë atë rrethi -
merr newGOval.
Ne do të vënë këtë ovale në 0, 110, dhe ne do të të bëjë ovale 20 pixels i gjerë nga
20 pixels i lartë - me fjalë të tjera, një diametër prej 20 ose një rreze të 10.
>> Le tani të vendosur ngjyra e atij rrethi të jenë të japin kuotën, mbyll thonjëzat, "e zezë". Le të
vendosur tani që të jetë e mbushur duke specifikuar vërtetë.
Dhe tani së fundi, le të shtoni rrethit të dritare si më poshtë, ku
Kjo e fundit është shtuar në ish.
>> Le të deklarojnë tani një të dyfishtë.
Ne do të thërrasë atë shpejtësia.
Dhe disi arbitrare, le të themi Shpejtësia e këtij rrethi do të jetë
2.0, me fjalë të tjera, 2 pixel për çdo njësi të kohës.
Dhe tani le të qëllimisht sjell një lak pafund.
>> Pra, si për të bërë këtë rreth kërcej prapa dhe me radhë?
E pra le të supozojmë në këtë lak që për çdo njësi të kohës, ne jemi
duke shkuar për të lëvizur rrethin vetëm pak bit bazuar mbi shpejtësinë e saj 2 piksel
për njësi të kohës.
Por vazhdimisht, ne do të duhet të kontrolloni nëse rrethi është i prekur
skajit të djathtë të ekranit ose të majtë buzë të ekranit, sepse nëse është kështu, ne
nevojë për të kërcej, mënyrë që të flasin.
>> Si për të zbatuar nocioni i kërcim?
E pra në qoftë se ne jemi duke shkuar në 2 pixels deri e drejta për njësi të kohës, për të kërcej jashtë
buzë e drejtë, ne thjesht mund të kundërt që të jetë negative 2 pixel për njësi
e kohës, duke mohuar shpejtësia.
Pra, në fakt, kërcim është relativisht drejtpërdrejtë.
>> Le të parë të lëvizur rrethin nga kjo shumë pixels përgjatë boshtit x, nga kjo
shumë pixels përgjatë aksit y.
Me fjalë të tjera, ne nuk duam që ajo të lëvizin përgjatë aksit y në të gjitha.
Ne vetëm duam që ajo të kërcej prapa dhe me radhë majtë dhe të djathtë.
>> Dhe tani le të kontrolloni në këtë lak nëse x-koordinatat e rrethit plus
gjerësia e rrethit është më i madh se ose e barabartë me
gjerësia e dritares -
me fjalë të tjera, në qoftë se vendndodhja rrethi-së plus gjerësia e rrethit
vetë është tani e kaluara buzë e dritares, ne do të
më të mirë reverse shpejtësisë tonë -
Shpejtësia e merr shpejtësia negativ, në këtë mënyrë Flipping një pozitiv për një
negative ose një negativ për një pozitiv.
Por, çfarë nëse rrethi është duke lëvizur nga djathta në të majtë dhe për këtë arsye godet
buzë majtë?
Me fjalë të tjera, në qoftë se x-koordinuar e rrethi tashmë është më e vogël se ose e barabartë
në 0, le të shkojnë përpara dhe përsëri anasjell shpejtësisë tonë.
>> Pra, pse nuk kam shtuar në gjerësia e rrethit këtij
kohë, siç kam bërë më parë?
E pra, mbani në mend se koordinatat i një objekti janë të përcaktuara
nga këndin e tij të lartë të majtë, jo nga mesi i saj.
Dhe kështu që kur rrethi është duke lëvizur nga majta në të djathtë, ne kemi nevojë për të kontrolluar
nëse buzë të drejtën e Rrethi ka kaluar
edge djathtë të dritares.
Pra, të kuptoj se çfarë është se, ne kemi për të marrë x-koordinuar e rrethit
plus gjerësia e rrethit të lëvizur veten nga lartë-majtë
qoshe, në mënyrë efektive, të top qoshe djathtas.
Kur rrethi është duke lëvizur nga e djathta në majtas, ndërkohë, ne nuk duhet të
bother me tepër të tillë, sepse qoshe të lartë e majtë të rrethit është
tashmë vlera ne do të marrë nga get x.
>> Le tani të lëvizur topin.
Le tani të shpëtuar, përpilojnë, dhe të drejtuar këtë Programi, bëjnë fryrje,. / fryrje.
Dhe nuk kemi një program.
>> Por rrethi është duke shkuar në mënyrë të mallkuar të shpejtë, kjo është pothuajse e pamundur për të parë se çfarë është
në të vërtetë ndodh.
Pra, le të mjaft programin me forcë nga klikuar X në të djathtë të lartë
qoshe këtu.
Le të kthehemi tani në kodin burimor dhe gjëra të ngadalësojnë pak pak.
>> Me fjalë të tjera, në kuadër të këtij pafund loop, në vend se vetëm dhe veprim dhe
lëvizin dhe përsëri, ad nauseum, le të zgjatem për vetëm disa milisekonda
përpara se të lëvizë përsëri.
Në veçanti, le të shkojnë në fund e lak pafund këtu dhe thjesht
pauzë për, të themi, 10 milliseconds në çdo përsëritje.
Le tani përpiluar dhe fryrje ri-drejtuar.
Dhe tani ne shohim një shumë më të arsyeshme zbatimi, ku ne mund të shohim
Rrethi vërtetë kërcim në majtë dhe të djathtë buzë.