>> ДЕВІД Малан: Давайте напишемо програму за участю вікно і коло з
коло відскакуючи назад і вперед від лівої і правої
Краї цього вікна.
Щоб зробити це, давайте використовувати Стенфордського Портативний Бібліотека, і давайте спочатку
включають gevents.h так що ми можемо слухати рухів миші.
Давайте тоді включають gobjects.h так, щоб ми можемо оголосити такі речі, як овалів або
круги, насправді.
А потім давайте включимо gwindow.h так, щоб у нас є графічне вікно для
все.
>> Давайте оголосити головний звичайним способом.
І давайте зараз оголосити і створити екземпляр або зареєструватися це вікно, GWindow -
і ми будемо називати змінну вікно -
отримує newGWindow.
І ми будемо довільно зробити його 320 пікселів на 240 пікселів.
>> Давайте наступне примірник коло.
Але для створення екземпляра це коло, ми повинні зробити трохи більше роботи.
Зокрема, давайте заповнити в цьому колі так що весь Справа в тому,
чорний, а не тільки намітити їх.
GOval -
ми будемо називати його коло -
отримує newGOval.
Ми помістимо цей овал при 0, 110, і ми будемо зробити овальні 20 пікселів в ширину і
20 пікселів високі - іншими словами, діаметр 20 або радіус 10.
>> Давайте тепер встановити колір цього кола бути цитата, кінець цитати, "чорний". Давайте
Тепер встановіть його бути заповнені , Вказавши правда.
І тепер, нарешті, давайте додамо коло, щоб вікно наступним чином, при цьому
Останній добавл ють до першого.
>> Давайте тепер оголосити дубль.
Ми будемо називати його швидкість.
І кілька довільно, скажімо Швидкість цього кола буде
2.0, іншими словами, 2 пікселів на кожну одиницю часу.
А тепер давайте навмисно викликати нескінченний цикл.
>> Отже, як зробити це коло туди і назад?
Ну давайте припустимо, протягом цього циклу, який на кожну одиницю часу, ми
рухатиметься кола трохи біт на основі його швидкості 2 пікселя
за одиницю часу.
Але постійно, ми збираємося повинні перевірити, якщо коло чіпає
правий край екрана або ліворуч край екрана, тому що якщо так, то ми
це потрібно, щоб підстрибнути, так сказати.
>> Як реалізувати Поняття підстрибуючи?
Ну, якщо ми збираємося в 2 пікселя в Право на одиницю часу, відскочити
правий край, ми можемо просто звернути назад що бути негативні 2 пікселів на одиницю
часу, що зводить швидкість.
Так адже, підстрибуючи щодо просто.
>> Давайте спочатку перемістити коло, це багато пікселів уздовж осі х, до цього
багато пікселів уздовж осі у.
Іншими словами, ми не хочемо, щоб це переміщатися уздовж осі Y. взагалі.
Ми тільки хочемо, щоб прийти в норму і вперед вліво і вправо.
>> І давайте тепер перевірити протягом цього циклу, якщо х-координата кола плюс
ширина кола більше або дорівнює
Ширина вікна -
Іншими словами, якщо місце розташування цього кола плюс ширина кола
Сам тепер за край вікна, ми б
краще звернути назад нашу швидкість -
швидкість отримує негативну швидкість, тим самим гортати позитивного на
негативне або негативне до позитивного.
Але що якщо коло рухається від справа наліво і, отже, вона потрапляє
лівий край?
Іншими словами, якщо х-координата коло тепер менше або дорівнює
0, давайте йти вперед і знову інвертувати наш швидкість.
>> Так чому ж я не додав до ширина кола цьому
Час, як і попереджав?
Ну, майте на увазі, що координати об'єкта визначені
його верхньому лівому кутку, не його середині.
І тому, коли коло рухається від зліва направо, ми повинні перевірити
Чи правий край коло пройшов
правий край вікна.
Таким чином, щоб з'ясувати, що це таке, у нас є щоб отримати координати х з кола
плюс ширина кола перемістити самі з верхньої лівої
кут, ефективно, щоб у верхньому правому куті.
Коли коло рухається справа ліворуч, між тим, ми не повинні
возитися з такою Крім того, оскільки верхній лівий кут окружності
вже значення, ми будемо отримати від короткострокового х.
>> Давайте тепер рухатися м'яч.
Давайте тепер зберегти, скомпілювати і запустити цей Програма, зробити відскік,. / Відскок.
І у нас є програма.
>> Але коло рухається так чертовски швидко, це майже неможливо побачити, що
відбувається насправді.
Так що давайте досить програму насильно натиснувши на хрестик у правому верхньому
кут тут.
Давайте тепер повернемося у вихідний код і уповільнити хід подій небагато.
>> Іншими словами, в цьому нескінченний цикл, а не просто і рух, і
рухатися і знову, до нудоти, давайте затримуватися всього за кілька мілісекунд
перш ніж приступити до рухатися знову.
Зокрема, підемо на дно з нескінченного циклу тут і просто
паузу, скажімо, 10 мілісекунд на кожній ітерації.
Давайте тепер перекомпілювати і повторно запустити відмов.
І тепер ми бачимо набагато більш розумним реалізація, де ми можемо побачити
Коло дійсно підстрибуючи на ліворуч і праворуч краю.