Помогите пожалуйста!!!
найдите ошибку в процедуре
procedure strelka;
var c:char; x,y,x1,y1:integer;
begin
x:=55; y:=55; x1:=155; y1:=125;
repeat c:=readkey;
if c=chr(0) then begin
c:=readkey;
if c=chr(72) then begin y:=y-80; y1:=y-80; setcolor (white); bar (x,y,x1,y1); end;
if c=chr(75) then begin x:=x-110; x1:=x-100; setcolor (white); bar (x,y,x1,y1); end;
if c=chr(77) then begin x:=x+110; x1:=x+100;setcolor (white); bar (x,y,x1,y1);end;
if c=chr(80) then begin y:=y+80; y1:=y1+80; setcolor (white); bar (x,y,x1,y1);end; if c=chr(13) then begin setcolor (black); outtextxy (x,y,'ghj'); end; end;
until c=chr(27);
end;

1
тогда должно выглядеть как то так:
begin
readln(c);
if c=chr(72) then begin и дальше все правильно
и да... if c=chr(13). естественно работать не будет. вы поставили черный цвет. на черном фоне...
с readln даже стрелки перестали работать
а enter не работает не из-за цвета
перед тем как нажать enter пользователь нажимает стрелки
и потом текст должен писаться на белом фоне
а даже если и не нарисован белый квадрат enter не работает(я пробовала разными цветами)
в pascal есть такой прикол: при нажатии enter он может засчитать команду как пустую строку... знаете что, поменяйте стрелки на a s d w, а enter на K. для pascal(для всех версий) стрелки и enter не символы, а команды.

Ответы и объяснения

  • Участник Знаний
2014-03-28T15:30:26+04:00
Procedure strelka(x, y:integer;
{var} x1,y1:integer; c:char;) это первое
второе: думаю указать точные значения переменных лучше в основном теле программы.
until c=chr(27) после until никаким переменным уже не присваивается значений, он завершает модуль graph.
и 4: тут скорее логическая ошибка: у вас есть if c=chr(0) и ставя это условие вы ставите следующее: if c=chr(72)(кстати, это можно написать прощу: if c='k' then), то есть у вас должны одновременно выполняться оба условия...
5: c:=readkey; вы строковой переменной присваиваете значение команды? 
впрочем, последние два пункта не ошибки, а наблюдения опытного паскалиста.