Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2012, 17:38   #1
supervova
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 14
По умолчанию Движение окружности (Pascal ABC.NET)

Здравствуйте, пытаюсь заставить окружность двигаться по прямой
uses GraphABC;
var
x,y, i: INTEGER;
begin
x:= 50;
// y:= 200;
repeat
setPenColor(clBlack) ;
circle(x, 200, 30);
setPenColor(clwhite);
circle(x, 200, 30);

x:= x + 1;
until x > 600;

В результате получается полоска из окружностей, дело том, что белый цвет не полностью закрашивает черный и вместо движения ростёт труба. Начал извращаться т.е. прокрашивать белым цветом окружность по несколько раз ))
uses GraphABC;
var
x,y, i: INTEGER;
begin
x:= 50;
// y:= 200;
repeat
setPenColor(clBlack) ;
circle(x, 200, 30);
for i:= 1 to 10 do
begin
setPenColor(clwhite);
circle(x, 200, 30);
end;
x:= x + 1;
until x > 600;

end.

След трубы остаётся, но почти незаметный. Однако вместо движения, что и следовало ожидать - окружность мелькает. Подскажите как правильно кодить движение тел на pascal ABC.NET
supervova вне форума Ответить с цитированием
Старый 21.12.2012, 20:15   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
uses GraphABC;
var
x,y, i: INTEGER;
begin
x:= 30;
y:= windowheight div 2;
lockdrawing;
repeat
clearwindow;
circle(x,y,30);
sleep(50);
x:=x+5;
redraw
until x > windowwidth-30;

end.
puporev вне форума Ответить с цитированием
Старый 21.12.2012, 20:50   #3
supervova
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 14
По умолчанию

puporev
Спасибо, однако, если буду рисовать прямоугольник в окне и двигать несколько тел прямо в нём, получается придется всю картину в цикле рисовать по новой? Если так то это крайне не эффективно.
supervova вне форума Ответить с цитированием
Старый 21.12.2012, 20:55   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
uses GraphABC;
var
x,y, i: INTEGER;
begin
x:= 30;
y:= windowheight div 2;
repeat
setpencolor(clBlack);
circle(x,y,30);
sleep(50);
setpencolor(clWhite);
circle(x,y,30);
x:=x+5;
until x > windowwidth-30;

end.
puporev вне форума Ответить с цитированием
Старый 21.12.2012, 20:58   #5
supervova
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 14
По умолчанию

Именно в этом вся соль, пикселя от черного не закрашиваются белыми, остается след Только чистка экрана помогает
supervova вне форума Ответить с цитированием
Старый 21.12.2012, 21:00   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

С какого это угару не закрашиваются?
puporev вне форума Ответить с цитированием
Старый 21.12.2012, 21:06   #7
supervova
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 14
По умолчанию

Я не понимаю почему(
Шаг на 1 поменял для наглядности

supervova вне форума Ответить с цитированием
Старый 21.12.2012, 21:08   #8
supervova
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 14
По умолчанию

кстать, на 2 компах проверил
supervova вне форума Ответить с цитированием
Старый 21.12.2012, 21:12   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Я в простом АВС запускал, все нормально, в .net ерунда.
Напиши так
Код:
uses GraphABC;
var
x,y: INTEGER;
begin
x:= 30;
y:= windowheight div 2;
repeat
setpenwidth(1);
setpencolor(clBlack);
circle(x,y,30);
sleep(50);
setpenwidth(3);
setpencolor(clWhite);
circle(x,y,30);
x:=x+5;
until x > windowwidth-30;

end.
puporev вне форума Ответить с цитированием
Старый 21.12.2012, 21:16   #10
supervova
Пользователь
 
Регистрация: 21.07.2012
Сообщений: 14
По умолчанию

Хех, оригинально, видно опыт) Я желторотик не догадался))) Спасибо. Дальше для обучения буду использовать чистый ABC.
supervova вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal ABC Net sarkisova_elena Паскаль, Turbo Pascal, PascalABC.NET 2 07.02.2012 00:40
почему не выполняется 3-е движение? Код на Pascal ABC.NET Рафиль Паскаль, Turbo Pascal, PascalABC.NET 1 23.12.2011 13:01
движение языков пламени или костер (огонь) - графика на Pascal ABC Дариiя Помощь студентам 2 19.06.2011 17:55
Pascal ABC.NET BuTaJI Помощь студентам 1 26.04.2011 20:10
Pascal ABC net DiLLe Паскаль, Turbo Pascal, PascalABC.NET 1 08.06.2010 23:20