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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2009, 01:41   #31
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

Код:
uses crt,graph;
const a = 15;
b = 25;
y = 300;
count = 15;
shag = 70;

type
kvadr = record
x : integer;
mas : array[1..4] of PointType;
end;
{---}

var
Z : array[1..count] of kvadr;

procedure init(var W:integer);
var i : integer;
begin
W := getmaxx;
for i:=1 to count do
 begin
 Z[i].x := -a-shag*(i-1);
 end;
end;

procedure setcoord(i : integer);
begin
Z[i].mas[1].x := Z[i].x;
 Z[i].mas[1].y := y;
 Z[i].mas[2].x := Z[i].x+b;
 Z[i].mas[2].y := y;
 Z[i].mas[3].x := Z[i].x+b;
 Z[i].mas[3].y := y+a;
 Z[i].mas[4].x := Z[i].x;
 Z[i].mas[4].y := y+a;
end;

procedure print(W:integer);
var i : integer;
begin
while true do
 begin
 if keypressed then
  if readkey = #27 then break;
 cleardevice;
for i:=count downto 1 do
 begin
 setcoord(i);
 SetColor(15);
 SetFillStyle(1,15);
 FillPoly(4,Z[i].mas);
 delay(3);
 inc(Z[i].x);
 if Z[i].x>W then Z[i].x := -a;
 end;
 end;
end;

var
d,m: integer;
W:integer;
begin
clrscr;
initgraph(d,m,'');
init(W);
print(W);

closegraph;
end.
вот а как массив передавать?
tanek вне форума Ответить с цитированием
Старый 03.05.2009, 01:43   #32
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
и для чего вообще нужна W?
Это правая граница экрана.
Цитата:
как список квадрат запихнуть в параметл процедуры setcoord???
Ну объявите массив Z в какой-нибудь процедуре. А потом посылайте его куда нужно. Ведь тип kvadr уже объявлен.

Если вы хотите сделать массив Z локальным, то определитесь, где он будет создаваться.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 03.05.2009 в 01:45.
Sazary вне форума Ответить с цитированием
Старый 03.05.2009, 01:47   #33
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

а можно ли сделать это как нибудь без списка?
tanek вне форума Ответить с цитированием
Старый 03.05.2009, 01:50   #34
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
а можно ли сделать это как нибудь без списка?
Как? Отдельно создать несколько экземпляров прямоугольников? Вот это будет настоящий бред.

Вот. Уж не знаю, что вам не нравится. Вы тогда скажите сразу, что должно быть. Сколько ж можно переделывать?
Код:
uses crt,graph;
const a = 15;
b = 25;
y = 40;
count = 10;
shag = 70;

type
kvadr = record
x : integer;
mas : array[1..4] of PointType;
end;
{---}
massiv = array[1..count] of kvadr;

var
d,m : smallint; // для TP 7 изменить тип на integer
{Z : array[1..count] of kvadr;   }

procedure init(var Z : massiv; var W : integer);
var i : integer;
begin
W := getmaxx;
for i:=1 to count do
 begin
 Z[i].x := -a-shag*(i-1);
 end;

end;

procedure setcoord(var Z : massiv; i : integer);
begin
Z[i].mas[1].x := Z[i].x;
 Z[i].mas[1].y := y;
 Z[i].mas[2].x := Z[i].x+b;
 Z[i].mas[2].y := y;
 Z[i].mas[3].x := Z[i].x+b;
 Z[i].mas[3].y := y+a;
 Z[i].mas[4].x := Z[i].x;
 Z[i].mas[4].y := y+a;
end;

procedure print(Z : massiv; W : integer);
var i : integer;
begin
while true do
 begin
 if keypressed then
  if readkey = #27 then break;
 cleardevice;
for i:=count downto 1 do
 begin
 setcoord(Z,i);

 SetColor(15);
 SetFillStyle(1,15);
 FillPoly(4,Z[i].mas);

 delay(3);
 {SetColor(0);
 SetFillStyle(1,0);
 FillPoly(4,Z[i].mas); }
 inc(Z[i].x);
 if Z[i].x>W then Z[i].x := -a;
 end;
 end;
end;

procedure start;
var
Z : massiv;
W : integer;
begin
init(Z,W);
print(Z,W);

end;

begin
clrscr;
initgraph(d,m,'');
start;

closegraph;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.05.2009, 02:12   #35
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

Огромнейщее спасибо!!!!!!!!!!!Вы мне очень очень сильно помогли!!!!!!!!Я у вас завтра еще спрошу пару вопросиков по поводу реализации....

Sazary, не подскажите за что отвечают данные строки программы:
Код:
while true do
 begin
 if keypressed then
  if readkey = #27 then break;
 cleardevice;
и
Код:
begin
W := getmaxx;
for i:=1 to count do
 begin
 Z[i].x := -a-shag*(i-1);
 end;
и
Код:
FillPoly(4,Z[i].mas);
?????????

Последний раз редактировалось Stilet; 12.05.2009 в 11:04.
tanek вне форума Ответить с цитированием
Старый 04.05.2009, 21:57   #36
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
while true do // бесконечный цикл
 begin
 if keypressed then   // если нажата клавиша
  if readkey = #27 then break;  // если нажатая клавиша - Esc, то выходим из цикла
 cleardevice; // очищаем экран
Код:
begin
W := getmaxx;  // получаем правую границу экрана
for i:=1 to count do   // перебираем прямоугольники
 begin
 Z[i].x := -a-shag*(i-1);   // каждому задаем начальное смещение
 end;
Код:
FillPoly(4,Z[i].mas); // рисует и закрашивает многоугольник из 4-х вершин
// координаты вершин заданы в массиве Z[i]
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.05.2009, 22:02   #37
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

а почему мы прописываем именно
Z[i].mas[1].x := Z[i].x;???
tanek вне форума Ответить с цитированием
Старый 04.05.2009, 22:11   #38
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
а почему мы прописываем именно
Z[i].mas[1].x := Z[i].x;???
В mas хранятся координаты прямоугольника.
В x хранится координата по иксу.
То есть x задает смещение относительно левой границы.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.05.2009, 22:15   #39
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

а почему если я нажимаю Esc или любую другую клавижу, программа продолжает работать?
tanek вне форума Ответить с цитированием
Старый 04.05.2009, 22:19   #40
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
а почему если я нажимаю Esc или любую другую клавижу, программа продолжает работать?
Не знаю. Я пишу под Free Pascal. Там все работает.
Вроде, должно и тут. Но не уверен.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в С++ K[Lanc]N Помощь студентам 2 29.07.2010 11:25
графика vovan665 Паскаль, Turbo Pascal, PascalABC.NET 11 11.10.2008 15:09
Графика Exact Паскаль, Turbo Pascal, PascalABC.NET 3 14.03.2008 18:37
графика ben95 Общие вопросы Delphi 3 06.02.2008 22:24