DAVID Malan: Olgem kirjutada programm kaasates aken ja ring ringi kopsakas edasi-tagasi väljas vasakul ja paremal servad, et aken. Selleks kasutagem Stanford Portable raamatukogu ja olgem esimene sisaldavad gevents.h et saaksime kuulake hiire liikumist. Olgem siis lisada gobjects.h et saame kuulutada asjad ovaali või ringid, tõesti. Ja siis lähme hulka gwindow.h et meil graafiline aken kõike. Olgem kuulutada peamine tavapärasel viisil. Ja olgem nüüd deklareerima ja algväärtustan või luua, et akna GWindow - ja me kutsume muutuja aken - saab newGWindow. Ja me suvaliselt teha 320 pikslit poolt 240 pikslit. Teeme järgmise algväärtustan ringi. Aga instantiate Ringi meil on vaja teha natuke rohkem tööd. Eelkõige olgem täita ringi nii et kogu asi on must ja mitte ainult ülevaate sellest. GOval - me nimetame seda ringi - saab newGOval. Me paneme selle ovaalne 0, 110, ja me teha ovaalne 20 pikslit lai 20 pikslit kõrge - teisisõnu diameeter 20 või raadiusega 10. Olgem nüüd seatud selle värvi ring olema tsitaat, lõppeb, "must". Olgem nüüd pani täidetakse määrates õige. Ja nüüd lõpuks lisame ringi akna järgmiselt, kusjuures Viimasel lisatakse eelnevale. Olgem nüüd deklareerima topelt. Me nimetame seda kiirust. Ja mõnevõrra meelevaldselt, ütleme kiirus ringi saab 2,0, teisisõnu, 2 pikslit iga ajaühiku. Ja nüüd lähme tahtlikult indutseerida lõputu silmuse. Niisiis, kuidas teha see ring põrge edasi-tagasi? Noh oletame sellises ringluses iga ajaühiku, me oleme kavatse minna ringi natuke bitine põhineb selle kiirus 2 pikslit ajaühikus. Kuid pidevalt, me peame kontrollida, kas ring on liigutav paremale ekraani serval või vasakule servas, sest kui on, siis me vaja seda põrgatama, nii rääkida. Kuidas rakendada mõiste kopsakas? Noh, kui me kell 2 pikslit õige ajaühikus, põrgatama off paremal äärel, me lihtsalt tagurpidi et negatiivne 2 pikslit ühiku aega, mistõttu muutus kiirus. Nii et tegelikult, kopsakas on suhteliselt arusaadav. Vaatame kõigepealt liikuda ringi nii palju pikslit mööda x-telge, mida see palju piksleid piki y-telge. Teisisõnu, me ei taha, et see liikuda piki y-telge üldse. Me tahame ainult see põrge tagasi edasi vasakule ja paremale. Ja olgem nüüd vaadata selles loop kui x-koordinaadi ringi pluss laius ring on suurem kui või võrdne laius aken - Teisisõnu, kui ringi asukohta pluss laius ringi ise on nüüd minevik serva Akna olime parem vastupidine meie kiirus - kiirus muutub negatiivne kiirus, millega flipping positiivne negatiivne või negatiivsest positiivseks. Aga mis siis, kui ringi liigub paremalt vasakule ja seetõttu tabab vasakust servast? Teisisõnu, kui x-koordinaat Ringi nüüd väiksem või võrdne 0, lähme edasi ja jälle Pöörake oma kiiruse. Miks ei ole ma mitte lisada ringi laiuse see aeg, kui ma tegin enne? Noh, pea meeles, et kasutaja tegevused ning objekti määratletakse selle ülemisse vasakusse nurka, mitte selle keskel. Ja nii kui ringi liigub vasakult paremale, peame kontrollima kas parem serv ring on läbinud paremas servas akna. Nii, et aru saada, mis see on, on meil saada x-koordinaadi ringi pluss laius ringi liikuda end ülevalt vasakul nurgas, tõhusalt, et üleval paremas nurgas. Kui ringi liigub paremalt vasakule, vahepeal me ei pea segaks nagu Lisaks, kuna ülemises vasakus nurgas ring on juba väärtus meiepoolsete saada get x. Olgem nüüd liikuda palli. Olgem nüüd salvestada, koostada ja käivitada programmi muuta põrge. / põrge. Ja seal on meil programm. Aga ringi liigub nii kuradi kiire, see on peaaegu võimatu, et näha, mis on tegelikult toimub. Teeme hoopis programmi sunniviisiliselt klikkides X ülemises parempoolses siin nurgas. Lähme nüüd tagasi minna lähtekoodi ja aeglane asjad maha natuke. Teisisõnu, sellel lõpmatu loop, mitte lihtsalt ja liikuda ja liikuda ja uuesti, ad nauseum, lähme jõlkuma vaid paar millisekundit Enne jätkamist liikuda uuesti. Eelkõige lähme põhja lõpmatu silmus siin ja lihtsalt pausi, ütleme, 10 millisekundit iga iteratsiooni. Olgem nüüd kompileerida ja re-run põrge. Ja nüüd me näeme palju rohkem põhjendatud rakendamine, kus me näeme ring tõeliselt kopsakas vasak ja parem serv.