Tip:
Highlight text to annotate it
X
>> DAVID MALAN: Mari kita menulis program yang melibatkan tingkap dan bulatan dengan
bulatan melantun ke belakang dan sebagainya off kiri dan kanan
tepi tingkap itu.
Untuk berbuat demikian, mari kita menggunakan Stanford Perpustakaan mudah alih, dan mari kita pertama
termasuk gevents.h supaya kita dapat mendengar untuk pergerakan tetikus.
Mari kita kemudian termasuk gobjects.h supaya kita boleh mengisytiharkan perkara seperti oval atau
bulatan, benar-benar.
Dan kemudian mari kita termasuk gwindow.h supaya kita mempunyai tetingkap grafik untuk
segala-galanya.
>> Mari kita mengisytiharkan utama dalam cara yang biasa.
Dan mari kita kini mengaku dan instantiate atau mewujudkan tetingkap itu, GWindow -
dan kami akan memanggil tingkap boleh ubah -
mendapat newGWindow.
Dan kita sewenang-wenangnya akan membuat ia 320 piksel oleh 240 piksel.
>> Mari kita seterusnya instantiate bulatan.
Tetapi untuk instantiate bulatan ini, kita perlu melakukan kerja sedikit lebih.
Khususnya, mari kita mengisi dalam bulatan ini supaya perkara keseluruhan
hitam dan bukan hanya menggariskan daripadanya.
GOval -
kami akan memanggilnya bulatan -
mendapat newGOval.
Kami akan meletakkan bujur ini pada 0, 110, dan kita akan membuat bujur 20 piksel lebar
20 piksel tinggi - dalam erti kata lain, diameter 20 atau radius 10.
>> Mari kita kini bersedia warna bulatan yang sebagai quote, unquote, "hitam." Mari kita
kini bersedia ia diisi dengan menentukan benar.
Dan kini akhir sekali, mari kita menambah bulatan untuk tetingkap seperti berikut, di mana
terakhir ditambah kepada bekas.
>> Mari kita kini mengisytiharkan double.
Kami akan memanggilnya halaju.
Dan agak sewenang-wenangnya, katakan yang halaju bulatan ini akan menjadi
2.0, dalam erti kata lain, 2 piksel bagi setiap unit masa.
Dan sekarang mari kita sengaja mendorong gelung tak terhingga.
>> Jadi bagaimana untuk membuat bulatan ini melantun ke belakang dan sebagainya?
Nah mari kita andaikan dalam gelung ini yang bagi setiap unit masa, kami
akan bergerak bulatan hanya sedikit sedikit berdasarkan halaju sebanyak 2 piksel
per unit masa.
Tetapi secara berterusan, kita akan perlu memeriksa jika kitaran ini menyentuh
tepi kanan skrin atau kiri tepi skrin, kerana jika demikian, kita
memerlukannya melantun, jadi untuk bercakap.
>> Bagaimana melaksanakan tanggapan melantun?
Baik jika kita akan di 2 piksel kepada betul per unit masa, melantun off
tepi yang betul, kita hanya boleh mengembalikan yang menjadi negatif 2 piksel per unit
masa, dengan itu menidakkan halaju.
Jadi sebenarnya, melantun agak terus-terang.
>> Mari pertama bergerak bulatan oleh banyak ini piksel sepanjang paksi-x, dengan ini
banyak piksel bersama-sama paksi-y.
Dalam erti kata lain, kita tidak mahu ia bergerak di sepanjang paksi-y sama sekali.
Kami hanya mahu ia kembali -alik kiri dan kanan.
>> Dan mari kita kini menyemak dalam gelung ini jika x-koordinat bulatan ditambah
lebar bulatan adalah lebih besar daripada atau sama dengan
lebar tingkap -
dalam erti kata lain, jika lokasi bulatan ditambah lebar bulatan
sendiri kini lalu tepi tetingkap, kita akan
lebih baik menterbalikkan halaju kami -
halaju mendapat halaju negatif, dengan itu Melibas yang positif kepada
negatif atau negatif kepada yang positif.
Tetapi bagaimana jika bulatan bergerak dari kanan ke kiri dan dengan itu, ia hits
tepi kiri?
Dalam erti kata lain, jika x-koordinat bulatan kini kurang daripada atau sama
kepada 0, mari kita pergi ke hadapan dan sekali lagi terbalikkan halaju kami.
>> Jadi mengapa saya tidak ditambah dalam lebar bulatan ini
masa, seperti yang saya lakukan sebelum ini?
Nah, ingat bahawa koordinat objek ditakrifkan
oleh sudut atas kiri tangan, bukan dengan pertengahan.
Dan maka apabila bulatan bergerak dari kiri ke kanan, kita perlu menyemak
sama ada tepi kanan bulatan telah lulus
tepi kanan tetingkap.
Jadi untuk mencari jalan apa yang, kami mempunyai untuk mendapatkan x-koordinat bulatan
ditambah lebar bulatan untuk bergerak diri kita dari kiri atas
sudut, berkesan, kepada sudut atas kanan.
Apabila kitaran ini bergerak dari kanan ke kiri, sementara itu, kita tidak perlu
mengganggu dengan tambahan itu, kerana sudut atas sebelah kiri bulatan adalah
sudah nilai kita akan dapat daripada mendapatkan x.
>> Mari kita sekarang beralih bola.
Sekarang mari kita menyimpan, menyusun, dan menjalankan ini program, membuat pengembalian,. / melantun.
Dan kita ada program.
>> Tetapi bulatan bergerak begitu darn cepat, ia adalah hampir mustahil untuk melihat apa yang
sebenarnya berlaku.
Jadi mari kita agak program secara paksa oleh klik X di kanan atas
sudut di sini.
Sekarang mari kita kembali ke dalam kod sumber dan perkara-perkara perlahan ke bawah sedikit.
>> Dalam erti kata lain, dalam masa ini tidak terhingga gelung, dan bukan hanya dan bergerak dan
bergerak dan sekali lagi, iklan nauseum, mari kita berlegar hanya untuk beberapa milisaat
sebelum meneruskan perjalanan ke bergerak lagi.
Khususnya, mari kita pergi ke bawah gelung yang tidak terhingga di sini dan hanya
berhenti seketika untuk, katakan, 10 milisaat pada setiap lelaran.
Sekarang mari kita susun semula dan semula jangka melantun.
Dan kini kita melihat yang lebih munasabah pelaksanaan, di mana kita dapat melihat
bulatan yang benar-benar melantun pada kiri dan tepi kanan.