MIDlet Pascal
Поиск по сайту
Форма входа

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Яндекс.Метрика

Друзья сайта
IT юмор - развлечения
Заработать в интернете - легко!Просто сиди и кликай.
Суббота, 24.02.2018, 15.04.24
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход
Урок №24.5 - Создание стола и подключение - Крестики-нолики

Доброго времени суток!
В этом уроке мы будем доводить до работоспособности процедуры ctable и stable.
И так начнем с ctable (ctable - процедура с помощью которой игрок сможет создать стол и ждать пока к нему кто нибудть подключиться).Но поскольку нам уже будет нужна связь с интернетом, давайте еще добавим функцию котороя будет переходить по ссылке и возвращать результат:


Function GetHTTP(URL:string):string;
var

  conn:http;
begin

  if not OpenHttp(conn, server+URL) then halt; //Пробуем подключиться, если не выходит, закрываем приложение
  SetHttpMethod(conn, GET);  //Передаем данные методом GET
  AddHttpHeader(conn, 'launcher', 'MyMPLauncher'); //Подписываемся
  if SendHttpMessage(conn)<>200 then halt; //Если все прошло успешно
  GetHTTP:=GetHttpResponse(conn);  //возвращаем результат
  CloseHttp(conn);  //закрываем соединение
end;


Если Вы внимательно читали содержимое функции, вы могли заметить что она использует константу/переменну server, это сделано для удобства, что при вызове функции не писать полный URL, теперь нам нужно добавить эту константу в код, у меня это сделано так:


const server='http://127.0.0.1/tictactoe/'


Перед тем как начать писать процедуру ctable, добавим переменне


id,s,name2:string;
gamer,i:integer;


id - хранит id стола
s - переменная временного хранения строки
name2 - ник противника
gamer - на какой стороне играет( 1 - играет крестиками(в случае, если владелец стола), 2 - играет ноликами)
i - счетчик
Теперь как должна выглядеть процедура ctable:


Procedure ctable;
begin
  repeat
//вводим в цикл
    id:=GetHTTP('ctable.php?name='+name); //Создаем стол и подключаемся
    if id='' then break; //если мы не получили id стола, значит произошла ошибка, и выходим в меню
    s:=GetHTTP('wait.php?id='+id); //Получаем состояние стола
    i:=0; //обнуляем счетчик
    while (s='NOT') and (i<60) do //ждем 60 секунд, или пока кто-то подключится
      begin
        delay(1000); //Обновляемся каждую секунду
        s:=GetHTTP('wait.php?id='+id); //получаем состояние стола
        i:=i+1; //считаем время
      end;
    if
s='NOT' then break; //если истекло время, переходим в меню
    name2:=GetHTTP('getname.php?id='+id); //получаем ник опонента
    gamer:=1; //мы играем за крестики
    game; //игра
    break; //выход в меню
  until false;  //бесконечный цикл
end;


И так Вы можете заметить что я запустил бесконечный цикл, который выполниься в любом случае только один, раз.Это сделано для того что бы можно было в любом месте выйти в меню не доходя до следующего шага подготовки.Теперь stable который отвечает за подключение к одному из свободных столов:

Procedure stable;
begin
  repeat
//цикл
    id:=GetHTTP('rtable.php'); //Полуаем свободный стол
    name2:=GetHTTP('connect.php?id='+id+'&name='+name);//Подключаемся,
    if name2='' then break; //B случае неудачи прекращаем подальшее выполнение процедуры
    gamer:=2; //играем за нолики
    game; //запускаем игру
    break; //после игры завершаем работу цикла и переходим в меню
  until false;
end;  

Теперь пока  что добаим процедуру-пустышку game:

Procedure game;
begin

end;

В следующем уроке, мы доделаем игру до конца, и сможем попробовать поиграть.

Если вы нашли ошибки/очепятки в тексте то сообщите о них на форуме
А также можете заказать программу/игру на этой странице

www.parkflyer.ru - радиоуправляемые модели, радиоуправляемые модели самолетов, магазин радиоуправляемых моделей
Роспись стен, скульптуры на заказ
Wladymyr © 2012-2018
Создать бесплатный сайт с uCoz