Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Disik
1 / 1 / 0
Регистрация: 28.09.2013
Сообщений: 10
#1

Нужно перевести код с Pascal ABC на Turbo Pascal - рисование работающей мельницы

02.10.2014, 17:45. Просмотров 908. Ответов 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
uses graphABC,crt;
type point=record
           x,y:integer;
           end;
//отрисовка лопастей в виде замкнутого полигона
//параметры: центральная точка, радиус, цвет, текущий угол поворота
procedure Lop(xc,yc,r,c:integer;u0:real);
var p:array[1..13] of point;
    i:integer;
    u,du:real;
begin
u:=pi/4;du:=u/4;//первая лопасть по 45 гр., ввер и вниз на 45/4 гр.
for i:=1 to 4 do
 begin
  p[3*i-2].x:=xc; p[3*i-2].y:=yc;//первые точки в центре
  p[3*i-1].x:=xc+round(r*cos(u0+u-du));
  p[3*i-1].y:=yc-round(r*sin(u0+u-du));
  p[3*i].x:=xc+round(r*cos(u0+u+du));
  p[3*i].y:=yc-round(r*sin(u0+u+du));
  u:=u+pi/2;//лопасти через 90 градусов
 end;
p[13].x:=p[1].x; p[13].y:=p[1].y; //замкнем
setpencolor(c);
polygon(p,13); //рисуем заданным цветом
end;
//помещение мельницы, все размеры от радиуса
procedure Meln(xc,yc,r,c:integer);
var p:array[1..5] of point;
    i:integer;
begin
p[1].x:=xc-r div 3;p[1].y:=yc-r div 10;
p[2].x:=xc+r div 3;p[2].y:=yc-r div 10;
p[3].x:=xc+2*r div 2;p[3].y:=yc+2*r;
p[4].x:=xc-2*r div 2;p[4].y:=yc+2*r;
p[5].x:=p[1].x;p[5].y:=p[1].y;
setpencolor(c);
polygon(p,5);
end;
var x,y,r:integer;
    u:real;
begin
r:=150; //зададим радиус
SetWindowSize(3*r,7*r div 2); //задалим подходящие размеры окна
x:=windowwidth div 2; y:=r+10;//центральная точка лопастей
hidecursor;//спрячем курсор
u:=0; //в цикле перерисовываем с поворотом лопастей
repeat
Meln(x,y,r,clRed);
Lop(x,y,r,clBlack,u);
delay(100);
Meln(x,y,r,clWhite);
Lop(x,y,r,clWhite,u);
u:=u+pi/16;
until keypressed; //пока не нажата клавиша
end.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2014, 17:45
Ответы с готовыми решениями:

Список слов распечатать в алфавитном порядке. В Turbo Pascal или Pascal ABC
Дана непустая последовательность слов, в каждом из которых содержится от 1 до 6...

Перевести код из C++ в Turbo Pascal
#include "stdafx.h" #include<stdio.h> #include<conio.h> #include<Windows.h>...

Turbo Pascal, Pascal ABC, Free Pascal, PascalABC.NET - в чем разница?
Всем привет, решил изучать Паскаль, но на форуме увидел 4 его версии - Turbo...

Различия трансляторов Pascal ABC.Net и Turbo/Borland Pascal
Пожалуйста, объясните различия между компиляторами Pascal ABC.Net и...

Чем отличаются Turbo Pascal и Pascal ABC?
Чем отличаются турбо паскаль и abc? Просто у меня windows7 последняя теперь...

4
Puporev
Модератор
54217 / 41850 / 28922
Регистрация: 18.05.2008
Сообщений: 98,516
02.10.2014, 18:13 #2
Лучший ответ Сообщение было отмечено Disik как решение

Решение

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 graph,crt;
type point=record
           x,y:integer;
           end;
procedure Lop(xc,yc,r,c:integer;u0:real);
var p:array[1..13] of point;
    i:integer;
    u,du:real;
begin
u:=pi/4;du:=u/4;
for i:=1 to 4 do
 begin
  p[3*i-2].x:=xc; p[3*i-2].y:=yc;
  p[3*i-1].x:=xc+round(r*cos(u0+u-du));
  p[3*i-1].y:=yc-round(r*sin(u0+u-du));
  p[3*i].x:=xc+round(r*cos(u0+u+du));
  p[3*i].y:=yc-round(r*sin(u0+u+du));
  u:=u+pi/2;
 end;
p[13]:=p[1];
setcolor(c);
drawpoly(13,p);
{почему-то полигон не рисует одну линию,
в АВС все рисует, поэтому добавим}
line(p[4].x,p[4].y,p[5].x,p[5].y);
end;
 
procedure Meln(xc,yc,r,c:integer);
var p:array[1..5] of point;
    i:integer;
begin
p[1].x:=xc-r div 3;p[1].y:=yc-r div 10;
p[2].x:=xc+r div 3;p[2].y:=yc-r div 10;
p[3].x:=xc+2*r div 2;p[3].y:=yc+2*r;
p[4].x:=xc-2*r div 2;p[4].y:=yc+2*r;
p[5].x:=p[1].x;p[5].y:=p[1].y;
setcolor(c);
drawpoly(5,p);
end;
var x,y,r:integer;
    u:real;
begin
initgraph(x,y,'');
r:=150;
x:=getmaxX div 2;
y:=r+10;
u:=0;
repeat
Meln(x,y,r,12);
Lop(x,y,r,15,u);
delay(100);
Meln(x,y,r,0);
Lop(x,y,r,0,u);
u:=u+pi/16;
until keypressed;
end.
2
Disik
1 / 1 / 0
Регистрация: 28.09.2013
Сообщений: 10
02.10.2014, 18:36  [ТС] #3
Огромное спасибо!!!!
0
Puporev
Модератор
54217 / 41850 / 28922
Регистрация: 18.05.2008
Сообщений: 98,516
02.10.2014, 18:44 #4
Так это мой код и я уже переводил его с Турбо в АВС...
0
Disik
1 / 1 / 0
Регистрация: 28.09.2013
Сообщений: 10
02.10.2014, 22:35  [ТС] #5
мир тесен)
0
02.10.2014, 22:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2014, 22:35

Нужно перевести код из с++ в pascal
#include <iostream> #include <ctime> #include <cmath> using std::cout;...

Нужно перевести код из Java в Pascal:
Нужно перевести код из Java в Pascal: Import java.util.*; class Main {public...

Переобразовать pascal abc в turbo
Привет всем, помогите перевести текст из Pascal ABC в Turbo-Pascal. В ABC...


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

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

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