IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Графика и полноэкранный режим, помогите настроить
сообщение
Сообщение #1


Гость






Дело в том что паскаль работает с unitом crt, но как только подключаю graph - при компиляции он разварачивает паскаль на весь монитор и так оставляет тёмный экран, нажатие alt+enter возвращает в оконный, но окно пустое тёмное и заголовок Turbo Pascal - ЗАФИКСИРОВАНО.


EGAVGA.BGI - в папке bgi

директорию прописал

винда 2к



Begin
grdriver:=detect;


Initgraph(grdriver,grmode,'c:\bp\b

gi\');
restoreCRTMode;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


В общем-то так и должно быть.
Не понял, в чем проблема.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 58
Пол: Мужской
Реальное имя: Андрей

Репутация: -  2  +


По идее, такого быть не должно.
Он должен перейти в графический режим, сразу же из него выйти и закончить программу.
Попробуй вот что:
1. Порисуй там че-нибудь, или поставь ReadKey (модуль CRT). Если получилось нарисовать, то все в порядке
2. Поместить EGAVGA.BGI в папку с программой
3. Вместо
Код
grdriver:=detect;

Написать
Код

grdriver:=VGA;
grmode:=VGAHi

Может, заработает
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
Он должен перейти в графический режим, сразу же из него выйти и закончить программу.
Это у тебя телепатические способности, или просто тяга к некорректным выводам? Ты что, видел ВСЮ программу, чтобы уверенно рассуждать, что должно быть, а что нет? Все, что следует из поста - это то, что после инициализации графики автор временно возвращается в текстовый режим. Что он там делает - неизвестно, поэтому домыслы свои оставляй при себе...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 58
Пол: Мужской
Реальное имя: Андрей

Репутация: -  2  +


Да, я не видел ВСЕЙ программы, но ведь возврат в текстовый режим не произошел, а значит, что-то неправильно работает именно на стадии инициализации графического режима.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


Код
grdriver:=VGA;
grmode:=VGAHi

не помогло, боюсь что Turbo pascal использует в win2k файл ntvdm.exe, а он у меня какой-нить битый, хотя почему без graph нормально работает не понимаю.

установил Free pascal, компилируется, но выскакивает два окна в одном нарисован лабиринт в другом предлогает выбрать стартовую точку. по идеи после выбора места, при нажатии любой клавиши или enter должна рисоваться линия, как идёт человек, но ничего не происходит




вот исходник
Код
Program Laba1;
uses crt,graph;
var
  floor,place,driver,mode,x,y,i : integer;
Procedure lifts_and_stairway;
Begin
  rectangle(410,120,430,140);
  rectangle(170,360,190,380);
  rectangle(150,100,155,105);
  rectangle(150,100,160,110);
  rectangle(150,100,165,115);
  outtextxy(195,360,'first lift');
  outtextxy(320,130,'second lift');
  outtextxy(150,90,'stairway')
End;
Procedure street_floor;
Begin
  SetBkcolor(cyan);
  line(150,100,450,100);
  line(450,100,450,400);
  line(450,400,320,400);
  line(280,400,150,400);
  line(150,400,150,100);
  line(170,120,430,120);
  line(430,120,430,200);
  line(430,210,430,380);
  line(430,195,410,195);
  line(410,195,410,215);
  line(410,215,430,215);
  line(430,380,170,380);
  line(170,380,170,120);
  lifts_and_stairway;
  outtextxy(370,200,'room');
End;
Procedure first_floor;
Begin
  SetBkcolor(blue);
  rectangle(150,100,450,400);
  line(170,120,250,120);
  line(260,120,430,120);
  line(245,120,245,135);
  line(245,135,265,135);
  line(265,135,265,120);
  line(430,120,430,380);
  line(430,380,360,380);
  line(330,380,170,380);
  line(365,380,365,340);
  line(365,340,325,340);
  line(325,340,325,380);
  line(170,380,170,300);
  line(170,280,170,120);
  line(170,320,230,320);
  line(230,320,230,260);
  line(230,260,170,260);
  lifts_and_stairway;
  outtextxy(290,330,'room with diaf');
  outtextxy(240,280,'poin of management');
  outtextxy(180,140,'laboratory')
End;
Procedure second_floor;
Begin
  SetBkcolor(green);
  rectangle(150,100,450,400);
  line(170,120,430,120);
  line(430,120,430,300);
  line(430,310,430,380);
  line(430,295,420,295);
  line(420,295,420,315);
  line(420,315,430,315);
  line(430,380,170,380);
  line(170,380,170,190);
  line(170,170,170,120);
  line(170,200,210,200);
  line(210,200,210,160);
  line(210,160,170,160);
  lifts_and_stairway;
  outtextxy(220,180,'medical laboratory');
  outtextxy(370,300,'hutch')
End;
Procedure exit_first_lift;
Begin
  street_floor;
  i := 179;
  for x := 180 to 190 do
  begin
    putpixel(x,380,cyan);
    putpixel(i,380,cyan);
    dec(i);
    delay(10000)
  end;
  for y := 370 to 390 do
  begin
    putpixel(180,y,red);
    delay(10000)
  end;
  i:= 170;
  for x := 190 downto 180 do
  begin
    putpixel(x,380,white);
    putpixel(i,380,white);
    inc(i);
    delay(10000)
  end;
  for x := 180 to 300 do
  begin
    putpixel(x,390,red);
    delay(10000)
  end
End;
Procedure lift;
Begin
  clrscr;
  gotoxy(20,25);
  writeln(i);
  delay(65535);
  delay(65535);
  delay(65535);
  delay(65535)
End;
Begin
  clrscr;
  driver := detect;
  initgraph(driver,mode,'c:\bp\bgi\');
  restoreCRTMode;

  {---}

  textcolor(magenta);
  writeln('choose floor on which you are found');
  writeln;
  textcolor(white);
  writeln('1. street floor - cyan');
  writeln('2. first floor - blue');
  writeln('3. second floor - green');
  writeln;
  readln(floor);
  clrscr;
  textcolor(magenta);
  writeln('choose place where you are found');
  writeln;

  {---}

  textcolor(white);
  case floor of
    1 : begin
          writeln('1. room');
          writeln;
          readln(place);
          SetGraphMode(GetGraphMode);
          street_floor;
          if place = 1 then
          begin
            outtextxy(422,201,'x');
            readkey;
            for x := 425 to 440 do
            begin
              putpixel(x,205,red);
              delay(10000)
            end;
            for y := 205 to 390 do
            begin
              putpixel(440,y,red);
              delay(10000)
            end;
            for x := 440 downto 300 do
            begin
              putpixel(x,390,red);
              delay(10000)
            end
          end
        end;
    2 : begin
          writeln('1. room with deaf');
          writeln('2. point of management');
          writeln('3. laboratory');
          writeln;
          readln(place);
          SetGraphMode(GetGraphMode);
          first_floor;
          case place of
            1 : begin
                  outtextxy(342,356,'x');
                  readkey;
                  for y := 360 to 390 do
                  begin
                    putpixel(345,y,red);
                    delay(10000)
                  end;
                  for x := 345 downto 180 do
                  begin
                    putpixel(x,390,red);
                    delay(10000)
                  end;
                  i := 179;
                  for x := 180 to 190 do
                  begin
                    putpixel(x,380,blue);
                    putpixel(i,380,blue);
                    dec(i);
                    delay(10000)
                  end;
                  for y := 390 downto 370 do
                  begin
                    putpixel(180,y,red);
                    delay(10000)
                  end;
                  i := 170;
                  for x := 190 downto 180 do
                  begin
                    putpixel(x,380,white);
                    putpixel(i,380,white);
                    inc(i);
                    delay(10000)
                  end;
                  TextMode(Font8x8);
                  for i := 2 downto 1 do
                    lift;
                  clrscr;
                  SetGraphMode(GetGraphMode);
                  exit_first_lift;
                end;
            2 : begin
                  outtextxy(197,286,'x');
                  readkey;
                  for x := 200 downto 160 do
                  begin
                    putpixel(x,290,red);
                    delay(10000)
                  end;
                  for y := 290 to 370 do
                  begin
                    putpixel(160,y,red);
                    delay(10000)
                  end;
                  i := 371;
                  for y := 370 downto 360 do
                  begin
                    putpixel(170,y,blue);
                    putpixel(170,i,blue);
                    inc(i);
                    delay(10000)
                  end;
                  for x := 160 to 180 do
                  begin
                    putpixel(x,370,red);
                    delay(10000)
                  end;
                  i:= 380;
                  for y := 360 to 370 do
                  begin
                    putpixel(170,y,white);
                    putpixel(170,i,white);
                    dec(i);
                    delay(10000)
                  end;
                  clrscr;
                  TextMode(Font8x8);
                  for i := 2 downto 1 do
                    lift;
                  SetGraphMode(GetGraphMode);
                  exit_first_lift;
                end;
            3 : begin
                  outtextxy(252,121,'x');
                  readkey;
                  for y := 125 downto 110 do
                  begin
                    putpixel(255,y,red);
                    delay(10000)
                  end;
                  for x := 255 downto 160 do
                  begin
                    putpixel(x,110,red);
                    delay(10000)
                  end;
                  y := 110;
                  for x := 160 to 165 do
                  begin
                    putpixel(x,y,red);
                    inc(y);
                    delay(10000)
                  end;
                  clrscr;
                  TextMode(Font8x8);
                  for i := 2 downto 1 do
                    lift;
                  SetGraphMode(GetGraphMode);
                  street_floor;
                  y := 100;
                  for x := 150 to 160 do
                  begin
                    putpixel(x,y,red);
                    inc(y);
                    delay(10000)
                  end;
                  for y := 110 to 390 do
                  begin
                    putpixel(160,y,red);
                    delay(10000)
                  end;
                  for x := 160 to 300 do
                  begin
                    putpixel(x,390,red);
                    delay(10000)
                  end
                end
          end
        end;
    3 : begin
          writeln('1. medical laboratory');
          writeln('2. hutch');
          writeln;
          readln(place);
          SetGraphMode(GetGraphMode);
          second_floor;
          case place of
            1 : begin
                  outtextxy(187,176,'x');
                  readkey;
                  for x := 190 downto 160 do
                  begin
                    putpixel(x,180,red);
                    delay(10000)
                  end;
                  for y := 180 to 370 do
                  begin
                    putpixel(160,y,red);
                    delay(10000)
                  end;
                  i := 371;
                  for y := 370 downto 360 do
                  begin
                    putpixel(170,y,green);
                    putpixel(170,i,green);
                    inc(i);
                    delay(10000)
                  end;
                  for x := 160 to 180 do
                  begin
                    putpixel(x,370,red);
                    delay(10000)
                  end;
                  i:= 380;
                  for y := 360 to 370 do
                  begin
                    putpixel(170,y,white);
                    putpixel(170,i,white);
                    dec(i);
                    delay(10000)
                  end;
                  clrscr;
                  TextMode(Font8x8);
                  for i := 3 downto 1 do
                    lift;
                  SetGraphMode(GetGraphMode);
                  exit_first_lift
                end;
            2 : begin
                  outtextxy(422,301,'x');
                  readkey;
                  for x := 425 to 440 do
                  begin
                    putpixel(x,305,red);
                    delay(10000)
                  end;
                  for y := 305 downto 130 do
                  begin
                    putpixel(440,y,red);
                    delay(10000)
                  end;
                  i := 129;
                  for y := 130 to 140 do
                  begin
                    putpixel(430,y,green);
                    putpixel(430,i,green);
                    dec(i);
                    delay(10000)
                  end;
                  for x := 440 downto 420 do
                  begin
                    putpixel(x,130,red);
                    delay(10000)
                  end;
                  i:= 120;
                  for y := 140 downto 130 do
                  begin
                    putpixel(430,y,white);
                    putpixel(430,i,white);
                    inc(i);
                    delay(10000)
                  end;
                  clrscr;
                  TextMode(Font8x8);
                  for i := 3 downto 1 do
                    lift;
                  SetGraphMode(GetGraphMode);
                  street_floor;
                  i := 129;
                  for y := 130 to 140 do
                  begin
                    putpixel(430,y,cyan);
                    putpixel(430,i,cyan);
                    dec(i);
                    delay(10000)
                  end;
                  for x := 420 to 440 do
                  begin
                    putpixel(x,130,red);
                    delay(10000)
                  end;
                  i:= 120;
                  for y := 140 downto 130 do
                  begin
                    putpixel(430,y,white);
                    putpixel(430,i,white);
                    inc(i);
                    delay(10000)
                  end;
                  for y := 130 to 390 do
                  begin
                    putpixel(440,y,red);
                    delay(10000)
                  end;
                  for x := 440 downto 300 do
                  begin
                    putpixel(x,390,red);
                    delay(10000)
                  end;
                end
          end
        end
  end;
  for y := 390 to 410 do
  begin
    putpixel(300,y,red);
    delay(10000);
  end;
  readkey
End.


Добавлено через 5 мин.
простейшая вещь:
в турбо паскале не пашет sad.gif
Код
Begin
  clrscr;
  driver := detect;
  initgraph(driver,mode,'c:\bp\bgi\');
  rectangle(410,120,430,140);
  rectangle(170,360,190,380);
  rectangle(150,100,155,105);
  rectangle(150,100,160,110);
  delay(10000);
  readkey
End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
установил Free pascal, компилируется, но выскакивает два окна в одном нарисован лабиринт в другом предлогает выбрать стартовую точку. по идеи после выбора места, при нажатии любой клавиши или enter должна рисоваться линия, как идёт человек, но ничего не происходит


{$APPTYPE GUI}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 18:02
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name