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

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

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

Восстановить пароль
Повторная активизация e-mail

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

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

На экране должны появлять прямоугольники, которые двигаются друг за другом слева на право по однолий линии-вдоль экрана!
tanek вне форума Ответить с цитированием
Старый 02.05.2009, 13:52   #12
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот вам пример. Квадрат, который движется по горизонтали.
Код:
uses crt,graph;

const a = 70;
var
d,m : smallint; // для TP 7 изменить тип на integer
W : integer;
x,y : integer;
mas : array[1..4] of PointType;

begin
clrscr;
initgraph(d,m,'');
W := getmaxx;
x := -a;
y := 40;

while true do
 begin
 if keypressed then
  if readkey = #27 then break;
 mas[1].x := x;
 mas[1].y := y;
 mas[2].x := x+a;
 mas[2].y := y;
 mas[3].x := x+a;
 mas[3].y := y+a;
 mas[4].x := x;
 mas[4].y := y+a;

 SetColor(15);
 SetFillStyle(1,15);
 FillPoly(4,mas);

 delay(15);
 SetColor(0);
 SetFillStyle(1,0);
 FillPoly(4,mas);
 inc(x);
 if x>W then x := -a;
 end;

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

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

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

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

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 02.05.2009, 14:42   #15
Last
В прострации
Форумчанин
 
Регистрация: 13.01.2009
Сообщений: 239
По умолчанию

Вам нужна полоса прямоугольников? Сделайте один длинный прямоугольник, а внутри него пусть двигаются вертикальные линии - так можно создать эффект движения прямоугольников.
Пол-жизни сидючи, в монитор глядючи...
Last вне форума Ответить с цитированием
Старый 02.05.2009, 15:41   #16
tanek
Форумчанин
 
Регистрация: 07.03.2009
Сообщений: 209
По умолчанию

Код:

uses crt,graph;

const a = 70;
const b = 100;
var
d,m : smallint; // для TP 7 изменить тип на integer
W : integer;
x,y : integer;
mas : array[1..4] of PointType;
i:integer;

procedure ASD ( x,y:integer);
begin
x:= 40;
y:=400;

 mas[1].x := x;
 mas[1].y := y;
 mas[2].x := x+b;
 mas[2].y := y;
 mas[3].x := x+b;
 mas[3].y := y+a;
 mas[4].x := x;
 mas[4].y := y+a;

end;
begin
initgraph(d,m,'');
W := getmaxx;

while true do
 begin
 if keypressed then
  if readkey = #27 then break;

 ASD (x,y);
 SetColor(15);
 SetFillStyle(1,15);
 FillPoly(4,mas);

 delay(10);
 SetColor(0);
 SetFillStyle(1,0);
 FillPoly(4,mas);
 inc(x);
 if x>W then x := -a;
 end;


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

tanek, лучше объявите структуру "квадрат" (или "прямоугольник"). В ней храните координаты квадрата. И создайте массив структур.
И тогда добавится еще один цикл, который будет обходить массив.


Ну вот, собственно:
Код:
uses crt,graph;
const a = 30;
y = 40;
count = 2;
shag = 100;

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

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

begin
clrscr;
initgraph(d,m,'');
W := getmaxx;
for i:=1 to count do
 begin
 Z[i].x := -a-shag*(i-1);
 end;

while true do
 begin
 if keypressed then
  if readkey = #27 then break;
 //cleardevice;
for i:=count downto 1 do
 begin
 Z[i].mas[1].x := Z[i].x;
 Z[i].mas[1].y := y;
 Z[i].mas[2].x := Z[i].x+a;
 Z[i].mas[2].y := y;
 Z[i].mas[3].x := Z[i].x+a;
 Z[i].mas[3].y := y+a;
 Z[i].mas[4].x := Z[i].x;
 Z[i].mas[4].y := y+a;

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

 delay(30);
 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;

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

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

я вот пытаюсь разделить на прроцедуры...но что то не получается передать параметры, не поможите????
Код:
Program task4;

uses crt,graph;

procedure pramougolnik();


const a=15;
const b=25;
y=300;
type
kvadr = record
x : integer;
mas : array[1..4] of PointType;
end;

var
x:integer;
d,m:integer;
Z: array [1..4] of PointType;

begin
 initgraph(d,m,'');
 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 risovanie();
const
count = 10;
shag = 100;

var
W : integer;
i : integer;

begin
clrscr;
initgraph(d,m,'');
W := getmaxx;
for i:=1 to count do
 begin
 Z[i].x := -a-shag*(i-1);
 end;

while true do
 begin
 if keypressed then
  if readkey = #27 then break;
for i:=count downto 1 do
 begin
 pram();
 SetColor(15);
 SetFillStyle(1,15);
 FillPoly(4,Z[i].mas);

 delay(2);
 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;

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

Цитата:
я вот пытаюсь разделить на прроцедуры...но что то не получается передать параметры, не поможите????
Что именно вы хотите поместить в процедуру?
То, что вы оставили в основной программе, есть неотъемлемая часть самого процесса вывода.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

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

Преподаватель сказал, что программа должна бфть одормлена с фукнциями и процедурами...Как он сказал должн быть ввод, вывод , обработка....
tanek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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