[C언어 소스] 디지털 시계
언제나 휴일 티스토리
#include <Windows.h>
#include <stdio.h>
#include <time.h>
#include <conio.h>
#pragma warning(disable:4996)
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;
}
'C언어 > C언어 예제' 카테고리의 다른 글
[C언어 소스] 균형 원소 찾기 (0) | 2016.04.13 |
---|---|
[C언어 소스] 로또 발생기 (2) | 2016.04.13 |
[C언어 소스] 성적 관리 프로그램 - 이중 연결리스트 (0) | 2016.04.12 |
[C언어 소스] 성적 관리 프로그램 - 학생 데이터 동적 메모리 할당 (0) | 2016.04.12 |
[C언어 소스] 성적 관리 프로그램 - 동적 메모리 할당 (0) | 2016.04.12 |