Автор: Андрей by minsk 20.02.2008 22:45
Код
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 мин. простейшая вещь:
в турбо паскале не пашет
Код
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.