Помощь - Поиск - Пользователи - Календарь
Полная версия: Движение обьекта мышкой
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Spinne
Загадали мне тут такую задачку, для движения обьекта мышью. Сделать то я ёё сделал, но вот какая проблема - цикл работает слишком медленно, и при быстром движении мыши остаются следы. Если двигать медленно, но всё окей.
Вопрос вот в чём - можно-ли как-то ускорить цикл ? Или переделать его как-то по-другому ?

Код

program lab42;
uses mouse,graph;
var d,m,x,y:integer;
   c,f,e:boolean;
procedure nlo(x,y:integer);
begin
fillellipse(x,y,50,20);
Ellipse (x,y-4,190,357,50,20);
Line (x+10,y-12,x+20,y-40);
Line (x-10,y-12,x-20,y-40);
Circle (x+10,y-12,2);
Circle (x-10,y-12,2);
line(x-10,y+20,x-20,y+40);
line(x+10,y+20,x+20,y+40);
line(x-25,y+40,x-15,y+40);
line(x+15,y+40,x+25,y+40);
end;
begin
d:=0;
initgraph(d,m,'');
getmousexy(x,y,c,f,e);
setxrange(50,580);
setyrangle(40,430);
repeat
setcolor(0);
nlo(x,y);
getmousexy(x,y,c,f,e);
setcolor(7);
nlo(x,y);
until c=true
end.
SKVOZNJAK
Запустить не могу - неизветно происхождение модуля мышки. Посему, придётся тебе ускорять прогу самому smile.gif Можешь попробовать не рисовать картинку заново, а скопировать область экрана, в graph есть для этого getimage putimage. Используемый модуль мышки также может хреново совмещаться с хрюшей.
Spinne
Вот немного изменил код, теперь следов не остаётся, но моргать стало еще круче. И почему-то при разворачивания окна на полный экран русский шрифт отображается иероглифами, а в маленьком окне всё нормально.

Код

program lab42;
uses graph, mouse, crt;
var d,m,x,y:integer;
   c,f,e:boolean;
   g:char;
procedure nlo(x,y:integer);
begin
fillellipse(x,y,50,20);
Ellipse (x,y-4,190,357,50,20);
Line (x+10,y-12,x+20,y-40);
Line (x-10,y-12,x-20,y-40);
Circle (x+10,y-12,2);
Circle (x-10,y-12,2);
line(x-10,y+20,x-20,y+40);
line(x+10,y+20,x+20,y+40);
line(x-25,y+40,x-15,y+40);
line(x+15,y+40,x+25,y+40);
end;
begin
repeat
 TextMode(2);
 writeln('Данная программа выводит на экран НЛО');
 writeln('Управление осуществляется мышкой');
 writeln('Для выхода из программы нажмите левую клавишу мыши');
 writeln('Для продолжения нажмите Enter');
 g:=readkey;
until g=#13;
d:=0;
initgraph(d,m,'');
getmousexy(x,y,c,f,e);
setxrange(50,580);
setyrangle(40,430);
repeat
getmousexy(x,y,c,f,e);
setcolor(7);
nlo(x,y);
SetBkColor(0);
ClearDevice;
until c=true
end.
Spinne
Кстати, совсем забыл - уважаемый ZKVOZNJAK, если есть желание, могу выслать mouse.tpu и mouse.pas.
SKVOZNJAK
Оно у тебя просто обязано моргать smile.gif По другому и быть не должно. Комп изначально работает рывками, а у тебя всё плавно. Соотношение времени отведённое кадру статическому и кадру рисующемуся должно быть в пользу первого. После того как картинка нарисуется - поставь паузу. И спасибо за модуль ;)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.