Обучающая программа Графика программированию в графическом режиме на языке turbo-pascal 7.x
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
°змера и позиции курсора}
Intr($10,Red);
SizeCursor:=CX;{сохраняем размер курсора}
СН:=$20; {делаем курсор невидимым}
end;
АН:=01; {функция установки размера курсора}
Intr($10,Red);
end;
end;
procedure SVETFON(C,F:byte); {установка цвета и фона}
begin
TextColor(C);
TextBackground(F)
end;
procedure VERTIKALNOE_MENU(Kl,K2,Kp:byte;SS1,SS2,SS3,SS4,SS5,SS6,
SS7,SS8,SS9:dlina;Var Result:byte);
{процедура создания окна меню}
Label Met;
Const Kr=9;
Var M:array[l..Kr] of string[60];
I,T:byte;
Ch:char;
Fl:boolean;
begin
Cursor(False);
Fl:=True;
M[1]:=SS1;M[2]:=SS2;M[3]:=SS3;M[4]:=SS4;M[5]:=SS5;M[6]:=SS6;
M[7]:=SS7;M[8]:=SS8;M[9]:=SS9;
T:=Length(M[I]);
for I:=2 to Kp do
if Length(M{I])>T then T:=Length(M[I]);
for l:=l to Kp do
begin
if 1=1 then SVETFON(1,13)
else SVETFON(13,1);
GoToXY(Kl,K2+i);
write(M[I]);
end;
SVETFON(13,1);
I:=l;
while Fl=True do begin
Ch:=ReadKey;
if Ch=#13 then Fl:=False;
if(Ch=#0) and KeyPressed then
begin
Ch:=ReadKey;
case Ch of
#80: begin
GoToXY(Kl,K2+i);
SVETFON(13,1);
write(M[I]);
if i=(Kp+l) then
begin
I:=l;
SVETFON(3,l);
GoToXY(Kl,K2+l);
SVETFON(1, 13);
write(M[I]);
SVETFON(13,1);
goto Met;
end;
GoToXY(Kl,K2+I);
SVETFON(1,13);
write(M[I]);
SVETFON(13,1);
end;
#72: begin
if 1=1 then goto Met;
GoToXY(Kl,K2+I);
SVETFON(1371);
write(M[I]);
i:=I-1;
GoToXY(Kl,K2+I);
SVETFON(1,13);
write(M[I])
end
end;
Met:
end ;
end;
Result :=I;
SVETFON(13,1);
Cursor(True) ;
end;
begin {Начало основной программы}
GraphRegim;
SetBKColor(l);
SetTextStyle(0,0,5);
SetColor(12);
OutTextXY(40,50, Т Р А Ф И К А);
SetTextStyle(0,0,1);
SetColor(15);
OutTextXY(100,225,Программа для обучения работе в графическом
режиме);
OutTextXY(170,245,Разработал Черноткач Р. И.);
OutTextXY(232,285,СПГУАП);
OutTextXY{240,305,2002);
readkey;
SetTextStyle(0,0,l);
Windo1;
CloseGraph;
NOMER3:=0; {переменные, контролирующие доступ к разделам}
NOMER4:=0; {{ не более двух раз) за сеанс}
NOMER5:=0;
NOMER6:=0;
NOMER7:=0;
К[1]:=0;
К[2]:=0;
while True do begin
TextBackground(3);
ClrScr;
Cursor(False);
GoToXY(15,5);
TextColor(l);
write(Какой раздел Вы хотели бы изучить?);
GoToXY(10,10);
VERTIKALNOE_MENU(10,10,9,
Программирование графических режимов
Управление курсором и полем рисования
Формирование прямоллинейньгх монохромных изображений
Управление цветим и стилем изображений
Программирование цветных криволинейных изображений
Формирование графических текстов
Программирование озвученных динамических сцен
Результаты Вашей работы
Конец работы
Regime);
case Regime of
1:RAZDEL10;
2:RAZDEL20;
3:begin
NOMER3:=NOMER3+1;
If NOMER3<3 then
begin
RAZDEL30;
ball3[NOMER3]:=REZ3;
Itog[nomer3]:=Itog[nomer3]+ball3[nomer3];
K[nomer3]:=K[nomer3]+l;
end
end;
4: begin
NOMER4:=NOMER4+1;
If NOMER4<3 then
begin
RAZDEL40;
ball4[nomer4]:=rez4;
Itog[nomer4]:=Itog[nomer4]+ball4[nomer4];
K[nomer4]:=K[nomer4]+l;
end
end;
5:begin
NOMER5:=NOMER5+1;
If NOMER5<3 then
begin
RAZDEL50;
Ьа115[погаег5]:=rez5;
Itog[nomer5]:=Itog[nomer5]+ball5[nomer5];
K[nomer5]:=K[nomer5]+1;
end;
end;
6:begin
NOMER6:=NOMER6+1;
If NOMER6<3 then
begin
RAZDEL60;
ball6[nomer6]:=rez6; Itog[nomer6]:=Itog[nomer6]+ball6[nomer6]; K[nomer6]:=K[nomer6]+l;
end;
end
7:begin
NOMER7:=NOMER7+1;
IF NOMER7<3 then
begin
RAZDEL70;
ball7[nomer7]:=rez7;
Itog[nomer7]:=Itog[nomer7]+ball7[nomer7];
end;
end;
8:begin {вывод результатов работы}
If K[l]<>0 then
tog[l3:=Round(Itog[l]/K[1);
If K[2]<>0 then
tog[2]:=Round(Itog[2]/K[2]);
TextBackground(1);
ClrScr;
TextColor(12);
writeln;
Write(РЕЗУЛЬТАТЫ ВАШЕЙ РАБОТЫ);
writeln;
writeln(l попытка 2 попытка:80);
writeln;
wtiteln(ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ
ИЗОБРАЖЕНИЙ);
writeln;
writeln( УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЙ1);
writeln;
writeln(ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ
ИЗОБРАЖЕНИЙ);
writeln;
writeln( ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ);
writeln;
writeln( ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН);
writeln;
writeln;
writeln( ОЦЕНКА РАБОТЫ ЗА СЕАНС);
GotoXY(64,6); writeln(ball3[1]);
GoToXY(75,6); writeln(ball3[2]);
GoToXY(64,8); writeln(ball4[l]);
GoToXY(75,8); writeln(ball4[2]);
GoToXY(64,10); writeln(ball5[l]);
GoToXY(75,10); writeln(ball5[2]);
GoToXY(64,12); writeln(ball6[l]);
GoToXY(75,12); writeln(bal16[2]);
GoToXY(64,14); writeln(bal17[l]);
GoToXY(75,14); writeln(ball7[23)
GoToXY(64,18); writeln(tog[l]);
GoToXY(75,18); writeln(tog[2]);
readkey;
end;
9:begin
GraphRegim;
OKNO;
SetTextStyle{0,0,4);
SetColor(4);
OutTextXY(150,80,Bы хотите);
OutTextXY(60,120,закончить работу)
OutTextXY(100,160,с программой?);
OutTextXY(230,280,Y/N);
Dh:=ReadKey;
If (Dh=y) or (Dh=н) then
begin
Cursor(True);
ClrScr;
Halt
end
else
CloseGraph;
end;
end;
end;
CloseGraph;
end.
{$A+, B-, D+, E+, F-, G-, I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+}
{$M 16384,0,655360}
Unit RAZDEL1;
interface
uses Crt, Graph, Dos, Strings, MYBOOK;
type An=record
P1:Char;
P2:array[0..69] of Char;
end;
var Fl:file of An ;
A: An;
Gd,Gm,Y,N:integer;
St:string[68];
procedure RAZDEL10; {Обеспечение работы с разделом "Программиро вание графических режимов"}
implementation
procedure RAZDEL10;
Label 1;
begin
GraphRegim;
Assign(Fl,RAZTEX1.pas);
{SI-}
Reset (Fl);
{SI+}
0thenWriteln(RAZTEX1.pas);"> If lOResult <>0 then Writeln (Нет файла RAZTEX1.pas);
Repeat;
ClearDevice;
OKNO;
Y:=10;
For N:=0 to 31 do
begin
Read(Fl,A); St:=StrPas(A.P2);
case A.P1 of
:OutTextXY(20,Y*N+10,St);
*:begin
SetColor{4);
OutTextXY(20,Y*N+10,St);
SetColor(l);
end;
0:GoTo 1;
end;
end;
1: readkey;
until A.P1=O;