1 00:00:00,000 --> 00:00:00,320 2 00:00:00,320 --> 00:00:02,520 >> Виступаючий 1: Давайте тепер написати програму який включає в себе вікна, 3 00:00:02,520 --> 00:00:04,070 коло, і мій курсор. 4 00:00:04,070 --> 00:00:07,890 Зокрема, давайте примірник чорний коло на екрані, а потім 5 00:00:07,890 --> 00:00:10,180 давайте навчати це слідувати моїм курсор. 6 00:00:10,180 --> 00:00:14,650 Так що якщо я рухаю миша вгору, вниз, вліво або вправо, коло слід уздовж. 7 00:00:14,650 --> 00:00:20,630 >> Давайте спочатку включають gevents.h, так що ми маємо доступ до графічних подій. 8 00:00:20,630 --> 00:00:25,060 Давайте наступне включають GObjects, так що ми маємо доступ до 9 00:00:25,060 --> 00:00:26,480 об'єкти, такі як колах - 10 00:00:26,480 --> 00:00:28,890 або, точніше, овали, як ми побачимо. 11 00:00:28,890 --> 00:00:32,560 А потім давайте включимо gwindow.h, так що у нас є доступ 12 00:00:32,560 --> 00:00:34,090 в графічному вікні. 13 00:00:34,090 --> 00:00:36,860 Далі, давайте оголосити головним звичайним способом. 14 00:00:36,860 --> 00:00:39,460 Int основний недійсними. 15 00:00:39,460 --> 00:00:43,090 Давайте тепер примірник, або зареєструватися, вікно з GWindow. 16 00:00:43,090 --> 00:00:45,390 І ми будемо називати змінну вікно. 17 00:00:45,390 --> 00:00:47,890 Отримує newGWindow. 18 00:00:47,890 --> 00:00:53,380 І я буду кілька довільно зробити віконні 320 пікселів на 240 пікселів. 19 00:00:53,380 --> 00:00:55,280 >> Тепер нам потрібно створити екземпляр що коло. 20 00:00:55,280 --> 00:00:58,160 Ну, виходить, що окружність є окремим випадком овалу. 21 00:00:58,160 --> 00:01:01,780 Просто так сталося, що ширина і висота окружності рівні. 22 00:01:01,780 --> 00:01:04,599 Так що давайте примірник овальний таким чином. 23 00:01:04,599 --> 00:01:05,770 GOval. 24 00:01:05,770 --> 00:01:07,950 Ми будемо називати його коло, однако. 25 00:01:07,950 --> 00:01:11,160 І, що збирається отримати newGOval. 26 00:01:11,160 --> 00:01:14,340 І ми збираємося вказати, що це почнеться у верхньому лівому 27 00:01:14,340 --> 00:01:17,050 кут, координати якого від 0 кома 0. 28 00:01:17,050 --> 00:01:21,360 І ширина цієї глобальної будуть 50 на 50 - 29 00:01:21,360 --> 00:01:23,700 іншими словами, коло. 30 00:01:23,700 --> 00:01:26,090 >> Тепер у нас є вікно, у нас є коло. 31 00:01:26,090 --> 00:01:28,950 Але ми ще не додав, що коло до вікна. 32 00:01:28,950 --> 00:01:32,000 Так що ми повинні зробити це явно. 33 00:01:32,000 --> 00:01:34,760 Додати вікна, коло. 34 00:01:34,760 --> 00:01:37,540 Таким чином, додавши останню до першого. 35 00:01:37,540 --> 00:01:39,080 >> Тепер давайте зробимо що-небудь назавжди. 36 00:01:39,080 --> 00:01:42,520 Давайте сядемо в нескінченний цикл, прослуховування подій миші. 37 00:01:42,520 --> 00:01:45,270 Зокрема, не натискає, але руху миші. 38 00:01:45,270 --> 00:01:48,450 І реагувати на ці рухи переміщенням коло. 39 00:01:48,450 --> 00:01:49,630 Тут ми йдемо. 40 00:01:49,630 --> 00:01:52,820 У той час як вірно. 41 00:01:52,820 --> 00:01:56,710 Давайте перевіримо для події з GEvent, назвавши його подією. 42 00:01:56,710 --> 00:01:59,580 Отримує getNextEvent. 43 00:01:59,580 --> 00:02:03,460 І давайте конкретно спробувати отримати подія миші чи іншого типу. 44 00:02:03,460 --> 00:02:07,250 Давайте наступне переконайтеся, що подія робить НЕ дорівнює NULL, так що є 45 00:02:07,250 --> 00:02:08,650 насправді щось реагувати. 46 00:02:08,650 --> 00:02:11,890 47 00:02:11,890 --> 00:02:19,990 >> І давайте чергова перевірка, якщо getEventType, переходячи в разі, дорівнює MOUSE_MOVED, 48 00:02:19,990 --> 00:02:23,180 який є спеціальним постійним, заявив в Портативний Бібліотека Стенфорд, що 49 00:02:23,180 --> 00:02:25,540 означає, що миша дійсно був переміщений. 50 00:02:25,540 --> 00:02:28,830 >> Тоді давайте перейдемо до виконайте наступні дії. 51 00:02:28,830 --> 00:02:29,580 Оголосіть дубль. 52 00:02:29,580 --> 00:02:31,050 І я буду називати це х. 53 00:02:31,050 --> 00:02:35,470 Зокрема зберігання в тому, що повернення Значення GetX заходи. 54 00:02:35,470 --> 00:02:37,710 Іншими словами, зрозумійте мене х-координату, де 55 00:02:37,710 --> 00:02:39,320 миші був переміщений в. 56 00:02:39,320 --> 00:02:44,480 Але тільки, щоб зробити коло складі точно на вершині мого курсора, дозвольте мені тепер 57 00:02:44,480 --> 00:02:49,600 відняти від ширини Сам коло, розділене на 2. 58 00:02:49,600 --> 00:02:52,160 Іншими словами, давайте віднімемо від її радіуса. 59 00:02:52,160 --> 00:02:54,180 >> Давайте зробимо щось подібне і отримаєте у. 60 00:02:54,180 --> 00:02:57,840 Y отримує отримати координати у про цю подію - 61 00:02:57,840 --> 00:02:59,930 тобто, переїхав миші - 62 00:02:59,930 --> 00:03:03,320 мінус GetWidth кола. 63 00:03:03,320 --> 00:03:06,810 І на цей раз ми зробимо повний діаметр, що не радіус. 64 00:03:06,810 --> 00:03:13,650 Нарешті, давайте встановити місце розташування Коло бути, що нова х кома у. 65 00:03:13,650 --> 00:03:17,670 Давайте тепер зберегти, скомпілювати, і запустити цю програму. 66 00:03:17,670 --> 00:03:19,710 >> Зробити курсор. 67 00:03:19,710 --> 00:03:22,550 . / Курсор. 68 00:03:22,550 --> 00:03:25,410 Там в коло в верхньому лівому кутку. 69 00:03:25,410 --> 00:03:29,530 Тепер, дозвольте мені поворухнути курсор, що вікно і подивитися, якщо засувки коло 70 00:03:29,530 --> 00:03:32,200 на нього, як очікувалося. 71 00:03:32,200 --> 00:03:33,490 І дійсно це робить. 72 00:03:33,490 --> 00:03:38,380 Зверніть увагу, що конкретно, коло є на самому верху мого курсора, 73 00:03:38,380 --> 00:03:42,580 строго по центру, у зв'язку з математикою ми з участю його діаметр і 74 00:03:42,580 --> 00:03:43,830 його радіус. 75 00:03:43,830 --> 00:03:45,395