From fc8e3763296ba913f11da243fcf7807465413199 Mon Sep 17 00:00:00 2001 From: aNNiMON Date: Sat, 2 Mar 2024 18:42:50 +0200 Subject: [PATCH] 4 --- PRAKTIKA.PAS | 225 ++++++++++++++++++++++++++------------------------- 1 file changed, 117 insertions(+), 108 deletions(-) diff --git a/PRAKTIKA.PAS b/PRAKTIKA.PAS index 6440193..03380d7 100644 --- a/PRAKTIKA.PAS +++ b/PRAKTIKA.PAS @@ -5,12 +5,14 @@ program pr; y_wlcm : integer; {Vsplivayushii text} i : integer; {Vspomogatelnie peremennye} cur : integer; {Posicia kursora v menu} - y, stry : integer; {Peremennye dlya vyvoda teksta} + x,y, stry, th : integer; {Peremennye dlya vyvoda teksta} + ln, ch : integer; {Peremennye dlya chtenia teksta} nolect : integer; {Nomer lekcii} + f : text; {File lekcii} javame, author, - welcome, dtpa, - menustatus, - lectstatus : string; + welcome, dtpa, s, + menustatus, tmp, + lectstatus,path,j: string; mainmenu : array [1..22] of string; {menu} {Procedura inicializacii grafiki} @@ -22,10 +24,13 @@ program pr; procedure menu ; forward; procedure lections(var lect:integer); forward; + procedure ui(ttitle, tbar : string); forward; {Procedura inicializacii peremennyh} procedure init_variables; begin + x := 20; + th := 440; {Vysota svobodnoy oblasti pri vyvode teksta} y_wlcm := -20; cur := 1; author := 'Author: Victor aNNiMON Melnik'; @@ -34,11 +39,13 @@ program pr; javame := 'JavaME'; lectstatus := 'F1 - Help T - Test ESC - Menu'; menustatus := 'ESC - Vyhod UP,DOWN,LEFT,RIGHT - Peredvijenie kursora ENTER - Perehod'; + path := 'D:\2PO-07\'; {Menu Lekcii} for i:= 1 to 10 do begin - mainmenu[i*2-1] := {chr(47+i)+'. }'Lekcia #'+chr(47+i); - mainmenu[i*2] := 'Test #'+chr(47+i) + str(i, tmp); + mainmenu[i*2-1] := 'Lekcia #'+tmp; + mainmenu[i*2] := 'Test #'+tmp; end; mainmenu[21] := 'Author'; mainmenu[22] := 'Exit'; @@ -81,8 +88,9 @@ program pr; procedure author_screen; begin; init_screen; - setcolor(7); - bar(0,0,640,480); + ui('Authors',''); + {setcolor(7); + bar(0,0,640,480);} settextstyle(1, 0, 7); settextstyle(3, 0, 4); setcolor(red); @@ -99,126 +107,127 @@ program pr; procedure help_screen; begin; init_screen; - {ochistka ekrana} - setfillstyle(1,9); - bar(0,0,640,480); - {Title} - setfillstyle(1, 1); - bar(0, 0, 640, 18); - setcolor(8); - settextstyle(2,0,6); - outtextxy(300, 0, 'Help'); + ui('Help',''); outtextxy(99, 170, 'B - Smena cveta fona'); outtextxy(99, 230, 'N - Smena cveta texta'); repeat until keypressed; menu; end; + + {Procedura otrisovki ekrana} + procedure ui(ttitle, tbar : string); + begin + {ochistka ekrana} + setfillstyle(1,9); + bar(0,0,640,480); + {Title} + setfillstyle(1, 1); + bar(0, 0, 640, 18); + setcolor(13); + settextstyle(2,0,6); + outtextxy(300, 0, ttitle); + {Status} + setfillstyle(1, 7); + settextstyle(2,0,4); + bar(0, 466, 640, 480); + setcolor(24); + outtextxy(10, 468, tbar); + end; {Procedura chtenia lectii} procedure lections(var lect:integer); begin - init_screen; - nolect := lect div 2; - repeat p1:=readkey; - {Obrabotka klavish upravlenia} - if p1=#72 then cur:=cur-2 {UP} - else if p1=#75 then cur:=cur-1 {LEFT} - else if p1=#80 then cur:=cur+2 {DOWN} - else if p1=#77 then cur:=cur+1; {RIGHT} - {else if(p=#13) then cur:=cur-1; - else if(p=#72) then cur:=cur-1; - else if(p=#72) then cur:=cur-1; } - TextWidth('defe'); - {Proverka peremennyh} - if(cur<2) then cur:=2; - if(cur>23) then cur:=23; - {ochistka ekrana} - setfillstyle(1,9); - bar(0,0,640,480); - {Title} - setfillstyle(1, 1); - bar(0, 0, 640, 18); - setcolor(13); - settextstyle(2,0,6); - outtextxy(300, 0, 'Lekcia #'+chr(47+nolect)); - {Status} - setfillstyle(1, 7); - settextstyle(2,0,4); - bar(0, 466, 640, 480); - setcolor(24); - outtextxy(10, 468, lectstatus); - {Otrisovka menu} - setcolor(14); - settextstyle(1,0,3); - - until (p1=#27) or (p1=#116) or (p1=#59) + init_screen; + nolect := lect div 2; + str(nolect, tmp); + assign(f, path+'lect'+tmp+'.txt'); + reset(f); + {Schityvaem nazvanie lekcii} + readln(f,tmp); + ch := TextHeight(tmp)+8; {Vysota teksta} + ln := 1; + stry := 0; + repeat p1:=readkey; + {Obrabotka klavish upravlenia} + if p1=#72 then cur:=cur-2 {UP} + else if p1=#75 then x:=x-10 {LEFT} + else if p1=#80 then cur:=cur+2 {DOWN} + else if p1=#77 then x:=x+10; {RIGHT} + {else if(p=#13) then cur:=cur-1; + else if(p=#72) then cur:=cur-1; + else if(p=#72) then cur:=cur-1; } + {Proverka peremennyh} + if(cur<2) then cur:=2 + else if(cur>23) then cur:=23; + ui(tmp,lectstatus); + {Otrisovka teksta} + setcolor(14); + settextstyle(4,0,3); + while not eof(f) do + begin + readln(f,s); + outtextxy(x,20+ln*ch,s); + inc(ln); + stry := stry + ch; + if (stry+ch>th) then {Dostignut nijniy kray} + begin + readkey; + ui(tmp,lectstatus); + ln:=1; + stry:=0; + end; + end; + until (p1=#27) or (p1=#116) or (p1=#59) { or (p=#80) or (p=#80) or (p=#13)}; - if(p1=#116) then menu {T - Test} - else if(p1=#59) then help_screen; {F1 - Help} - end; + if(p1=#116) then menu {T - Test} + else if(p1=#59) then help_screen; {F1 - Help} + end; {Procedura obrabotki vibrannogo punkta menu} procedure choicemenu(var cur:integer); begin - if(cur=22) then author_screen {AUTHOR} - else if(cur=23) then halt {EXIT} - else {OTHER} - begin - if cur mod 2=0 then lections(cur) - ;{else question(cur div 2);} - end; + if(cur=22) then author_screen {AUTHOR} + else if(cur=23) then halt {EXIT} + else {OTHER} + begin + if cur mod 2=0 then lections(cur) + ;{else question(cur div 2);} + end; end; {Procedura vyvoda menu} procedure menu; - begin - init_screen; - repeat p:=readkey; - {Obrabotka klavish upravlenia} - if p=#72 then cur:=cur-2 {UP} - else if p=#75 then cur:=cur-1 {LEFT} - else if p=#80 then cur:=cur+2 {DOWN} - else if p=#77 then cur:=cur+1 {RIGHT} - else if p=#13 then choicemenu(cur); {ENTER} - {else if(p=#13) then cur:=cur-1; - else if(p=#72) then cur:=cur-1; - else if(p=#72) then cur:=cur-1; } - {Proverka peremennyh} - if(cur<2) then cur:=2; - if(cur>23) then cur:=23; - {ochistka ekrana} - setfillstyle(1,9); - bar(0,0,640,480); - {Title} - setfillstyle(1, 1); - bar(0, 0, 640, 18); - setcolor(13); - settextstyle(2,0,6); - outtextxy(300, 0, javame); - {Status} - setfillstyle(1, 7); - settextstyle(2,0,4); - bar(0, 466, 640, 480); - setcolor(24); - outtextxy(10, 468, menustatus); - {Otrisovka menu} - setcolor(14); - settextstyle(1,0,3); - for i:= 1 to 11 do begin - if(i=cur div 2) then - begin - setfillstyle(1,3); - if (cur mod 2=0) then bar(115, 35+i*30, 230, 35+(i+1)*30) - else bar(315, 35+i*30, 405, 35+(i+1)*30); - setfillstyle(1,7); - end; - outtextxy(120, 40+i*30, mainmenu[i*2-1]); - outtextxy(320, 40+i*30, mainmenu[i*2]); - end; - until (p=#27) {or (p=#72) or (p=#75) or (p=#77) + init_screen; + repeat p:=readkey; + {Obrabotka klavish upravlenia} + if p=#72 then cur:=cur-2 {UP} + else if p=#75 then cur:=cur-1 {LEFT} + else if p=#80 then cur:=cur+2 {DOWN} + else if p=#77 then cur:=cur+1 {RIGHT} + else if p=#13 then choicemenu(cur); {ENTER} + {Proverka peremennyh} + if(cur<2) then cur:=2; + if(cur>23) then cur:=23; + ui(javame, menustatus); + {Otrisovka menu} + setcolor(14); + settextstyle(1,0,3); + for i:= 1 to 11 do + begin + if(i=cur div 2) then + begin + setfillstyle(1,3); + if (cur mod 2=0) then bar(115, 35+i*30, TextWidth(mainmenu[i*2-1])+125, 35+(i+1)*30) + else bar(315, 35+i*30, TextWidth(mainmenu[i*2])+325, 35+(i+1)*30); + setfillstyle(1,7); + end; + outtextxy(120, 40+i*30, mainmenu[i*2-1]); + outtextxy(320, 40+i*30, mainmenu[i*2]); + end; + until (p=#27) {or (p=#72) or (p=#75) or (p=#77) or (p=#80) or (p=#80) or (p=#13)}; - if(p=#27) then halt; + if(p=#27) then halt; end; {Glavnaya programma}