begin d:=detect; initgraph(d,r,''); px1:=(GetMaxX div 5)*3; py1:=(GetMaxY div 5)*3; px2:=px1*4; py2:=px1*4; pcolor:=3
SetGraph.show(px1,py1,px2,py2,pcolor); repeat begin if keypressed then begin case readkey of 77: move(1,0,1,0); 75: move(-1,0,-1,0); 80: move(0,1,0,1); 72: move(0,-1,0,-1); end end end until readkey=#27; closegraph; end.
Почему в выделенной строчке неверная ссылка на процедуру? как сделать верно?
volvo
28.11.2004 18:54
Skrip
Цитата
Почему в выделенной строчке неверная ссылка на процедуру?
А потому, что ты пытаешься вызвать процедуру, являющуюся методом объекта, без указания экземпляра объекта... Я бы сделал так:
Var sg: SetGraph; begin d:=detect; initgraph(d,r,''); px1:=(GetMaxX div 5)*3; py1:=(GetMaxY div 5)*3; px2:=px1*4; py2:=px1*4; pcolor:=3
sg.show(px1,py1,px2,py2,pcolor); repeat begin if keypressed then begin case readkey of 77: move(sg, 1,0,1,0); 75: move(sg, -1,0,-1,0); 80: move(sg, 0,1,0,1); 72: move(sg, 0,-1,0,-1); end end end until readkey=#27; closegraph; end.
Или сделал бы Move методом SetGraph...
Skrip
28.11.2004 19:03
volvo, спасибо.
volvo
28.11.2004 19:06
Не за что... А что делаешь, если не секрет? Может быть есть более красивое решение ...
Skrip
28.11.2004 19:24
Ни чего особенного. Прямоугольник должен перемещаться вверх-вниз, вправо-влево(в соответствии с нажатой клавишей). Програмка то простая (уже седня делал), но с помощью ООП что-то не получается.
volvo, подскажи теперь почему, кроме черного экрана я ничего не вижу.
Skrip
28.11.2004 19:33
Всё, разобрался! Я там с координатами намудрил.
volvo
28.11.2004 19:41
Посмотри вот это тоже ...
Skrip
28.11.2004 19:42
volvo, еще раз спасибо ( и не надо отмахиваться :D ), часа полтора думал что такое :D , а все оказалось так легко.
Skrip
28.11.2004 19:49
Цитата
Посмотри вот это тоже ...
Я так сразу начал делать, но как обычно у ламеров бывает, сделал что-то не так. Пришлось искать другой путь.
Все очень просто... Переменные xst, yst, xfn, yfn у меня описаны в объекте, а в процедуру Move передаются только смещения... Так для того, чтобы переместить объект, нужно к старым координатам добавить смещение - что и делается с помощью Inc...
Skrip
28.11.2004 20:30
volvo, ага, понятно, прсто я не знал доконца все свойства Inc. Это ведь тоже самое что к примеру xst:=xst+pxst
Вот рабочий (в отличии от самого первого) код программки. Есть ли еще способ передвигать квадратик так, чтобы рисунок за квадратиком не стирался. З.Ы. Имеется ввиди такой способ, который не вычерчивает рисунок за квадратиком каждый раз при перемещении квадратика. :D
begin d:=detect; initgraph(d,r,''); px1:=(GetMaxX div 2)-30; py1:=(GetMaxY div 2)-30; px2:=(GetMaxX div 2)+30; py2:=(GetMaxY div 2)+30; pcolor:=3;
move(0,0,0,0); repeat begin if keypressed then begin case readkey of #77: move(1,0,1,0); #75: move(-1,0,-1,0); #80: move(0,1,0,1); #72: move(0,-1,0,-1); end end end until readkey=#27; closegraph; end.
volvo
29.11.2004 20:02
Skrip
Цитата
Все исходники должны помещаться в теги [ CODE] [ /CODE]
Будь внимательнее...
volvo
29.11.2004 20:13
Я присоединил файл, посмотри его...
Skrip
29.11.2004 20:38
volvo там же выделена та часть кода на которую тадо обратить внимание, а она осталась на своем месте. "Рисунок"(выделенный код) не должен каждый раз перечерчиваться, (вызывая прцедуру Move). Он должен начертиться один раз (не в процедуре Мове)и усё, про него желательно забыть
volvo
29.11.2004 20:49
Skrip Ну так вынеси ее за пределы Move Вот так?
Skrip
29.11.2004 21:03
volvo, дааа... смешно... . Глупость сказал... сначало надо было разобраться с setwritemode, а потом... Короче поспешишь, людей насмешишь.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.