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

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

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

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

Купить рекламу на форуме 85 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2008, 18:12   #1
SpLaT
Новичок
Джуниор
 
Регистрация: 09.05.2008
Сообщений: 1
По умолчанию Задача на Ломанную Линию

Нужна ваше помощь. Цель программы нацелена на рисование ломанных линий. Т.е. пользователь под управление стрелок влево, вправо, вверх и вниз просто напросто рисует ломанные линии. При нажатие клавиши "Enter" линия фиксируется, т.е. создается так называемая точка перегиба. И дальше пользователь продолжает с этого места рисовать в любом направление след линию.

Просьба посмотреть где мои ошибки, ибо уже не знаю в чем дело!

Вот сам скрипт:

Program Litvinov_Kursovaja;
Uses crt,graph;
Const w:array[1..3] of string[99]=('O programme','Narisovat'' grafik','Vuhod');
len=20;
g=len div 5;
Var bac,a,b,c:word;
PT:char;
booster:boolean;
gm,gd:integer;
ct:string;
i,angle,old_angle:word;
d,r,n:integer;

function K(i:word):byte;
begin
if Odd(i) then K:=i mod 4 else K:=K(i div 2)
end;

{-----------------------------------------------------------------------}
{ Risyet na ekrane menu }
{-----------------------------------------------------------------------}

Procedure Menu(c:word);
Begin
ClrScr;
for bac:=1 to 3 do
begin
if bac=c then
TextColor (20)
else
TextColor (3);
GoToXY(28,10+bac);
writeln (w[bac]);
end;
end;

{-----------------------------------------------------------------------}
{ Pynkt 'O programme' }
{-----------------------------------------------------------------------}

Procedure about_programm;
Begin
ClrScr;
TextColor (2);
GoToXY (35,3);
writeln ('O PROGRAMME');
GoToXY(25,11);
TextColor (3);
writeln ('Vipolnil:');
GoToXY(40,11);
TextColor (5);
writeln ('Litvinov M.S.');
GoToXY (25,12);
TextColor (3);
writeln ('Gruppa:');
GoToXY (40,12);
TextColor (4);
writeln ('C-17051');
GoToXY (25,13);
TextColor (3);
writeln ('Prepodavatel'':');
GoToXY (40,13);
TextColor (6);
writeln ('Slyzhenikina N.V.');
GoToXY (10,20);
TextColor (20);
writeln ('Zadanie:');
GoToXY (20,20);
TextColor (10);
writeln ('Programma dolzha narisovat'' lomannyu liniu');
GoToXY (20,21);
TextColor (10);
writeln ('pod ypravleniem kyrsora');
readln;
End;


{-------------------------------------------------------------------------}
{ Peredvizhenie linii po strelkam }
{-------------------------------------------------------------------------}

Procedure Strelki;
Begin
case angle of
0: begin
if old_angle=90 then LINEREL(-g,-g) else LINEREL(g,-g);
LINEREL(0,-(len-2*g))
end;

180: begin
if old_angle=90 then LINEREL(-g,g) else LINEREL(g,g);
LINEREL(0,len-2*g);
end;

90: begin
if old_angle=0 then LINEREL(-g,-g) else LINEREL(-g,g);
LINEREL (-(len-2*g),0)
end;

270: begin
if old_angle=0 then LINEREL(g,-g) else LINEREL(g,g);
LINEREL (len-2*g,0)
end;
end;
End;

{--------------------------------------------------------------------------}
{ Narisovat' Grafik }
{--------------------------------------------------------------------------}

Procedure grafik;
Begin
gd:=detect;
InitGraph(gd,gm,ct);
ClearDevice;
MoveTo(190+a,276);
angle:=270;
LINEREL(len-g,0);
old_angle:=270;
n:=418;
for i:=1 to n-1 do
begin
angle:=(angle+K(i)*90) mod 360;
DELAY(2000);
Strelki(angle,old_angle);
end;
repeat until keypressed;
CloseGraph;
End;



{--------------------------------------------------------------------------}
{ Kod programmu }
{--------------------------------------------------------------------------}

Begin
ClrScr;
booster := False;
b:=1;
c:=1;
menu (c);
repeat
PT:=readkey;
{a:=ord(PT);}

if PT=chr(0) then
begin PT:=readkey;
a:=ord (PT);
Case PT of
chr(72):
if c=1 then
c:=3
else
c:=c-1;
chr(80):
if c=3 then
c:=1
else c:=c+1;
else begin
GoToXY (10,25);
TextColor (12);
writeln ('Ne ta klavisha');
readln;
end;
end;
end
else
begin
case PT of
chr(27):
b:=0;
chr(13):
case c of
1: about_programm;
2: grafik;
else b:=0;
end;
else
begin
GoToXY (25,8);
TextColor (12);
writeln ('Nazhata ne ta klavisha !!!');
readln;
end;
end;
end;
menu(c);
until b=0;
end.
SpLaT вне форума Ответить с цитированием
Старый 09.05.2008, 19:18   #2
Stepler
Форумчанин
 
Аватар для Stepler
 
Регистрация: 03.02.2008
Сообщений: 213
По умолчанию

Твое описание процедуры!
Код:
Procedure Strelki;
Вызов процедуры!
Код:
Strelki(angle,old_angle);
Вопросы будут?
Пишу программы на заказ, контакты под аватаром!
Отзывы тут
Stepler вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 85 тыс рублей в месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как же нарисовать линию на форме? (Вопрос новичка) grey Помощь студентам 11 24.11.2008 10:31
Нарисовать на координатной площади линию a*x+b*y+c=0 НУБ!!! Общие вопросы Delphi 4 13.05.2008 22:48
Нарисовать линию под указанным градусом nikleb Паскаль, Turbo Pascal, PascalABC.NET 7 06.02.2008 15:22
Задача по ТП. GE076 Помощь студентам 11 07.12.2007 19:29
Как в excel создать "винтовую линию"? W@LER Microsoft Office Excel 1 23.03.2007 20:04