Интернет магазин музыки, mp3 почтой, заказать mp3 диски

баннер интернет-магазина ножей nifovka.ru

RSS - RSS,
Карта сайта

Rambler's Top100

Написать на e-mail © 2007-2012 г.

canon powershot sx120 is отзывы



Теги страницы:

Первое, что нужно сделать, - это создать интерфейс DirectPlay COM объекта. Интерфейс, который вам нужно использовать, зависит от типа топологии, который вы выбрали для своей игры - прямая или клиент-сервер. Примеры программы этой книги используют прямую топологию, так что они используют интерфейс IDirectPlaySPcer. Начиная с этого места, я буду рассказывать все только относительно этого интерфейса. Несмотря на это, все, кроме процесса соединения, достаточно легко преобразовывается - все три интерфейса имеют примерно одинаковый набор методов.

Выбор услуг (service provider). После того как вы создали соответствующий вашей сетевой топологии интерфейс DirectPlay, вам нужно выбрать поставщика услуг. DirectPlay может работать с различными каналами связи - TCP/IP, модемы и последовательные подключения. Каждый канал связи имеет своего поставщика услуг. Вам необходимо будет получить список поставщиков услуг из DirectPlay и после предоставить игроку выбор щика услуг из этого списка. Вы можете получить список доступных поставщиков услуг, вызвав метод выбранного вами интерфейса DirectPlay.

Создание игры. Вы получили список доступных поставщиков услуг, показали его игроку и узнали его выбор. В случае прямого соединения следующим шагом будет спросить игрока, хочет ли он создать игру или присоединиться к уже существующей. Вы можете определить, какие игры уже существуют, вызвав метод RnumHosts интерфейса 1 DirectPlay 8Реег. На выходе вы получите список доступных хостов - компьютеров, на которых запущена ваша игра. Вы, наверное, удивлены, откуда знает, запущена ли на компьютере ваша игра. Он знает благодаря возможностям GUID. Каждое приложение DirectPlay имеет свой собственный GUID, и внутри DirectPlay этот GUID - это имя вашей игры. Когда вы выбываете EnumHosts, вы можете себе представить, что DirectPlay передает всем компьютерам в вашем локальном мире просьбу: «Если у вас запущена игра с этим GUID в режиме ожидания соединения, пожалуйста, назовите себя». После этого DirectPlay собирает все ответы и передает их вашему коду. Считайте, что каждый хост, приславший GUID, который его идентифицирует, говорит: «Привет, это хост GUID, и я являюсь хостом той игры, которая вас интересует».

Вы, в свою очередь, выводите этот список пользователю, который выбирает хост. После этого вы передаете GUID выбранного хоста DirectPlay путем вызова метода Connect интерфейса IDireclPlaySPeer и ждете, пока DirectPlay не сообщит вам об успехе или неудаче. Если все успешно, то вы подсоединились и можете начать отсылать и принимать сообщения! Если ваш пользователь будет создавать хост для новой игры, вместо того чтобы подсоединяться к уже существующей, то все проще. Все, что вам нужно сделать, - это вызвать метод Host интерфейса IPirec

Получение сообщений. БОЛЬШИНСТВО данных, которые вы будете передавать туда и обратно, в течение стандартной многопользовательской игры будут в вашем собственном формате. Кроме того, существуют стандартные, которые посылает вам DirectPlay и на которые нужно отвечать. Полный список типов сообщений здесь не приводится (его можно найти в документации по DirectPlay), но в табл. можно найти базовый список сообщений, за которыми вам нужно смотреть. Эти четыре сообщения представляют собой самые стандартные сообщения, которые вы, вероятно, увидите в сессии DirectPlay. Это сообщение отправляется вам DirectPlay, когда новый игрок присоединяется к вашей игре. Когда вы получаете это сообщение, вы должны запросить имя игрока и другие данные, вызвав метод GetPeerlnfo интерфейса IDirectPlay8Peer, и использовать эту информацию, чтобы инициализировать данные игрока, относящиеся к игре DPN MSGID DESTROY PLAYER.

DirectPlay отправляет это сообщение вашему коду, когда игрок отсоединяется от вашей игры. Вы должны убедиться, что ваш код больше не ссылается на этого игрока DPN MSGID RECEIVE. DirectPIay отправляет это сообщение вашему когда он получает какие-то данные, относящиеся к игре, от другого игрока. Внутри сообщения располагается указатель на полученные данные; ваша работа состоит в том. чтобы преобразовать эта данные в тот формат, который вы определили, и обработать эти данные DPN MSGID SEND COMPLETE. DirectPlay отправляет это сообщение вашему коду, когда данные, которые вы отправили, на самом деле ушли по проводу. Б DirectPlay отправление данных обычно происходит асинхронно; это значит, что после гого, как вы их поставили на отправку, они отсылаются в фоновом режиме, пока ваша игра делает что-то другое. При инициализации интерфейса iDirectPlaySPeer, одним из параметров, который вы должны обеспечить, является указатель на функцию обратного вызова (callback function), которую будет вызывать DirectPlay при поступлении сообщения. В этом отношении программирование DirectPlay немного похоже на программирование диалоговых окон Windows. Ваша функция обратного вызова получает в качестве аргументов ID сообщения и указатель на буфер сообщений.

Ваша функция обратного вызова должна смотреть на сообщение и что делать. Обычно, это реализуется посредством оператора switch, как показано в следующем коде. Если ваша функция обратного вызова корректно распознает сообщение, то вы должны вернуть SO К. Вы можете возвращать другие значения в ответ на конкретные сообщения, как описано в документации DirectX. Отправление сообщений. Чтобы отправить какие-то данные другому компьютеру в многопользовательской игре, вы должны использовать метод SendTo интерфейса В нем совсем просто разобраться - в качестве аргументов он принимает ID игрока, которому вы хотите отправить данные (или заранее определенную величину DPNID_Al.L__PLAYERS_GROUI: для всех игроков), структуру содержащую указатель на данные и число отправляемых байтов. Также ей требуются некоторые флаги и другие аргументы, которые вы можете использовать, чтобы точнее определить поведение функции. Например, вы можете использовать флаг DPNSBND_GUARANTEED, чтобы заставить DirectPlay гарантировать, что ваши данные получены нужным адресатом.


уборка снега на дорогах ; Оригинальные ford escape запчасти в Вешняках.