>> Выступающий 1: Давайте теперь написать программу который включает в себя окна,
круг, и мой курсор.
В частности, давайте экземпляр черный круг на экране, а затем
давайте обучать это следовать моим курсор.
Так что если я двигаю мышь вверх, вниз, влево или вправо, круг следует вдоль.
>> Давайте сначала включают gevents.h, так что мы имеем доступ к графическим событий.
Давайте следующий включают GObjects, так что мы имеем доступ к
объекты, такие как кругах -
или, точнее, овалы, как мы увидим.
А потом давайте включим gwindow.h, так что у нас есть доступ
в графическом окне.
Далее, давайте объявить главным обычным способом.
Int основной недействительными.
Давайте теперь экземпляр, или зарегистрироваться, окно с GWindow.
И мы будем называть переменную окно.
Получает newGWindow.
И я буду несколько произвольно сделать оконные 320 пикселей на 240 пикселей.
>> Теперь нам нужно создать экземпляр что круг.
Ну, получается, что окружность является частным случаем овала.
Просто так случилось, что ширина и высота окружности равны.
Так что давайте экземпляр овальный следующим образом.
GOval.
Мы будем называть его круг, однако.
И, что собирается получить newGOval.
И мы собираемся указать, что это начнется в верхнем левом
угол, координаты которого от 0 запятая 0.
И ширина этой глобальной будут 50 на 50 -
другими словами, круг.
>> Теперь у нас есть окно, у нас есть круг.
Но мы еще не добавил, что круг к окну.
Так что мы должны сделать это явно.
Добавить окна, круг.
Таким образом, добавив последнюю к первому.
>> Теперь давайте сделаем что-нибудь навсегда.
Давайте сядем в бесконечный цикл, прослушивания событий мыши.
В частности, не нажимает, но движения мыши.
И реагировать на эти движения перемещением круг.
Здесь мы идем.
В то время как верно.
Давайте проверим для события с GEvent, назвав его событием.
Получает getNextEvent.
И давайте конкретно попытаться получить событие мыши или иного типа.
Давайте следующий убедитесь, что событие делает не равен NULL, так что есть
на самом деле что-то реагировать.
>> И давайте очередная проверка, если getEventType, переходя в случае, равна MOUSE_MOVED,
который является специальным постоянным, заявил в Портативный Библиотека Стэнфорд, что
означает, что мышь действительно был перемещен.
>> Тогда давайте перейдем к выполните следующие действия.
Объявите дубль.
И я буду называть это х.
В частности хранения в том, что возвращение Значение GetX мероприятия.
Другими словами, поймите меня х-координату, где
мыши был перемещен в.
Но только, чтобы сделать круг составе точно на вершине моего курсора, позвольте мне теперь
вычесть от ширины Сам круг, разделенный на 2.
Другими словами, давайте вычтем от ее радиуса.
>> Давайте сделаем что-то подобное и получите у.
Y получает получить координаты у об этом событии -
то есть, переехал мыши -
минус GetWidth круга.
И на этот раз мы сделаем полный диаметр, не радиус.
Наконец, давайте установить местоположение Круг быть, что новая х запятая у.
Давайте теперь сохранить, скомпилировать, и запустить эту программу.
>> Сделать курсор.
. / Курсор.
Там в круг в верхнем левом углу.
Теперь, позвольте мне пошевелить курсор, что окно и посмотреть, если защелки круг
на него, как ожидалось.
И действительно это делает.
Обратите внимание, что конкретно, круг является на самом верху моего курсора,
строго по центру, в связи с математикой мы с участием его диаметр и
его радиус.