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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2008, 09:37   #1
ReM
Пользователь
 
Регистрация: 22.09.2008
Сообщений: 27
По умолчанию SOS_Графика!

Господа, мне нужно решить следующее задание:
написать программу, которая выводит на экран изображение работающего светофора (смена цветов управляется пользователем).
т.к. раньше я с паскалем не работал решил сделать небольшой набросок и вот что что у меня получилось:

Program Graphic;
uses graph, crt;
var driver, mode, Err : integer;
begin
driver:=detect;
InitGraph (driver, mode,'C:\Bp\Bgi');
Err:= GraphResult;
if Err<>grOK then writeln ('Ошибка при инициализации графического режима')
else begin
SetColor (63);
rectangle (125,125,175,265);
setcolor (3);
circle (150,150,20);
readkey;
circle (150,195,20);
readkey;
circle (150,240,20);
end;
readkey;
CloseGraph;
end.


1. После компеляции программы на домашней машине светофор почему то о_О зависал после появления первого круга. Я решил попробывать откомпелировать на рабочей машине, и на ней все прошло нормально.
С чем связанна данная ситуация и как ее решить?

2. Если вас не затруднит сделайте набросок, как лутше реализовать смену цветов, ну или на словах подсабите.
ReM вне форума Ответить с цитированием
Старый 10.10.2008, 12:39   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

По первому вопросу трудно что-то сказать. Если дело не в компьютере, то попробуйте обновить Паскаль или модули.
По второму вопросу вот набросал, в принципе работает.
Код:
Program Graphic;
uses graph, crt;
var driver, mode, Err : integer; c:char;
begin
driver:=detect;
InitGraph (driver, mode,'C:\Bp\Bgi');
Err:= GraphResult;
if Err<>grOK then writeln ('Ошибка при инициализации графического режима');
SetColor (15);
Setlinestyle(0,0,3); //толстая линия
rectangle (125,125,175,265);
Setlinestyle(0,0,1);//тонкая линия
setcolor (4); //красный
circle (150,150,20);
setcolor (14); //желтый
circle (150,195,20);
setcolor (2);  //зеленый
circle (150,240,20);
repeat
c:=readkey;
case c of
'r','R':begin //клавиша r включает красный
         Setfillstyle(1,0); //"выключаем" желтый, сплошная заливка черным
         FillEllipse(150,195,20,20);
         setcolor (14);  //восстанавливаем окружность
         circle (150,195,20);
         Setfillstyle(1,0); //выключаем зеленый
         FillEllipse(150,240,20,20);
         setcolor (2);
         circle (150,240,20);
         Setcolor(0); //рисуем границу красного
         Circle(150,150,20);
         Setfillstyle(1,4);
         FillEllipse(150,150,20,20);//рисуем красный
       end;
'y','Y':begin  //клавиша y включает желтый
         Setfillstyle(1,0);
         FillEllipse(150,150,20,20);
         setcolor (4);
         circle (150,150,20);
         Setfillstyle(1,0);
         FillEllipse(150,240,20,20);
         setcolor (2);
         circle (150,240,20);
         Setfillstyle(1,14);
         FillEllipse(150,195,20,20);
         setcolor (14);
         circle (150,195,20);
       end;
'g','G':begin  клавиша g включает зеленый
         Setfillstyle(1,0);
         FillEllipse(150,150,20,20);
         setcolor (4);
         circle (150,150,20);
         Setfillstyle(1,0);
         FillEllipse(150,195,20,20);
         setcolor (14);
         circle (150,195,20);
         Setfillstyle(1,2);
         FillEllipse(150,240,20,20);
         setcolor (2);
         circle (150,240,20);
        end;
end;
until c=#27; //клавиша Esc - выход
CloseGraph;
end.
puporev вне форума Ответить с цитированием
Старый 10.10.2008, 13:16   #3
ReM
Пользователь
 
Регистрация: 22.09.2008
Сообщений: 27
По умолчанию

1. Я вот, как раз думаю на компьютер. Потому что ставил из одного дистребутива. Возможног глупо будет звучать , но требований по Паскалю есть какие небудь? ))
2. Спасибо за решение.
ReM вне форума Ответить с цитированием
Старый 10.10.2008, 14:01   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

1.Никаких.
puporev вне форума Ответить с цитированием
Старый 11.10.2008, 17:00   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

1. После компеляции программы на домашней машине
Цитата:
светофор почему то о_О зависал после появления первого круга. Я решил попробывать откомпелировать на рабочей машине, и на ней все прошло нормально.
С чем связанна данная ситуация и как ее решить?
1) полностью согласен с Puporev — никаких особых требований к машине не предъявлялось и не могло предъявляться - ибо ТурбоПаскаль работал на таком железе (процессор, тактовая, видюха, ОЗУ) - какое Вы себе даже представить не можете :-)

Данная ситуация связана с тем, что Дос умер!
"DOS is dead, baby. DOS is dead. :-)
RIP!

2) для решения можете попробовать найти TP 7.1 (вроде там что-то было подправлено именно для быстрых (в то время быстрых ) машин...

Либо, гарантированно!, поможет использование программы DosBox - это эмулятор ДОС
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.10.2008, 17:38   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Если нет особой привычки к Турбо Паскаль, скачайте FreePascal, тоже самое, но сильно расширены возможности и нормально работает на современных машинах.
puporev вне форума Ответить с цитированием
Ответ


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

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

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