Tip:
Highlight text to annotate it
X
>> DAVID MALAN: bir proqram yazmaq edək bir pəncərə və bir daire cəlb
geri və irəli dönen dairəsi sol və sağ off
ki, pəncərə kənarları.
Bunu etmək üçün, The Stanford istifadə edək Portable Kitabxana, və ilk edək
gevents.h daxildir biz ki siçan hərəkəti üçün qulaq asmaq.
Nin sonra gobjects.h daxildir edək ki biz oval kimi şeylər elan və ya
dairələr, həqiqətən.
Və sonra gwindow.h daxildir edək ki biz bir qrafik pəncərə var
hər şey.
>> Nin adi şəkildə əsas bəyan edək.
Və indi bəyan və instantiate bildirin və ya pəncərə, GWindow yaratmaq -
və biz dəyişən pəncərə zəng edəcəyik -
newGWindow olur.
Və biz özbaşına etmək lazımdır 240 piksel 320 piksel.
>> Növbəti bir daire instantiate edək.
Amma bu dairə instantiate üçün, biz bir az daha çox iş lazımdır.
Xüsusilə, bu dairə doldurmaq qoy bütün şey ki,
yalnız qara və onların müəyyən.
GOval -
biz dairə zəng edəcəyik -
newGOval olur.
Biz 0, 110 bu oval qoymaq lazımdır, və biz will tərəfindən geniş oval 20 piksel etmək
Yüksək 20 piksel - başqa sözlə, bir 20 diametri və ya 10 radius.
>> Indi ki, dairə rəngini təyin edək quote, dırnağı bağlamaq olmaq "qara". Edək
indi dolu müəyyən doğru ifadə edərək.
İndi nəhayət, nin dairəsi əlavə edək kimi pəncərə, aşağıdakı vasitəsi
sonuncu keçmiş əlavə edilir.
>> İndi bir ikiqat elan edək.
Biz sürət zəng edəcəyik.
Və bir qədər özbaşına, demək bildirin Bu dairənin sürət olacaq
2.0, başqa sözlə, 2 pixels zaman hər vahid üçün.
İndi qəsdən edək sonsuz loop bişirmək.
>> Belə ki, bu dairə etmək üçün necə geri və irəli sıçrayış?
Yaxşı bu loop ərzində fərz edək ki, zaman hər vahid üçün, biz istəyirik
Bu dairə bir az hərəkət olacaq 2 piksel onun sürəti əsasında bit
vaxt vahidi.
Amma daim, biz olacaq dairə toxunan əgər yoxlamaq
ekran və ya sol sağ kənar Ekranın kənarında, çünki əgər biz
belə danışmaq, sıçrayış etmək lazımdır.
>> Necə həyata keçirmək üçün dönen anlayışı?
Yaxşı biz 2 piksel olacaq əgər doğru zamanda vahidi, off sıçrayış
sağ kənar, biz sadəcə ləğv edə bilər ki, vahid başına mənfi 2 piksel olmalıdır
zaman, bununla negating sürət.
Belə ki, əslində, bouncing nisbətən edir sadə.
>> Ilk bu çox dairəsi hərəkət edək bu x-ox boyunca piksel,
y-ox boyunca çox piksel.
Başqa sözlə, biz istəmirik bütün y-ox boyunca hərəkət.
Biz yalnız geri sıçrama etmək istəyirəm və irəli sol və sağ.
>> Və indi bu loop ərzində yoxlamaq imkan Bu dairənin x-koordinat plus
dairə eni böyükdür daha və ya bərabər
pəncərə eni -
başqa sözlə, əgər daire-nin yeri plus dairəsi eni
özü kənarında keçmiş indi pəncərə, biz istədiyiniz
yaxşı sürət geri -
sürət bununla da, mənfi sürət alır bir müsbət Flipping
müsbət və ya mənfi mənfi.
Lakin dairə nə hərəkət edir, sağ sol və buna görə də edib
sol kənar?
Başqa sözlə, x-koordinat əgər dairə indi daha az və ya bərabər
0 nin irəli və yenidən gedək bizim sürət ters.
>> Belə ki, niyə mən əlavə deyil dairəsi bu eni
dəfə mən əvvəl olduğu kimi?
Yaxşı, unutmayın ki, koordinatları bir obyekt müəyyən edilir
onun üst sol küncündə tərəfindən, onun ortasında.
Və dairə hərəkət zaman soldan sağa, biz yoxlamaq lazımdır
olub sağ kənarında dairə keçdi
pəncərənin sağ kənarında.
Belə ki, biz ki, nə anlamaq üçün Bu dairənin x-koordinasiya almaq üçün
plus dairəsi eni hərəkət özümüzü sol üst tərəfdən
künc, səmərəli, üçün sağ üst küncündə.
Dairəsi sağ hərəkət zaman sol, eyni zamanda, biz ehtiyac yoxdur
belə əlavə narahat çünki dairəsi üst sol küncü edir
biz will artıq dəyəri get x almaq.
>> İndi top hərəkət edək.
Indi, saxlamaq tərtib və bu run edək proqram,. / sıçrama sıçrama etmək.
Və biz bir proqram var.
>> Lakin dairə, belə darn sürətli hərəkət bu nə görmək demək olar ki, mümkün deyil
həqiqətən gedir.
Belə ki, zorla olduqca proqramı bildirin sağ üst-əl X tıklayarak
burada künc.
Indi kodunu geri gedək və aşağı şeyi yavaş bir az.
>> Başqa sözlə, bu sonsuz ərzində deyil, yalnız və hərəkət və daha loop,
hərəkət və yenidən, elan nauseum nin uzanmaq bildirin yalnız bir neçə ms üçün
yenidən hərəkət davam əvvəl.
Xüsusilə, ən aşağı gedək burada sadəcə sonsuz loop
10 ms, demək, fasilə hər iteration.
İndi compile və yenidən run sıçrama edək.
Və indi biz bir çox ağlabatan bax biz görə bilərsiniz həyata keçirilməsi,
dairə həqiqətən də dönen sol və sağ kənar.