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