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

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

02.10.2014, 17:45. Просмотров 1586. Ответов 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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> void gr(int...

Перевести код pascal abc в Turbopascal
var a,b,c : real; begin Writeln('Значенеи в км/час'); Readln(a); Writeln('Значение м/с');...

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

4
Модератор
62191 / 46495 / 32060
Регистрация: 18.05.2008
Сообщений: 112,404
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
1 / 1 / 0
Регистрация: 28.09.2013
Сообщений: 10
02.10.2014, 18:36  [ТС] 3
Огромное спасибо!!!!
0
Модератор
62191 / 46495 / 32060
Регистрация: 18.05.2008
Сообщений: 112,404
02.10.2014, 18:44 4
Так это мой код и я уже переводил его с Турбо в АВС...
0
1 / 1 / 0
Регистрация: 28.09.2013
Сообщений: 10
02.10.2014, 22:35  [ТС] 5
мир тесен)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2014, 22:35

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

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

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

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

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


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

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

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