언어 자료구조 알고리즘/C언어 예제

[C언어 소스] 디지털 시계

언제나휴일 2016. 4. 3. 15:24
반응형

[C언어 소스] 디지털 시계



디지털 시계.c


#include <Windows.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>
 
char*digits[10][5][4]=//0~9까지 출력할 정보
{
    {
        {
"■","■","■","■"},
        {
"■","  ","  ","■"},
        {
"■","  ","  ","■"},
        {
"■","  ","  ","■"},
        {
"■","■","■","■"}
    },
    {
        {
"  ","  ","  ","■"},
        {
"  ","  ","  ","■"},
        {
"  ","  ","  ","■"},
        {
"  ","  ","  ","■"},
        {
"  ","  ","  ","■"}
    },
    {
        {
"■","■","■","■"},
        {
"  ","  ","  ","■"},
        {
"■","■","■","■"},
        {
"■","  ","  ","  "},
        {
"■","■","■","■"}
    },
    {
        {
"■","■","■","■"},
        {
"  ","  ","  ","■"},
        {
"■","■","■","■"},
        {
"  ","  ","  ","■"},
        {
"■","■","■","■"}
    },
    {
        {
"■","  ","■","  "},
        {
"■","  ","■","  "},
        {
"■","■","■","■"},
        {
"  ","  ","■","  "},
        {
"  ","  ","■","  "}
    },
    {
        {
"■","■","■","■"},
        {
"■","  ","  ","  "},
        {
"■","■","■","■"},
        {
"  ","  ","  ","■"},
        {
"■","■","■","■"},
    }, 
    {
        {
"■","  ","  ","  "},
        {
"■","  ","  ","  "},
        {
"■","■","■","■"},
        {
"■","  ","  ","■"},
        {
"■","■","■","■"}
    },
    {
        {
"■","■","■","■"},
        {
"■","  ","  ","■"},
        {
"■","  ","  ","■"},
        {
"  ","  ","  ","■"}, 
        {
"  ","  ","  ","■"}
    },
    {
        {
"■","■","■","■"},
        {
"■","  ","  ","■"},
        {
"■","■","■","■"},
        {
"■","  ","  ","■"},
        {
"■","■","■","■"}
    },
    {
        {
"■","■","■","■"},
        {
"■","  ","  ","■"},
        {
"■","■","■","■"},
        {
"  ","  ","  ","■"},
        {
"  ","  ","  ","■"}
    }
};
 
int sx[6]={0,10,24,34,48,58};//시분초를 출력할 x좌표 
 
char *colons[5]={ " ","■","  ","■","  "}; 
int sx2[6]={20,44};//콜론을 출력할 좌표
 
void gotoxy(int x,int y)
{
    COORD Pos = {x,y};
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);
}
 
 
//dn자리에 정수 n 출력하는 함수
void DrawNum(int dn,int n)
{
    
int y,x;
 
    
for(y=0;y<5;y++)
    {
        
for(x=0;x<4;x++)
        {
            gotoxy(sx[dn]+x*2,y);
            printf(
"%s",digits[n][y][x]);
        }
        printf(
"\n");
    }
}
 
 
//콜론을 출력하는함수 n 0이면 시와 분사이, 1이면 분과 초사이
void DrawColon(int n)
{
    
int y=0;
 
    
    
for(y=0;y<5;y++)
    {
        gotoxy(sx2[n],y);
        printf(
"%s\n",colons[y]);
    }
 
}
 
 
//시간을 출력하는함수
void DrawTime(int h,int m,int s)
{
    DrawNum(0,h/10);
//시의 앞자리
    DrawNum(1,h%10);
//시의 뒷자리
    DrawColon(0);
//콜론
    DrawNum(2,m/10);
//분의 앞자리
    DrawNum(3,m%10);
//분의 뒷자리
    DrawColon(1);
//콜론
    DrawNum(4,s/10);
//초의 앞자리
    DrawNum(5,s%10);
//초의 뒷자리
}
 
int main(void)
{
    time_t now,before;
    
struct tm nt;
 
    gotoxy(0,8);
    printf(
"아무키나 누르면 프로그램 종료");
    
    now = before = time(0); 
// 단위 시간을 구함
    localtime_s(&nt,&now); 
//지역 시각을 구함
    DrawTime(nt.tm_hour,nt.tm_min,nt.tm_sec);
//현재 시각을 출력
    
while(kbhit()==0)
    {
        now = time(0);
//초단위 시간을 구함
        
if(now != before)//다르면
        {
            before = now;
//현재 초단위 시간을 기억
            localtime_s(&nt,&now);
//지역 시각을 구함
            DrawTime(nt.tm_hour,nt.tm_min,nt.tm_sec);
//현재 시각을 출력
        }
    }
    
    
return 0;
}

 

반응형