1 00:00:00,000 --> 00:00:00,260 2 00:00:00,260 --> 00:00:03,010 >> ДЕВІД Малан: Давайте напишемо програму за участю вікно і коло з 3 00:00:03,010 --> 00:00:05,820 коло відскакуючи назад і вперед від лівої і правої 4 00:00:05,820 --> 00:00:07,120 Краї цього вікна. 5 00:00:07,120 --> 00:00:09,960 Щоб зробити це, давайте використовувати Стенфордського Портативний Бібліотека, і давайте спочатку 6 00:00:09,960 --> 00:00:14,830 включають gevents.h так що ми можемо слухати рухів миші. 7 00:00:14,830 --> 00:00:20,970 Давайте тоді включають gobjects.h так, щоб ми можемо оголосити такі речі, як овалів або 8 00:00:20,970 --> 00:00:22,110 круги, насправді. 9 00:00:22,110 --> 00:00:26,090 А потім давайте включимо gwindow.h так, щоб у нас є графічне вікно для 10 00:00:26,090 --> 00:00:27,020 все. 11 00:00:27,020 --> 00:00:30,390 >> Давайте оголосити головний звичайним способом. 12 00:00:30,390 --> 00:00:35,095 І давайте зараз оголосити і створити екземпляр або зареєструватися це вікно, GWindow - 13 00:00:35,095 --> 00:00:37,090 і ми будемо називати змінну вікно - 14 00:00:37,090 --> 00:00:39,790 отримує newGWindow. 15 00:00:39,790 --> 00:00:44,450 І ми будемо довільно зробити його 320 пікселів на 240 пікселів. 16 00:00:44,450 --> 00:00:46,190 >> Давайте наступне примірник коло. 17 00:00:46,190 --> 00:00:48,740 Але для створення екземпляра це коло, ми повинні зробити трохи більше роботи. 18 00:00:48,740 --> 00:00:51,340 Зокрема, давайте заповнити в цьому колі так що весь Справа в тому, 19 00:00:51,340 --> 00:00:53,910 чорний, а не тільки намітити їх. 20 00:00:53,910 --> 00:00:54,850 GOval - 21 00:00:54,850 --> 00:00:56,450 ми будемо називати його коло - 22 00:00:56,450 --> 00:00:58,310 отримує newGOval. 23 00:00:58,310 --> 00:01:04,810 Ми помістимо цей овал при 0, 110, і ми будемо зробити овальні 20 пікселів в ширину і 24 00:01:04,810 --> 00:01:09,070 20 пікселів високі - іншими словами, діаметр 20 або радіус 10. 25 00:01:09,070 --> 00:01:14,120 >> Давайте тепер встановити колір цього кола бути цитата, кінець цитати, "чорний". Давайте 26 00:01:14,120 --> 00:01:19,030 Тепер встановіть його бути заповнені , Вказавши правда. 27 00:01:19,030 --> 00:01:24,100 І тепер, нарешті, давайте додамо коло, щоб вікно наступним чином, при цьому 28 00:01:24,100 --> 00:01:26,390 Останній добавл ють до першого. 29 00:01:26,390 --> 00:01:27,910 >> Давайте тепер оголосити дубль. 30 00:01:27,910 --> 00:01:29,200 Ми будемо називати його швидкість. 31 00:01:29,200 --> 00:01:32,380 І кілька довільно, скажімо Швидкість цього кола буде 32 00:01:32,380 --> 00:01:36,290 2.0, іншими словами, 2 пікселів на кожну одиницю часу. 33 00:01:36,290 --> 00:01:39,380 А тепер давайте навмисно викликати нескінченний цикл. 34 00:01:39,380 --> 00:01:42,060 >> Отже, як зробити це коло туди і назад? 35 00:01:42,060 --> 00:01:45,190 Ну давайте припустимо, протягом цього циклу, який на кожну одиницю часу, ми 36 00:01:45,190 --> 00:01:48,890 рухатиметься кола трохи біт на основі його швидкості 2 пікселя 37 00:01:48,890 --> 00:01:50,070 за одиницю часу. 38 00:01:50,070 --> 00:01:52,900 Але постійно, ми збираємося повинні перевірити, якщо коло чіпає 39 00:01:52,900 --> 00:01:56,480 правий край екрана або ліворуч край екрана, тому що якщо так, то ми 40 00:01:56,480 --> 00:01:58,530 це потрібно, щоб підстрибнути, так сказати. 41 00:01:58,530 --> 00:02:00,380 >> Як реалізувати Поняття підстрибуючи? 42 00:02:00,380 --> 00:02:04,400 Ну, якщо ми збираємося в 2 пікселя в Право на одиницю часу, відскочити 43 00:02:04,400 --> 00:02:08,259 правий край, ми можемо просто звернути назад що бути негативні 2 пікселів на одиницю 44 00:02:08,259 --> 00:02:10,400 часу, що зводить швидкість. 45 00:02:10,400 --> 00:02:13,160 Так адже, підстрибуючи щодо просто. 46 00:02:13,160 --> 00:02:19,260 >> Давайте спочатку перемістити коло, це багато пікселів уздовж осі х, до цього 47 00:02:19,260 --> 00:02:21,040 багато пікселів уздовж осі у. 48 00:02:21,040 --> 00:02:23,600 Іншими словами, ми не хочемо, щоб це переміщатися уздовж осі Y. взагалі. 49 00:02:23,600 --> 00:02:25,950 Ми тільки хочемо, щоб прийти в норму і вперед вліво і вправо. 50 00:02:25,950 --> 00:02:31,910 >> І давайте тепер перевірити протягом цього циклу, якщо х-координата кола плюс 51 00:02:31,910 --> 00:02:36,515 ширина кола більше або дорівнює 52 00:02:36,515 --> 00:02:38,520 Ширина вікна - 53 00:02:38,520 --> 00:02:42,180 Іншими словами, якщо місце розташування цього кола плюс ширина кола 54 00:02:42,180 --> 00:02:44,840 Сам тепер за край вікна, ми б 55 00:02:44,840 --> 00:02:46,090 краще звернути назад нашу швидкість - 56 00:02:46,090 --> 00:02:49,080 57 00:02:49,080 --> 00:02:53,680 швидкість отримує негативну швидкість, тим самим гортати позитивного на 58 00:02:53,680 --> 00:02:56,090 негативне або негативне до позитивного. 59 00:02:56,090 --> 00:02:59,740 Але що якщо коло рухається від справа наліво і, отже, вона потрапляє 60 00:02:59,740 --> 00:03:00,670 лівий край? 61 00:03:00,670 --> 00:03:06,490 Іншими словами, якщо х-координата коло тепер менше або дорівнює 62 00:03:06,490 --> 00:03:12,530 0, давайте йти вперед і знову інвертувати наш швидкість. 63 00:03:12,530 --> 00:03:14,980 >> Так чому ж я не додав до ширина кола цьому 64 00:03:14,980 --> 00:03:16,410 Час, як і попереджав? 65 00:03:16,410 --> 00:03:19,050 Ну, майте на увазі, що координати об'єкта визначені 66 00:03:19,050 --> 00:03:22,200 його верхньому лівому кутку, не його середині. 67 00:03:22,200 --> 00:03:25,810 І тому, коли коло рухається від зліва направо, ми повинні перевірити 68 00:03:25,810 --> 00:03:28,910 Чи правий край коло пройшов 69 00:03:28,910 --> 00:03:30,200 правий край вікна. 70 00:03:30,200 --> 00:03:34,100 Таким чином, щоб з'ясувати, що це таке, у нас є щоб отримати координати х з кола 71 00:03:34,100 --> 00:03:38,080 плюс ширина кола перемістити самі з верхньої лівої 72 00:03:38,080 --> 00:03:40,650 кут, ефективно, щоб у верхньому правому куті. 73 00:03:40,650 --> 00:03:43,700 Коли коло рухається справа ліворуч, між тим, ми не повинні 74 00:03:43,700 --> 00:03:47,550 возитися з такою Крім того, оскільки верхній лівий кут окружності 75 00:03:47,550 --> 00:03:50,700 вже значення, ми будемо отримати від короткострокового х. 76 00:03:50,700 --> 00:03:54,140 >> Давайте тепер рухатися м'яч. 77 00:03:54,140 --> 00:04:00,900 Давайте тепер зберегти, скомпілювати і запустити цей Програма, зробити відскік,. / Відскок. 78 00:04:00,900 --> 00:04:02,230 І у нас є програма. 79 00:04:02,230 --> 00:04:05,760 >> Але коло рухається так чертовски швидко, це майже неможливо побачити, що 80 00:04:05,760 --> 00:04:07,060 відбувається насправді. 81 00:04:07,060 --> 00:04:10,620 Так що давайте досить програму насильно натиснувши на хрестик у правому верхньому 82 00:04:10,620 --> 00:04:11,720 кут тут. 83 00:04:11,720 --> 00:04:15,300 Давайте тепер повернемося у вихідний код і уповільнити хід подій небагато. 84 00:04:15,300 --> 00:04:19,240 >> Іншими словами, в цьому нескінченний цикл, а не просто і рух, і 85 00:04:19,240 --> 00:04:22,850 рухатися і знову, до нудоти, давайте затримуватися всього за кілька мілісекунд 86 00:04:22,850 --> 00:04:24,910 перш ніж приступити до рухатися знову. 87 00:04:24,910 --> 00:04:28,480 Зокрема, підемо на дно з нескінченного циклу тут і просто 88 00:04:28,480 --> 00:04:32,820 паузу, скажімо, 10 мілісекунд на кожній ітерації. 89 00:04:32,820 --> 00:04:36,690 Давайте тепер перекомпілювати і повторно запустити відмов. 90 00:04:36,690 --> 00:04:40,190 І тепер ми бачимо набагато більш розумним реалізація, де ми можемо побачити 91 00:04:40,190 --> 00:04:43,310 Коло дійсно підстрибуючи на ліворуч і праворуч краю. 92 00:04:43,310 --> 00:04:45,395