Функция vTurnDone()
Функция завершения хода выполняет две различных задачи. Если сейчас ваш ход, она отправляет сообщение о завершении хода другому игроку и ждет получения сообщения. Если сейчас ход другого игрока, функция ждет, пока он не завершит свой ход. Ход выполнения функции показан на рис.14.18.
Рис. 14.18. Ход выполнения функции vTurnDone()
Хотя блок-схема и выглядит запутанной, сам код не слишком сложен. Большая его часть занимается обработкой сообщений от окна. Если ее отбросить, оставшийся код будет выглядеть примерно так:
// Если соединение установлено, проверяем // надо получать или отправлять сообщение о ходе if(g_bConnected) { // Мой ход, отправляю сообщение if(g_bMyTurn) { // Убираем кнопку завершения хода DestroyWindow(hBU_TurnDone); // Отправляем сообщение о завершении хода vSendTurnMessage(); // Ждем получения сообщения vReceiveTurnMessage(); } else { // Ждем получения сообщения } }
Если вы сравните приведенный выше код с тем, который находится в файле main.cpp, то увидите что здесь код значительно короче. Я удалил из него текстовые сообщения, чтобы вам проще было увидеть, что происходит.