03/05/10 17:56
Qualcuno mi sa spiegare perchè non funzioni in modalità "Orologio analogico"?
program cronometro; uses wingraph,wincrt,sysutils,dos; const x_origine:integer = 320; y_origine:integer = 200; var sg,mg,scelta:integer; angolo_secondi,angolo_minuti,angolo_ore:real; s,h,m:integer; orario:string[8]; s_s,h_s,m_s:string[2]; secondi,minuti,ore,cento_secondi:word; var x_termine,y_termine:integer; procedure disegna_lancetta(angolo_in_gradi:real; colore:string); begin y_termine:=y_origine+trunc(sin(angolo_in_gradi*pi/180)*100); x_termine:=x_origine+trunc(cos(angolo_in_gradi*pi/180)*100); if colore='orange' then setcolor(orange) else if colore='red' then setcolor(red) else if colore='blue' then setcolor(blue) else writeln('ERRORE COLORE!'); line(x_origine,y_origine,x_termine,y_termine); end; procedure cancella_lancetta(angolo_in_gradi:real); begin setcolor(black); y_termine:=y_origine+trunc(sin(angolo_in_gradi*pi/180)*100); x_termine:=x_origine+trunc(cos(angolo_in_gradi*pi/180)*100); line(x_origine,y_origine,x_termine,y_termine); end; begin repeat for s:=0 to 23 do writeln(' '); writeln('1- OROLOGIO ANALOGICO 2- CRONOMETRO'); read(scelta); s:=0; until (scelta=1) or (scelta=2); if scelta=1 then begin gettime(ore,minuti,secondi,cento_secondi); s:=secondi; m:=minuti; h:=ore; angolo_secondi:=270+secondi*6; angolo_minuti:=270+minuti*0.1; angolo_ore:=270+(ore mod 12)*0.008333333; end else begin angolo_secondi:=270; angolo_minuti:=270; angolo_ore:=270; s:=0; m:=0; h:=0; orario:='00:00:01'; end; SetTextStyle(TimesNewRomanFont,90,4); sg:=detect; initgraph(sg,mg,'C:\FPC.4.0\units\i386-win32\wingraph'); circle(x_origine,y_origine,102); repeat angolo_secondi:=angolo_secondi+6; angolo_minuti:=angolo_minuti+0.1; angolo_ore:=angolo_ore+0.008333333; disegna_lancetta(angolo_secondi,'orange'); disegna_lancetta(angolo_minuti,'blue'); disegna_lancetta(angolo_ore,'red'); s:=s+1; if s<10 then s_s:='0'+inttostr(s) else s_s:=inttostr(s); if m<10 then m_s:='0'+inttostr(m) else m_s:=inttostr(m); if h<10 then h_s:='0'+inttostr(h) else h_s:=inttostr(h); orario:=h_s+':'+m_s+':'+s_s; setcolor(white); outtextxy(x_origine-300,y_origine,orario); if s=60 then begin s:=0; m:=m+1; end; if m=60 then begin m:=0; h:=h+1; end; delay(1000); cancella_lancetta(angolo_secondi); cancella_lancetta(angolo_minuti); cancella_lancetta(angolo_ore); setcolor(black); outtextxy(x_origine-300,y_origine+0,orario); until keypressed; closegraph; end.