Depois que converti para linguagem C, o relógio digital
criado originalmente em java, por mim mesmo, não parei nisto,
e pensei: "Ficaria ainda melhor se utilizasse
uma biblioteca gráfica no lugar do prompt de comando (cmd)"
e fazendo uso da mesma IDE, o eclipse é claro,
comecei novamente a programar, e escolhi a biblioteca
graphics.h, para os gráficos, e os resultados apresento
agora no vídeo abaixo, acompanhe:
Veja abaixo o vídeo do programa:
Veja abaixo o código do programa:
criado originalmente em java, por mim mesmo, não parei nisto,
e pensei: "Ficaria ainda melhor se utilizasse
uma biblioteca gráfica no lugar do prompt de comando (cmd)"
e fazendo uso da mesma IDE, o eclipse é claro,
comecei novamente a programar, e escolhi a biblioteca
graphics.h, para os gráficos, e os resultados apresento
agora no vídeo abaixo, acompanhe:
Veja abaixo o vídeo do programa:
Veja abaixo o código do programa:
#include <graphics.h>
#define ENTER 13
int Verifica_Horas ( );
int Verifica_Minutos ( );
int Verifica_Segundos (
);
static int hora = -1, min, seg;
char buf [ 10 ];
char buf_1 [ 10 ];
char buf_2 [ 10 ];
char buf_3 [ 10 ];
void imp_jan ( int x, int y, int lin, int col, int n ) {
for ( int i = 0; i <= n; i++ ) {
line ( x + i, y, x + i, y + lin );
line ( x + col + i, y, x + col + i, y + lin );
line ( x, y + i, x + col, y + i );
line ( x, y + i + lin, x + col + n, y + i + lin );
}
}
int main ( );
int lt = 0, y = 0;
int a = 0, b = 0, c = 0;
int Format ( char vet [ 50 ] ) {
int d = 0, i, i_ = 1, k = 0, t;
char letra = '\0';
for ( i = 0; i < 50; i++ )
vet [ i ] = ' ';
do {
setcolor ( 9 );
imp_jan ( 1, 96 * i_ - 97, 445, 580, 20 );
d++;
letra = getch ( );
vet [ k ] = letra;
k++;
t = strlen ( vet );
if ( a == 1 ){
Verifica_Horas ( );
setcolor ( LIGHTRED );
outtextxy ( 410, 70, vet );
}
if ( a == 2 ){
Verifica_Minutos ( );
setcolor ( LIGHTRED );
outtextxy ( 410, 100, vet );
}
if ( a == 3 ){
Verifica_Segundos ( );
setcolor ( LIGHTRED );
outtextxy ( 410, 130, vet );
}
if ( letra == ENTER ) {
break;
}
} while ( d < 50 );
return 0;
}
void Inform ( ) {
settextstyle ( GOTHIC_FONT, 0, 2 );
setcolor ( LIGHTBLUE );
outtextxy ( 130, 330, "Por: " );
setcolor ( WHITE );
outtextxy ( 200, 330, "Samuel Lima" );
setcolor ( LIGHTMAGENTA );
outtextxy ( 130, 350, "sa_sp10@hotmail.com" );
setcolor ( YELLOW );
outtextxy ( 170, 410, "MUITO
OBRIGADO" );
}
int acerta_hora ( ) {
if ( hora > 23 ) {
return true;
}
return false;
}
int acerta_min ( ) {
if ( min > 59 ) {
return true;
}
return false;
}
int acerta_seg ( ) {
if ( seg > 59 ) {
return true;
}
return false;
}
int Verifica_Horas ( ) {
cleardevice ( );
setcolor ( LIGHTRED );
moveto ( 160, 40 );
outtext ( "RELÓGIO
DIGITAL EM C" );
setcolor ( LIGHTBLUE );
outtextxy ( 230, 70, "Hora atual
=>" );
if ( ( hora >= 0 && hora <= 23 ) ) {
setcolor ( LIGHTRED );
sprintf ( buf_1, "%d", hora );
outtextxy ( 410, 70, buf_1 );
}
a = 1;
return 1;
}
int Verifica_Minutos ( ) {
setcolor ( LIGHTBLUE );
outtextxy ( 230, 100, "Minutos =>" );
if ( ( min >= 1 && min <= 59 ) ) {
setcolor ( LIGHTRED );
sprintf ( buf_1, "%d", min );
outtextxy ( 410, 100, buf_1 );
}
a = 2;
return 2;
}
int Verifica_Segundos (
) {
setcolor ( LIGHTBLUE );
outtextxy ( 230, 130, "Segundos =>" );
if ( ( seg >= 1 && seg <= 59 ) ) {
setcolor ( LIGHTRED );
sprintf ( buf_1, "%d", seg );
outtextxy ( 410, 130, buf_1 );
}
a = 3;
return 3;
}
int main ( ) {
int i_ = 1;
initwindow ( 600, 463, "RELÓGIO
DIGITAL EM C" );
settextstyle ( 10, 0, 2 );
int erro = 0;
char str_1 [ 4 ];
char str_2 [ 4 ];
char str_3 [ 4 ];
if ( hora == 0 )
hora = ' ';
do{
Verifica_Horas ( );
setcolor ( LIGHTRED );
Format ( str_1 );
hora = atoi ( str_1 );
if ( *str_1 < '0' || *str_1 > '9' || hora == -1 ) {
printf("%d", hora );
Beep ( 1000, 100 );
erro = 1;
if ( hora == 0 )
hora = ' ';
continue;
}
if ( acerta_hora ( ) ) {
Beep ( 1000, 100 );
erro = 1;
continue;
}
break;
} while ( ( hora < 0 || hora > 23 ) );
///////////////////////////////////////////////
do{
Verifica_Horas ( );
Verifica_Minutos ( );
if ( erro == 2 ) {
Verifica_Minutos ( );
}
setcolor ( LIGHTRED );
Format ( str_2 );
min = atoi ( str_2 );
if ( *str_2 < '0' || *str_2 > '9' || min == 0 ) {
Beep ( 1000, 100 );
erro = 2;
continue;
}
if ( acerta_min ( ) ) {
Beep ( 1000, 100 );
erro = 2;
continue;
}
break;
} while ( ( min < 1 || min > 59 ) );
////////////////////////////////////////////////
do{
Verifica_Horas ( );
Verifica_Minutos ( );
Verifica_Segundos ( );
if ( erro == 3 ) {
Verifica_Segundos ( );
}
setcolor ( LIGHTRED );
Format ( str_3 );
seg = atoi ( str_3 );
if ( *str_3 < '0' || *str_3 > '9' || seg == 0 ) {
Beep ( 1000, 100 );
erro = 3;
continue;
}
if ( acerta_seg ( ) ) {
Beep ( 1000, 100 );
erro = 3;
continue;
}
break;
} while ( ( seg < 1 || seg > 59 ) );
///////////////////////////////////////////////
cleardevice ( );
imp_jan ( 1, 96 * i_ - 97, 445, 580, 20 );
setcolor ( LIGHTRED );
moveto ( 170, 40 );
outtext ( "RELÓGIO
DIGITAL EM C" );
setcolor ( LIGHTBLUE );
outtextxy ( 130, 100, "Horas minutos segundos" );
setcolor ( WHITE );
outtextxy ( 160, 130, "H M S");
/*
Este laço repetidor funciona como
contador
Vai incrementando até que atinge
o número máximo
em cada operação.
*/
while ( 1 ) {
Sleep ( 1000 );
seg++;
if ( seg > 59 ) {
seg = 0;
min++;
}
if ( min > 59 ) {
min = 0;
hora++;
}
if ( hora > 23 ) {
hora = 0;
}
settextstyle ( 10, 0, 8 );
setcolor ( RED );
if ( ( hora >= 0 && hora <= 9 ) ){
outtextxy ( 100, 160, "0" );
sprintf ( buf_1, "%d", hora );
outtextxy ( 150, 160, buf_1 );
}
////////////////////////////////////
if ( ( hora >= 10 && hora <= 59 ) ){
sprintf ( buf_1, "%d", hora );
outtextxy ( 100, 160, buf_1 );
}
outtextxy ( 200, 160, ":" );
////////////////////////////////////
if ( ( min >= 0 && min <= 9 ) ){
outtextxy ( 240, 160, "0" );
sprintf ( buf_2, "%d", min );
outtextxy ( 290, 160, buf_2 );
}
if ( ( min >= 10 && min <= 59 ) ){
sprintf ( buf_2, "%d", min );
outtextxy ( 240, 160, buf_2 );
}
outtextxy ( 340, 160, ":" );
////////////////////////////////////
if ( ( seg >= 0 && seg <= 9 ) ){
outtextxy ( 390, 160, "0" );
sprintf ( buf_3, "%d", seg );
outtextxy ( 440, 160, buf_3 );
}
////////////////////////////////////
if ( ( seg >= 10 && seg <= 59 ) ){
sprintf ( buf_3, "%d", seg );
outtextxy ( 390, 160, buf_3 );
}
////////////////////////////////////
Inform ( );
}
}