Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal ABC

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
Zero-cool
5 / 5 / 1
Регистрация: 05.01.2011
Сообщений: 30
#1

Рисование - Pascal ABC

10.01.2011, 21:42. Просмотров 1910. Ответов 6
Метки нет (Все метки)

Вот задача:
Нарисовать квадрат, который в каждый момент своего движения качается одной из сторон к кругу с центром в центре экрана.
никак не могу понять как задать движение по кругу((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2011, 21:42
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Рисование (Pascal ABC):

Рисование=) - Pascal ABC
Помогите пожалуйста дописать код так, что бы ограничивалось поле для рисования "следа" звезды в рамках прямоугольника с координатами...

Рисование кругов - Pascal ABC
В целочисленный массив, размерность (количество элементов) которого задается в программе константой, занесите с помощью датчика случайных...

Рисование радуги - Pascal ABC
Составьте пожалуйста программу, которая рисует радугу (процедура colArc(x,y,R). Спасибо!

Рисование звездочек - Pascal ABC
Помогите, пожалуйста на Паскале ABC) Нарисуйте последовательность из 16 разноцветных заполненных звёзд. Поставьте свою подпись и номер...

Рисование планеты - Pascal ABC
где здесь ошибка не могу найти?можете помочь!? uses GraphABC; var z: integer; x:char; begin write ('выберите планету...

Рисование овалов - Pascal ABC
Помогите переделать под паскаль ABC. Пятый день маюсь одни ошибки, а в понедельник сдавать! Составить программу «Конфетти» из К овалов...

6
Puporev
Модератор
54039 / 41672 / 14753
Регистрация: 18.05.2008
Сообщений: 97,993
11.01.2011, 09:26 #2
Цитата Сообщение от Zero-cool Посмотреть сообщение
качается одной из сторон
Типа пьяный квадрат, или касается?
0
Zero-cool
5 / 5 / 1
Регистрация: 05.01.2011
Сообщений: 30
11.01.2011, 09:34  [ТС] #3
касается(там очепятка=))
0
Puporev
Модератор
54039 / 41672 / 14753
Регистрация: 18.05.2008
Сообщений: 97,993
11.01.2011, 09:41 #4
Немного по Турбо Паскалевски, но работает в АВС.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
uses crt,graphABC;
{процедура вращения точки вокруг центра}
procedure Vrash(a:real;var x,y:integer;const centrx,centry:integer);
var px:integer;
begin
x:=x-centrx;
y:=y-centry;
a:=a*pi/180;
px:=x;
x:=round(x*cos(a)-y*sin(a))+centrx;
y:=round(y*cos(a)+px*sin(a))+centry;
end;
var ch:char;
    tx,ty,ax,ay,bx,by,cx,cy,dx,dy:integer;
    tax,tay,tbx,tby,tcx,tcy,tdx,tdy:integer;
    w,h,r:integer;
    a:real;
begin
textout(50,20,'Ввыход - Esc');
r:=100; {радиус окружности}
w:=80; {сторона квадрата}
tx:=windowwidth div 2;ty:=windowheight div 2; {центр экрана}
{координаты вершин квадрата}
ax:=tx-r;ay:=ty-(w div 2);
bx:=ax-w;by:=ay;
cx:=ax-w; cy:=ay+w;
dx:=ax; dy:=cy;
dx:=ax; dy:=cy;
Setpencolor(clred);
Circle(tx,ty,r-1);{окружность}
a:=0;
repeat
{в цикле меняем координаты вершин, соединяем их линиями}
tax:=ax;tay:=ay;Vrash(a,tax,tay,tx,ty);
tbx:=bx;tby:=by;Vrash(a,tbx,tby,tx,ty);
tcx:=cx;tcy:=cy;Vrash(a,tcx,tcy,tx,ty);
tdx:=dx;tdy:=dy;Vrash(a,tdx,tdy,tx,ty);
setpencolor(clgreen);
moveto(tax,tay);
lineto(tbx,tby);
lineto(tcx,tcy);
lineto(tdx,tdy);
lineto(tax,tay);
{делаем задержку и все стираем(рисуем цветом фона)}
delay(100);
setpencolor(clwhite);
moveto(tax,tay);
lineto(tbx,tby);
lineto(tcx,tcy);
lineto(tdx,tdy);
lineto(tax,tay);
a:=a+1;{увеличиваем угол поворота}
if keypressed then
ch:=readkey;
until ch=#27;
end.
1
Zero-cool
5 / 5 / 1
Регистрация: 05.01.2011
Сообщений: 30
11.01.2011, 14:27  [ТС] #5
Спасибо!
вот подправил под pascalABC
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
uses graphABC;
//процедура вращения точки вокруг центра
procedure Vrash(a:real;var x,y:integer);
var px:integer;
begin
  x:=x-320;
  y:=y-240;
  a:=a*pi/180;
  px:=x;
  x:=round(x*cos(a)-y*sin(a))+320;
  y:=round(y*cos(a)+px*sin(a))+240;
end;
var
    ax,ay,bx,by,cx,cy,dx,dy:integer;
    tax,tay,tbx,tby,tcx,tcy,tdx,tdy:integer;
    w,r,i:integer;
    a:real;
begin
  r:=150; //радиус окружности
  w:=80; //сторона квадрата
  //координаты вершин квадоата
  ax:=320-r;
  ay:=240-(w div 2);
  bx:=ax-w;
  by:=ay;
  cx:=ax-w;
  cy:=ay+w;
  dx:=ax;
  dy:=cy;
  dx:=ax;
  dy:=cy;
  pen.color:=clred;
  Circle(320,240,r-1);//круг
  a:=0;
  lockdrawing;
 repeat
   Window.Clear(clWhite);  
   //в цикле меняем координаты вершин, соединяем их линиями
   tax:=ax;
   tay:=ay;
   Vrash(a,tax,tay);
   tbx:=bx;
   tby:=by;
   Vrash(a,tbx,tby);
   tcx:=cx;
   tcy:=cy;
   Vrash(a,tcx,tcy);
   tdx:=dx;
   tdy:=dy;
   Vrash(a,tdx,tdy);
   moveto(tax,tay);
   lineto(tbx,tby);
   lineto(tcx,tcy);
   lineto(tdx,tdy);
   lineto(tax,tay);
   //делаем задержку и все стираем(рисуем цветом фона)
   sleep(10);
   pen.color:=clblue;
   moveto(tax,tay);
   lineto(tbx,tby);
   lineto(tcx,tcy);
   lineto(tdx,tdy);
   lineto(tax,tay);
   a:=a+1;//увеличиваем угол поворота
   pen.Color:=clred;
   Circle(320,240,r-1);
   redraw;
   inc(i);
  until i=999;
end.
0
Puporev
Модератор
54039 / 41672 / 14753
Регистрация: 18.05.2008
Сообщений: 97,993
11.01.2011, 14:40 #6
А разве такое
pen.color:=clblue;
Window.Clear(clWhite);
работает?
0
Zero-cool
5 / 5 / 1
Регистрация: 05.01.2011
Сообщений: 30
11.01.2011, 21:21  [ТС] #7
вполне, у меня стоит непонятная версия ABC(толи ABC толи ABC.Net сам досих пор не понял) паскаля ,работают оба варианта корректно
0
11.01.2011, 21:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2011, 21:21
Привет! Вот еще темы с ответами:

Рисование графиков. - Pascal ABC
Привет программисты! подскажите пожалуйста, рисование графиков в паскали, как это сделать? елси не тяжело, можно пример или просто...

рисование символами - Pascal ABC
символы должны отделяться пробелами выведите на экран: 1 1 1 2 ...

Цикл, рисование забора - Pascal ABC
Помогите, пожалуйста, нарисовать забор в паскале, с помощью цикла)

Рекурсивное рисование окружности - Pascal ABC
Разработать программу, которая обеспечит рисование окружности в центре экрана, окруженной еще тремя окружностями меньшего диаметра,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru