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

Статистика

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


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

Друзья сайта
IT юмор - развлечения
Заработать в интернете - легко!Просто сиди и кликай.
Воскресенье, 15.07.2018, 20.01.52
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход
Урок №22.2 - Танки - Садись и управляй
Урок №2 - Танки - Танк едет!
Здравствуйте!
В этом уроке мы добавим танк и будем им управлять
Для самого начала, проинициализируем положение танка и добавим эти строки в блок инициализации:

  player.x:=80; //унстанавливаем начальную позицию игрока
  player.y:=290;
  player.way:=1;//начальное направлением игрока

Теперь добавим строку в процедуру paint в которой танк игрока будет отображаться на экране:

  DrawImage(tankp[player.way],player.x,player.y); //Отрисовка игрока

И как Вы догадались, если уже запустить наш мидлет, то мы можем видеть поле на котором стоит наш танк, но им нельзя управлять!

Управление танком сделать сложнее будет, так как танк может и уперется в какой либо объект!И так для начала добавляем код для того что бы считать код нажатой клавиши, и добавим его в главный цикл:

  if not go then key:=GetKeyPressed;//если танк не едет считываем нажатую кнопку

и так давайте разберем немножко...Так как танк у нас будет двигатся определенное время (а точнее 10 пикслей - 10 циклов этого цикла)И для того что бы код считывания клавиши не сработал во время езды нашего такнка, потому что тогда будет хаос в игре, мы следим не едет ли наш танк в этот момент.А как доедет, так сразу ехать дальше или остановится и т.д...Теперь будем делать реакцию на нажатие кнопок управления:

  if key=KE_KEY2 then //если нажата клавиша 2
    begin
      if
player.way<>1 then player.way:=1 else //если направлен танк в другую сторону то поворачиваем его вверх иначе едем
        if player.y>9 then//если есть куда
           if field[(player.x div 10)+1,(player.y div 10)]=0 then go:=true;//если есть куда тогда едем
    end;
  if
key=KE_KEY4 then//аналогично
    begin
      if
player.way<>2 then player.way:=2 else
        if
player.x>9 then
          if
field[(player.x div 10),(player.y div 10)+1]=0 then go:=true
    end;
  if
key=KE_KEY8 then //аналогично
    begin
      if
player.way<>3 then player.way:=3 else
        if
player.y<290 then
           if
field[(player.x div 10)+1,(player.y div 10)+2]=0 then go:=true
    end;
  if
key=KE_KEY6 then //аналогично
    begin
      if player.way<>4 then player.way:=4 else
         if player.x<200 then
           if field[(player.x div 10)+2,(player.y div 10)+1]=0 then go:=true;
    end;

И так в этом коде мы только задаем переменной go значение истина для того что бы указать приложению, то нас танк сейчас находится в движении, но танк не будет двигаться если на его пути будет преграда или там не будет поля...
(если чего не понятно, вопрос можно задать на форуме или в группе [B]контакте)

Теперь добавим что бы наш танк ехал в процессе выполнения цикла:

  if go then //если едем
    begin
      if goi=0 then goi:=10;//если он только начал ехать ставим счетчик в 10
      key:=0;//нажатие на клавишу по любому ноль(даже если, что-то нажали)
      if player.way=1 then player.y:=player.y-1; // если вверх то едем вверх
      if player.way=2 then player.x:=player.x-1;
      if player.way=3 then player.y:=player.y+1;
      if player.way=4 then player.x:=player.x+1;
      goi:=goi-1;//убавляем значение счетчика
      if goi=0 then go:=false;//если счетчик в нуле тогда перестаем ехать
    end;

Собственно счетчик для того что-бы танк ехал ровно 10 пикселей, а не больше или меньше.А уже в зависимости от направления двигаем танк по х или по у.

На этом урок завершен, в следующем уроке будем учить танк стрельбе!

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

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