• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Заставить двигаться по кругу

Хелен

Sparkling
Регистрация
28 Сен 2010
Сообщения
98
Реакции
2
Баллы
0
Заставить двигаться по кругу

чтоб решить проблему с демоном, решаю такую мини программку.
Точка движется по кругу. зелёная точка.
что нужно сделать чтобы вместо точки двигался какой-нить символ? тот же "%". пока удалось засунуть его только в угол программы ((

Код:
uses crt,graph;
var x0,y0,x1,y1,r,gd,gm:integer;
    i:longint;
begin
gd:=detect;
initgraph(gd,gm,'');
x0:=getmaxX div 2;
y0:=getmaxY div 2;
r:=y0-100;
i:=1;
repeat
x1:=x0+round(r*sin(i*pi/180));
y1:=y0-round(r*cos(i*pi/180));
setcolor(green);
outtextXY(x, y, '%)');
circle(x1,y1,1);
delay(1000);
setcolor(0);

circle(x1,y1,1);
i:=i+1;
until keypressed;
end.
 
Вот малость исправленный вариант:
Код:
uses crt,graph;
var x0,y0,x1,y1,[COLOR="#ff0000"]i,[/COLOR]r,gd,gm:integer;
begin
gd:=detect;
initgraph(gd,gm,'');
x0:=getmaxX div 2;
y0:=getmaxY div 2;
r:=y0-100;
[COLOR="#ff0000"]i:=0;[/COLOR]
repeat
x1:=x0+round(r*sin(i*pi/180));
y1:=y0-round(r*cos(i*pi/180));
setcolor(green);
outtextXY([COLOR="Red"]x1, y1,[/COLOR] '%)');
circle(x1,y1,1);
delay([COLOR="Red"]10[/COLOR]);
setcolor(0);
circle(x1,y1,1);
[COLOR="#ff0000"]if i<361 then inc(i) else i:=0;[/COLOR]
until keypressed;
end.
Отличия выделены цветом, но, в принципе, и ваш вариант вполне работоспособен, стоило только указать правильные имена переменных в команде outtextxy() :))
У вас была выставлена слишком большая задержка - секунда, поэтому вы и не видели результата :))
 
не совсем то, что я имела ввиду)
у вас получилась линия в виде круга, а я хотела чтобы двигалась настолько быстро, чтобы только мигал значок "%" по траектории круга, а не вычерчивал его, т.е. чтобы не был видел в каждой точке круга, а например в восьми.
 
не совсем то, что я имела ввиду)
у вас получилась линия в виде круга, а я хотела чтобы двигалась настолько быстро, чтобы только мигал значок "%" по траектории круга, а не вычерчивал его, т.е. чтобы не был видел в каждой точке круга, а например в восьми.
Вот:
Код:
uses crt,graph;
var
 x0,y0,x1,y1,i,r,gd,gm:integer;
begin
 gd:=detect;
 initgraph(gd,gm,'');
 x0:=getmaxX div 2;
 y0:=getmaxY div 2;
 r:=y0-100;
 i:=0;
 repeat
  x1:=x0+round(r*sin(i*pi/180));
  y1:=y0-round(r*cos(i*pi/180));
  SetBkColor(Black);
  If (i mod 45)=0 then
   begin
    setcolor(green);
    outtextXY(x1, y1, '%)');
    delay(100);
    setcolor(black);
    outtextXY(x1, y1, '%)');
   end;
 if i<361 then inc(i) else i:=0;
 until keypressed;
end.
Так?
 
То что надо! спасибо большое, продолжаю трудится над монстрами =)
 
Более конкретно задачи ставьте, а то сначала малопонятно было, что именно вам надо сделать.

Я бы сделал сначала стирание на старом месте, а потом рисование на новом месте, чтобы по выходу из цикла символ на экране оставался.
 
Назад
Сверху