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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2012, 17:23   #1
Ксения С
Новичок
Джуниор
 
Регистрация: 20.05.2012
Сообщений: 1
Печаль рисование резиновой ломаной линии

Рисуется ломаная линия. Фиксирование первых и очередных узлов осуществляется нажатием клавиши ''Enter'',фиксирование последнего узла двойным нажатием клавиши ''Enter''. Для удаления всей ломаной линии необходимо нажать клавишу "escape".

Помогите пожалуйста исправить ошибки в программе и немного ее дописать.
Когда я выбираю пункт меню, информация всплывает поверх,само меню не убирается, видимо где-то нет clrscr, но я упорно не могу найти это место. Еще, когда линия начинает строится, она сначала строится, а потом стирается, когда нажимаешь enter, потом при дальнейшем построении она опять появляется, но нужно, чтобы она сразу была. И у меня не дописана часть с двойным нажатием и удалением.

Код:
program kursovaya_rabota;
uses crt,graph;
const a:array[1..4] of string=('titulnik','o programme','postroenie krivoy','konez');

var i,t,p,d,r:integer; b,s:char; c,x,y,ent:word;
x1,y1:array[1..50] of word;
{-------------------------------------}
procedure contrastnii_cvet(t:integer);
begin
for i:=1 to 4 do
begin
if i=t then textcolor(11)
else
textcolor(10);
gotoxy(30,12+i);
writeln(a[i]);
end;
end;
{-------------------------------------}
procedure titulnii_list;
begin
clrscr;
textcolor(2);
gotoxy(15,5);
write('gosudarstvennoe obrasovatelnoe awtonomnoe uchregdenie wischego professionalnogo obrasovania "UrFU"');
gotoxy(30,6);
write('stroitelnij institut');
gotoxy(30,7);
write('kafedra sistem avtomatisirovannogo stroitelstva');
gotoxy(32,9);
write('kursovaia rabota');
gotoxy(32,10);
write('po informatike');
gotoxy(32,11);
write('postroenie resinovoi krivoj');
gotoxy(30,30);
write('vipolnila studentka Susarova Kseniya');
gotoxy(30,31);
write('gruppa s-110402');
gotoxy(31,50);
write('Ekaterinburg, 2012');
end;
{-------------------------------------}
procedure opisanie;
begin
clrscr;
textcolor(14);
gotoxy(10,4);
write('postroit resinovuy liniy');
end;
{-------------------------------------}
procedure postroenie(x,y,c:word);

begin
setcolor (c);
line(x-5,y,x+5,y);
line(x,y-5,x,y+5);
end;
{===============}
procedure zadacha;
begin

ent:=0;
d:=detect;
initgraph(d,r,'');
cleardevice;
x:=100;
y:=100;
repeat
postroenie(x,y,13);
{ delay(20000);}
if keypressed then
begin
postroenie(x,y,0);
setcolor(0);
line(x1[ent],y1[ent],x,y);

s:=readkey;
if s = chr(0) then
begin
s:=readkey;
case ord (s) of
72:begin
setcolor(13);
y:=y-10;
for i:=1 to ent-1 do
line(x1[i],y1[i],x1[i+1],y1[i+1]);
line(x1[ent],y1[ent],x,y);
end;
80:begin
setcolor(13);
y:=y+10;
for i:=1 to ent-1 do
line(x1[i],y1[i],x1[i+1],y1[i+1]);
line(x1[ent],y1[ent],x,y);
end;
75:begin
setcolor(13);
x:=x-10;
for i:=1 to ent-1 do
line(x1[i],y1[i],x1[i+1],y1[i+1]);
line(x1[ent],y1[ent],x,y);
end;
77:begin
setcolor(13);
x:=x+10;
for i:=1 to ent-1 do
line(x1[i],y1[i],x1[i+1],y1[i+1]);
line(x1[ent],y1[ent],x,y);
end;
                      end;
                 end;

         until s = chr(27);
         closegraph;
         end;
         {==================================}
         begin
         clrscr;
         t:=1;
         repeat
               contrastnii_zvet(t);
               b:=readkey;
               if b=chr(0) then
               begin
                    b:=readkey
                    gotoxy(30,10);
               case ord(b) of
               72:begin
                       t:=t-1;
                       if t=0 then t:=4;
               end;
               80:begin
                       t:t+1;
                       if t=5 then t:=1;
               end;
         else
             begin
                  clrscr;
                  textcolor(12);
                  gotoxy(20,9);
                  writeln(' ne to');
             end;
         end;
      end;
      else
          case ord(b) of
               13:case t of
                       1:titulnii_list;
                       2:opisanie;
                       3:zadacha;
                       4:p:=3;
               end;
          27:p:=3;
      end;
     until p=3;
end.

Последний раз редактировалось Stilet; 20.05.2012 в 18:06.
Ксения С вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Точки на ломаной линии (делфи) Rauko Помощь студентам 2 23.11.2011 16:23
Рисование линии MISHAIL Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 05.06.2011 15:29
рисование линии противоположно курсору fate Общие вопросы Delphi 3 20.05.2011 22:42
Рисование линии Cpluser Общие вопросы .NET 8 17.05.2010 00:43
Рисование линии Cpluser Общие вопросы .NET 4 21.04.2010 00:15