Другие языки программирования и технологии

Турбо паскаль пожалуйста укажите ошибки

задача точка на экране нажимаем клавишу W точка двигаеться вверх S вниз A влево D в право вот как я началал uses graph, CRT; VAR device, Mode : Integer; x, y : integer; W : Char; procedure lev; begin device:=0; InitGraph(Device, Mode, 'C:\TP\BGI'); repeat x:=320; setcolor(white); putpixel(x, 240, white); setcolor(black); putpixel(x, 240, black); x:=x-2 until x<3; readLN; closeGraph; End; procedure prav; begin device:=0; InitGraph(Device, Mode, 'C:\TP\BGI'); repeat x:=320; setcolor(white); putpixel(x, 240, white); setcolor(black); putpixel(x, 240, black); x:=x+2 until x>640; readLN; closeGraph; End; procedure niz; begin device:=0; InitGraph(Device, Mode, 'C:\TP\BGI'); repeat y:=240; setcolor(white); putpixel(320, y, white); setcolor(black); putpixel(320, y, black); y:=y+2 until y<480; readLN; closeGraph; End; procedure verh; begin device:=0; InitGraph(Device, Mode, 'C:\TP\BGI'); repeat y:=240; setcolor(white); putpixel(320, y, white); setcolor(black); putpixel(320, y, black); y:=y-2 until y<3; readLN; closeGraph; End; begin If readkey:= 'W' then verh ????что дальше и правильно ли я делаю end. укажите на ошибки у меня все открваеться в текстовом режиме как правильно надо написать такую программу кто правильно напишит таму доллар
1) не закрывай в процедурах вывода перемещения точки графический режим. В начале основного тела программы написал InitGraph(Device, Mode, 'C:\TP\BGI'); последей строчкой - closeGraph; Тгда не будешь в текстовом режиме работать и сможешь двигать точку.

2) делай опрос клавиатуры в цикле: если нажата клавиша W - двигаем точку вверх; если нажата клавиша A - двигаем точку влево; и т. д.... условие выхода из цикла - нажатие какой-то клавиши, ESC, например.

Пока исправь эти ошибки - потом видно будет.
Манучехр Мухаммедов
Манучехр Мухаммедов
1 040
Лучший ответ
Ваша ошибка в том что постоянно реинициализируете графику. Достаточно инициализировать, сделать вечный цикл вроде while(1=1) и по readkey изменять координаты, очищать координаты, и заново рисовать точку.
Сергей Азаров
Сергей Азаров
12 551
Думаю, initgraph() стоит вызвать один (!) раз, в теле основной процедуры -- у Вас это в обработиках нажатия кнопок. Там же, в цикле, нужно организовать отслеживание нажатия WASDX (икс - выход из цикла, но это например) . Переменные координаты стоит сделать глобальными, + переменная насколько, d. Функции-обработчики будут выглядеть примерно так:

putpixel( x, y, black )
x := x + d
putpixel( x, y,white )
MK
Majestik Klass
2 422
жуткая вещь ))) к сожалению, сейчас мы еще не проходим графику в паскале, а сам я не заморачивался над этим )) но в бейсике программа такая у меня получилась всего в строчек 20-25 ))