Umístnení souboru www.TrSek.com/cover/pishta/stopky.pas{ STOPKY.PAS Copyright (c) Pishta }
{ Program plne pracuje s hodinami pocitaca. Umoznuje nasledovne }
{ operacie: Hodiny, Stopky, Ulozenie casov }
{ Pre ulozene casy pouziva disk konkretne adresar c:\casy }
{ }
{ Datum:23.04.2008 http://www.trsek.com }
PROGRAM HODINY_A_STOPKY;
USES GRAPH,CRT;
TYPE CASF=RECORD
CAS_MENO:STRING;
END;
CASYF=FILE OF CASF;
TYPE
POLE1=ARRAY[0..59] OF INTEGER;
POLE2=ARRAY[0..59] OF INTEGER;
POLE3=ARRAY[0..59] OF INTEGER;
POLE4=ARRAY[0..59] OF INTEGER;
POLE_STOPKY=ARRAY[0..59] OF STRING;
PROCEDURE INICIALIZACIA;
BEGIN
DETECTGRAPH(GD,GM);
INITGRAPH(GD,GM,'');
END;
PROCEDURE BODY_SEKUNDY(VAR P1F:POLE1;VAR P2F:POLE2;VAR P3F:POLE3;VAR P4F:POLE4;VAR P_SF:POLE_STOPKY);
VAR U2:REAL;
I,U:INTEGER;
J:STRING;
BEGIN
U:=-6;
FOR I:=0 TO 59 DO
BEGIN
U:=U+6;
U2:=U; U2:=(U2/180)*(22/7);
P1F[I]:=TRUNC(SIN(U2)*194)+512;
P2F[I]:=384-TRUNC(COS(U2)*194);
P3F[I]:=TRUNC(SIN(U2)*170)+512;
P4F[I]:=384-TRUNC(COS(U2)*170);
STR(I,J);
IF I<10 THEN INSERT('0',J,1);
P_SF[I]:=J;
END;
END;
PROCEDURE UVOD;
BEGIN
SETTEXTSTYLE(0,0,3); SETCOLOR(10);
OUTTEXTXY(330,350,'HODINY A STOPKY');
SETTEXTSTYLE(0,0,1);
SETCOLOR(14); OUTTEXTXY(833,695,'Copyright by');
SETCOLOR(12); OUTTEXTXY(935,695,' Pishta');
REPEAT
SETCOLOR(0);
OUTTEXTXY(390,390,'Prepnite sa do textoveho okna!');
TEXTCOLOR(0);GOTOXY(21,14);WRITELN('Pokracujte stlacenim lubovolneho klavesu');
DELAY(500);
SETCOLOR(11);
OUTTEXTXY(390,390,'Prepnite sa do textoveho okna!');
TEXTCOLOR(10);GOTOXY(21,14);WRITELN('Pokracujte stlacenim lubovolneho klavesu');
DELAY(500);
TEXTCOLOR(14); GOTOXY(32,12);WRITELN('Copyright by ');
TEXTCOLOR(12); GOTOXY(44,12);WRITELN(' Pishta');
UNTIL KEYPRESSED;
CLRSCR; CLEARDEVICE;
READKEY;
END;
PROCEDURE CIFERNIK(P1F:POLE1; P2F:POLE2; P3F:POLE3; P4F:POLE4);
VAR I:INTEGER;
BEGIN
FOR I:=0 TO 59 DO
BEGIN
SETCOLOR(14); SETLINESTYLE(0,0,1); SETTEXTSTYLE(0,0,1); SETFILLSTYLE(1,12);
PUTPIXEL(P1F[I],P2F[I],11);
IF I=5 THEN BEGIN FILLELLIPSE(P1F[I],P2F[I],3,3); SETCOLOR(4); OUTTEXTXY(P3F[I],P4F[I],'1'); END;
IF I=10 THEN BEGIN FILLELLIPSE(P1F[I],P2F[I],3,3); SETCOLOR(4); OUTTEXTXY(P3F[I],P4F[I],'2'); END;
IF I=15 THEN BEGIN FILLELLIPSE(P1F[I],P2F[I],5,5); SETCOLOR(4); OUTTEXTXY(P3F[I],P4F[I]-3,'3'); END;
IF I=20 THEN BEGIN FILLELLIPSE(P1F[I],P2F[I],3,3); SETCOLOR(4); OUTTEXTXY(P3F[I],P4F[I],'4'); END;
IF I=25 THEN BEGIN FILLELLIPSE(P1F[I],P2F[I],3,3); SETCOLOR(4); OUTTEXTXY(P3F[I],P4F[I],'5'); END;
IF I=30 THEN BEGIN FILLELLIPSE(P1F[I],P2F[I],5,5); SETCOLOR(4); OUTTEXTXY(P3F[I]-3,P4F[I],'6'); END;
IF I=35 THEN BEGIN FILLELLIPSE(P1F[I],P2F[I],3,3); SETCOLOR(4); OUTTEXTXY(P3F[I]-3,P4F[I],'7'); END;
IF I=40 THEN BEGIN FILLELLIPSE(P1F[I],P2F[I],3,3); SETCOLOR(4); OUTTEXTXY(P3F[I]-3,P4F[I],'8'); END;
IF I=45 THEN BEGIN FILLELLIPSE(P1F[I],P2F[I],5,5); SETCOLOR(4); OUTTEXTXY(P3F[I]-3,P4F[I]-3,'9'); END;
IF I=50 THEN BEGIN FILLELLIPSE(P1F[I],P2F[I],3,3); SETCOLOR(4); OUTTEXTXY(P3F[I]-3,P4F[I],'10'); END;
IF I=55 THEN BEGIN FILLELLIPSE(P1F[I],P2F[I],3,3); SETCOLOR(4); OUTTEXTXY(P3F[I]-3,P4F[I],'11'); END;
IF I=0 THEN BEGIN FILLELLIPSE(P1F[I],P2F[I],5,5); SETCOLOR(4); OUTTEXTXY(P3F[I]-7,P4F[I]-5,'12'); END;
END;
{STRED A OKOLO} FILLELLIPSE(512,384,10,10);
END;
PROCEDURE OTAZKA_A_POHYB;
BEGIN
GOTOXY(32,9);TEXTCOLOR(14);WRITE('KOLKO JE HODIN: '); TEXTCOLOR(10);READ(A);
GOTOXY(32,11);TEXTCOLOR(14);WRITE('KOLKO JE MINUT: '); TEXTCOLOR(10);READ(B); CLRSCR;
M:=B;
IF (A=1) OR (A=13) THEN C:=5; IF (A=2) OR (A=14) THEN C:=10; IF (A=3) OR (A=15) THEN C:=15;
IF (A=4) OR (A=16) THEN C:=20; IF (A=5) OR (A=17) THEN C:=25; IF (A=6) OR (A=18) THEN C:=30;
IF (A=7) OR (A=19) THEN C:=35; IF (A=8) OR (A=20) THEN C:=40; IF (A=9) OR (A=21) THEN C:=45;
IF (A=10) OR (A=22) THEN C:=50; IF (A=11) OR (A=23) THEN C:=55; IF (A=12) OR (A=0) THEN C:=0;
{POSUNUTIE HODINOVEJ RUCICKY}
IF M<12 THEN H:=C;
IF (M>=12) AND (M<24) THEN H:=C+1;
IF (M>=24) AND (M<36) THEN H:=C+2;
IF (M>=36) AND (M<48) THEN H:=C+3;
IF (M>=48) THEN H:=C+4;
REPEAT
BEGIN
FOR S:=0 TO 59 DO
BEGIN
RUCICKY(P1,P2,P3,P4);
CIFERNIK(P1,P2,P3,P4);
IF S=58 THEN
BEGIN
M:=M+1;
IF M=12 THEN H:=H+1;
IF M=24 THEN H:=H+1;
IF M=36 THEN H:=H+1;
IF M=48 THEN H:=H+1;
IF M=60 THEN BEGIN H:=H+1; M:=0; END;
IF (M=0) AND (H=60) THEN H:=0;
{VYMAZANIE RUCICIEK PRED DVANASTKOU}
IF M=0 THEN BEGIN SETLINESTYLE(0,0,3); SETCOLOR(0); MOVETO(512,384); LINETO(P1[59],P2[59]);
MOVETO(512,384); LINETO(P3[59],P4[59]); END;
END;
END;
END;
UNTIL S=69;
END;
PROCEDURE STOPKY(P_SF:POLE_STOPKY);
VAR
S,M,H,ST:INTEGER;
E:CHAR;
MENO:STRING;
BEGIN
RESET(CASY);
WHILE NOT EOF(CASY) DO READ(CASY,CAS); {ZABRANI PREPISU CASOV}
TEXTCOLOR(10); GOTOXY(33,12); WRITE('ZADAJ MENO: '); {VASE MENO}
TEXTCOLOR(15); READ(MENO); CLRSCR;
{MENU}TEXTCOLOR(10);
GOTOXY(35,12);WRITELN('Start:');
GOTOXY(35,13);WRITELN('Stop:');
GOTOXY(35,14);WRITELN('Uloz:');
GOTOXY(35,15);WRITELN('Vynuluj:');
TEXTCOLOR(14); GOTOXY(30,16);WRITELN('--------------------');
TEXTCOLOR(12); GOTOXY(35,17);WRITELN('Koniec:');
TEXTCOLOR(11);
GOTOXY(44,12);WRITELN('1');
GOTOXY(44,13);WRITELN('2');
GOTOXY(44,14);WRITELN('3');
GOTOXY(44,15);WRITELN('0');
GOTOXY(44,17);WRITELN('K');
{MENU} TEXTCOLOR(14); GOTOXY(30,18);WRITELN('--------------------');
SETTEXTSTYLE(0,0,10); S:=0;M:=0;H:=0;ST:=0;
SETCOLOR(11); OUTTEXTXY(545,320,':');
SETCOLOR(11); OUTTEXTXY(345,320,':');
SETCOLOR(3); OUTTEXTXY(600,320,P_SF[S]);
SETCOLOR(3); OUTTEXTXY(400,320,P_SF[M]);
SETCOLOR(3); OUTTEXTXY(200,320,P_SF[H]);
{STOTINY}
SETTEXTSTYLE(0,0,5);SETCOLOR(3); OUTTEXTXY(760,355,P_SF[ST]);
REPEAT BEGIN
IF KEYPRESSED THEN BEGIN
E:=READKEY;
SETTEXTSTYLE(0,0,5);SETCOLOR(3); OUTTEXTXY(760,355,P_SF[ST]);{STOTINY A SEKUNDY-ABY ICH NEVYMAZALO ZASTAVENIE STOPIEK}
SETTEXTSTYLE(0,0,10);SETCOLOR(3); OUTTEXTXY(600,320,P_SF[S]);
END;
CASE E OF
'1':
BEGIN
SETTEXTSTYLE(0,0,10);SETCOLOR(3); OUTTEXTXY(600,320,P_SF[S]);
SETTEXTSTYLE(0,0,10);SETCOLOR(3); OUTTEXTXY(400,320,P_SF[M]);
SETTEXTSTYLE(0,0,10);SETCOLOR(3); OUTTEXTXY(200,320,P_SF[H]);
SETTEXTSTYLE(0,0,10);SETCOLOR(0); OUTTEXTXY(545,320,':');
SETTEXTSTYLE(0,0,10);SETCOLOR(0); OUTTEXTXY(345,320,':');
{STOTINY}
SETTEXTSTYLE(0,0,5);SETCOLOR(3); OUTTEXTXY(760,355,P_SF[ST]);
DELAY(100);
SETTEXTSTYLE(0,0,5);SETCOLOR(0); OUTTEXTXY(760,355,P_SF[ST]);
{STOTINY}
SETTEXTSTYLE(0,0,10);SETCOLOR(11); OUTTEXTXY(545,320,':');
SETTEXTSTYLE(0,0,10);SETCOLOR(11); OUTTEXTXY(345,320,':');
ST:=ST+1;
IF ST=9 THEN BEGIN ST:=0;
SETTEXTSTYLE(0,0,10);SETCOLOR(0); OUTTEXTXY(600,320,P_SF[S]);
S:=S+1;
SETTEXTSTYLE(0,0,10);SETCOLOR(3); OUTTEXTXY(600,320,P_SF[S]); END;
IF S=59 THEN BEGIN
SETTEXTSTYLE(0,0,10);SETCOLOR(0); OUTTEXTXY(600,320,P_SF[S]); S:=0; {VYNULOVANIE SEKUND}
SETTEXTSTYLE(0,0,10);SETCOLOR(0); OUTTEXTXY(400,320,P_SF[M]);
M:=M+1;
SETTEXTSTYLE(0,0,10);SETCOLOR(3); OUTTEXTXY(400,320,P_SF[M]); END;
IF M=59 THEN BEGIN
SETTEXTSTYLE(0,0,10);SETCOLOR(0); OUTTEXTXY(400,320,P_SF[M]); M:=0; {VYNULOVANIE MINUT}
SETTEXTSTYLE(0,0,10);SETCOLOR(0); OUTTEXTXY(200,320,P_SF[H]);
H:=H+1;
SETTEXTSTYLE(0,0,10);SETCOLOR(3); OUTTEXTXY(200,320,P_SF[H]); END;
END;
'2': BEGIN {ZASTAVENIE} END;
'3': BEGIN
CAS.CAS_MENO:=CONCAT(MENO,' ',P_SF[H],':',P_SF[M],':',P_SF[S],':',P_SF[ST]);
END;
'0': BEGIN
SETTEXTSTYLE(0,0,10);SETCOLOR(0); OUTTEXTXY(600,320,P_SF[S]); S:=0; SETCOLOR(3); OUTTEXTXY(600,320,P_SF[S]);
SETTEXTSTYLE(0,0,10);SETCOLOR(0); OUTTEXTXY(400,320,P_SF[M]); M:=0; SETCOLOR(3); OUTTEXTXY(400,320,P_SF[M]);
SETTEXTSTYLE(0,0,10);SETCOLOR(0); OUTTEXTXY(200,320,P_SF[H]); H:=0; SETCOLOR(3); OUTTEXTXY(200,320,P_SF[H]);
END; END;
END; UNTIL E='K';
CLRSCR; CLEARDEVICE; WRITE(CASY,CAS); CLOSE(CASY); {ULOZENIE DO SUBORU A JEHO ZATOVERNE}
END;
PROCEDURE ULOZENE;
VAR X:INTEGER;
BEGIN
X:=0;
RESET(CASY);
WHILE NOT EOF(CASY) DO
BEGIN
X:=X+1;
READ(CASY,CAS);
TEXTCOLOR(10);
WRITELN(CAS.CAS_MENO);
TEXTCOLOR(14);
WRITELN('-------------------');
END;
IF X=0 THEN BEGIN
GOTOXY(23,12);
TEXTCOLOR(14); WRITE('V SUBORE SA NENACHADZAJU ZIADNE CASY!');
END;
CLOSE(CASY);
READKEY;
CLRSCR;
END;
PROCEDURE KONIEC;
BEGIN
TEXTCOLOR(14); GOTOXY(32,12);WRITELN('Copyright by ');
TEXTCOLOR(12); GOTOXY(44,12);WRITELN(' Pishta');
TEXTCOLOR(14);GOTOXY(37,14);WRITELN('Dovidenia');
END;
BEGIN
ASSIGN(CASY, 'C:\CASY');
INICIALIZACIA;
BODY_SEKUNDY(P1,P2,P3,P4,P_S);
UVOD;
MENU;
IF (ME='H') OR (ME='h') THEN BEGIN
CLRSCR; CLEARDEVICE;
CIFERNIK(P1,P2,P3,P4);
OTAZKA_A_POHYB;
END;
IF (ME='S') OR (ME='s') THEN BEGIN
CLRSCR; CLEARDEVICE;
STOPKY(P_S);
KONIEC;
DELAY(3000);
EXIT;
END;
IF (ME='U') OR (ME='u') THEN BEGIN
CLRSCR; CLEARDEVICE;
ULOZENE;
KONIEC;
DELAY(3000);
EXIT;
END;
IF (ME='K') OR (ME='k') THEN BEGIN
CLRSCR; CLEARDEVICE;
KONIEC;
DELAY(3000);
EXIT;
END;
REPEAT UNTIL KEYPRESSED;
END.