@samsungovetch

PascalABC — Простая рисовалка на клавишах, вопросы?

Здравствуйте
Есть задание сделать простую рисовалку на клавишах.
Вопрос такой: при нажатии на кнопки происходит задержка, т.е. - нажимаю "вправо", "вправо", "вправо","вниз","вниз", а рисунок идёт "вправо", "вправо","вправо","вправо","вниз". Как исправить?
И ещё вопрос - как сделать видимый курсор, не оставляющий за собой след в виде рисунка? Заранее спасибо
uses graphabc,crt;

var x0,y0:integer;
    c:char;

const WH = 600;
      WW = 600;

begin
  SetBrushColor(clBlack);
  SetPenStyle(psSolid);
  x0:=0;
  y0:=0;
  while (1=1) do
    begin
      c:=readkey;
      case c of
      #75: begin  //left
             x0:=x0+10;
             rectangle(x0,y0,x0-10,y0+10);
           end;
      #77: begin  //right
             x0:=x0-10;
             rectangle(x0,y0,x0+10,y0-10);
           end;
      #72: begin  //up
             y0:=y0-10;
             rectangle(x0,y0,x0-10,y0+10);
           end;
      #80: begin  //down
             y0:=y0+10;
             rectangle(x0,y0,x0+10,y0-10);
           end;
      end;

    end;
end.
  • Вопрос задан
  • 236 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
1)
при нажатии на кнопки происходит задержка, т.е. - нажимаю "вправо", "вправо", "вправо","вниз","вниз", а рисунок идёт "вправо", "вправо","вправо","вправо","вниз". Как исправить?

Все дело в использовании бесконечного цикла while.
Такой стиль программирования характерен для микроконтроллеров.
В высокоуровневых языках пользуются обработчиками событий, в вашем случае нужно добавить обработчик нажатия клавиши и уже в нем расписать действие на событие, а не ждать пока это событие наступит.
2) То полотно, по которому вы рисуете, должно поддерживать многослойность. Рисунок на одном слое, курсор - на другом. Иначе никак.
PS: С PascalABC не знаком.
Решение расписано на общих концепциях любого языка программирования.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы