= 소스 파일 = == main.cpp == === 말그대로 메인입니다..by.AllMemberz === {{{ #include #include "now_time.h" #include "alarmsetting.h" #include "cho.h" void main() { while(1) { now_time a; a.print_now_time(); system("cls"); cho b; b.setwatch(); system("cls"); alarmsetting c; c.alm_set(); } } }}} == now_time.cpp == === 시간을 표시합니다 by.[김상호], [김정욱] === {{{ /*********************************************************** * ////////현재시각표시////////// * * 아 진짜 고생 많이했다 ㅋㅋㅋㅋ * 숫자 크기 정하느라 황금비율 찾아봤다능... ;;( 1 : 1.618 이니까 5:8 이라능...) * 숫자 디자인 한참 고민했다능... ;; * 숫자 띄우느라 애먹었다능... ;; * 내 노력을 알아달라능...ㅡ,.ㅜ;; * By 컴공의 자랑 ***********************************************************/ #include #include #include #include #include #include "now_time.h" using namespace std; typedef enum { NOCURSOR, SOLIDCURSOR, NORMALCURSOR } CURSOR_TYPE; extern int ah; extern int am; extern int as; void gotoxy(int x, int y) { COORD Cur; Cur.X=x; Cur.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur); } void setcursortype(CURSOR_TYPE c) { CONSOLE_CURSOR_INFO CurInfo; switch (c) { case NOCURSOR: CurInfo.dwSize=1; CurInfo.bVisible=FALSE; break; case SOLIDCURSOR: CurInfo.dwSize=100; CurInfo.bVisible=TRUE; break; case NORMALCURSOR: CurInfo.dwSize=20; CurInfo.bVisible=TRUE; break; } SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&CurInfo); } void now_time::print_now_time() { char arr[10][8][16]={ // digit 노가다 {{" ■■■ "}, {"■ ■"}, {"■ ■"}, {"■ ■"}, // 디자인 수정의 편의성을 위해 세로로 길게 씀. {"■ ■"}, {"■ ■"}, {"■ ■"}, {" ■■■ "}}, {{" ■ "}, {" ■■ "}, {"■ ■ "}, {" ■ "}, {" ■ "}, {" ■ "}, {" ■ "}, {"■■■■■"}}, {{" ■■■ "}, {"■ ■"}, {"■ ■"}, {" ■"}, {" ■ "}, {" ■ "}, {" ■ "}, {"■■■■■"}}, {{" ■■■ "}, {"■ ■"}, {" ■"}, {" ■■ "}, {" ■"}, {" ■"}, {"■ ■"}, {" ■■■ "}}, {{" ■ "}, {" ■■ "}, {" ■ ■ "}, {"■ ■ "}, {"■■■■■"}, {" ■ "}, {" ■ "}, {" ■ "}}, {{"■■■■■"}, {"■ "}, {"■ "}, {" ■■■ "}, {" ■"}, {"■ ■"}, {"■ ■"}, {" ■■■ "}}, {{" ■■■ "}, {"■ "}, {"■ "}, {"■■■■ "}, {"■ ■"}, {"■ ■"}, {"■ ■"}, {" ■■■ "}}, {{"■■■■■"}, {"■ ■"}, {" ■"}, {" ■ "}, {" ■ "}, {" ■ "}, {" ■ "}, {" ■ "}}, {{" ■■■ "}, {"■ ■"}, {"■ ■"}, {" ■■■ "}, {"■ ■"}, {"■ ■"}, {"■ ■"}, {" ■■■ "}}, {{" ■■■ "}, {"■ ■"}, {"■ ■"}, {" ■■■■"}, {" ■"}, {" ■"}, {" ■"}, {" ■■■ "} } }; setcursortype(NOCURSOR); //커서를 숨긴다. time_t a; tm* b; int h,m,s; while(1){ char key; if(kbhit()) { key=getch(); if(key=='1') break; } system("cls"); gotoxy(24,2); // 땡땡( : ) 입력 cout<<"□"; gotoxy(24,5); cout<<"□"; gotoxy(52,2); cout<<"□"; gotoxy(52,5); cout<<"□"; time(&a); //시스템 시간 받아오기 b=localtime(&a); h = b->tm_hour; //시 m = b->tm_min; //분 s = b->tm_sec; //초 if((ah == h)&&(am==m)&&(as==s)) { printf("\a\a\a"); } int h10 = h/10; //시,분,초 각각의 10, 1의 자리 구하기 int h1 = h%10; int m10 = m/10; int m1 = m%10; int s10 = s/10; int s1 = s%10; for(int x=0;x<8;x++){ //위에서부터 한줄씩, 총 6줄 1초마다 출력 gotoxy(0,x); cout< #include #include #include cho::cho() { chk=0; clock2=0; prog_exit=false; } cho::~cho() { } void cho::setwatch() { std::cout<<"0 : 00 : 00"; char key=getch(); while(1) { if(prog_exit) break; //모드전환에 의한 if(chk==0) //0으로 멈춰 있는 상태 { if(key=='1') // 모드 전환 { prog_exit=true; } if(key=='3') //스탑워치 출발 { chk=1; Fulls=GetTickCount(); while(1) { clock=GetTickCount()-Fulls+clock2; rs=clock/1000; s=rs%60; m=clock/60000; rms=clock%1000; ms=rms/10; system("cls"); std::cout< #include #include #include #include"alarmsetting.h" using namespace std; struct altm{ int altm_hour; int altm_min; int altm_sec; }settm; int ah,am,as; void alarmsetting::alm_set() { char button; //버튼 임력할 변수 1,2,3중에.... struct altm settm; settm.altm_hour=00; settm.altm_min=00; settm.altm_sec=00; int* a; //설정 시간 위치 포인터 a=&settm.altm_hour;//첨엔 시간을 가리키고 있음 printf("■■ 알람 시간 설정 ■■\n"); printf("\n"); printf("%2d시%2d분%2d초\n",settm.altm_hour,settm.altm_min,settm.altm_sec); printf("\n"); printf("1:종료, 2:시간↑, 3:칸옮기기→\n"); printf("\n"); //printf("1:mode ,2:reset ,3:start/stop\n"); for(;;) { button=getch();//이제 버튼 선택을 받음... if(button=='1')break;//모드 전환 되게 루프 나가는 거임 if(button=='2'){//시간을 증가 시키는 경우. function으로 묶어 줘야 할듯... system("cls"); *a += 1; if(settm.altm_hour==25)settm.altm_hour=00; if(settm.altm_min==60)settm.altm_min=00; if(settm.altm_sec==60)settm.altm_sec=00; printf("■■ 알람 시간 설정 ■■\n"); printf("\n"); printf("%2d시%2d분%2d초\n",settm.altm_hour,settm.altm_min,settm.altm_sec); printf("\n"); printf("1:종료, 2:시간↑, 3:칸옮기기→\n"); printf("\n"); //printf("1:mode ,2:reset ,3:start/stop\n"); } if(button=='3'){//설정 시간 위치를 바꾸는 경우. 역시 function으로 묶어줘야 할듯.... system("cls"); if(a==&settm.altm_hour) a = &settm.altm_min; else if(a==&settm.altm_min) a = &settm.altm_sec; else if(a==&settm.altm_sec) a = &settm.altm_hour; printf("■■ 알람 시간 설정 ■■\n"); printf("\n"); printf("%2d시%2d분%2d초\n",settm.altm_hour,settm.altm_min,settm.altm_sec); printf("\n"); printf("1:종료, 2:시간↑, 3:칸옮기기→\n"); printf("\n"); //printf("1:mode ,2:reset ,3:start/stop\n"); } } system("cls"); if((settm.altm_hour==00)&&(settm.altm_min==00)&&(settm.altm_sec==00)){ printf("■■ 알람 설정 안됨ㅜ_ㅜ !■■\n"); } else { printf("■■ 알람 설정 완료ㅋ_ㅋ !■■\n"); printf("\n"); printf("설정한 알람은 %d시 %d분 %d초 입니다!\n",settm.altm_hour,settm.altm_min,settm.altm_sec); printf("\n"); ah = settm.altm_hour; am = settm.altm_min; as = settm.altm_sec; } //그 담에 원래 다음 화면으로 이동... } /*여기까진데, function 으로 묶어 주는 게 필요 할 것 같고 알람을 설정하는 위치가 어디인지도 좀 알려주는게 좋을 것 같다ㅎㅎ 깜빡이게 해서? */ }}} = 헤더 파일 = == now_time.h == {{{ #pragma once class now_time { public: void print_now_time(); }; }}} == cho.h == {{{ #pragma once class cho { private: int chk; int m,s,ms; int rs,rms; int clock; int clock2; int Fulls; bool prog_exit; public: void setwatch(); cho(); ~cho(); }; }}} == alarmsetting.h == {{{ #pragma once class alarmsetting { public: void alm_set(); }; }}} == alarm.h == === alarmsetting에서 now_time으로 넘기기 위해 사용 === {{{ #pragma once int alm_h; int alm_m; int alm_s; }}}