소스 파일 ¶
main.cpp ¶
말그대로 메인입니다..by.AllMemberz ¶
#include <windows.h>
#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 <iostream>
#include <time.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#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<<arr[h10][x];
gotoxy(12,x);
cout<<arr[h1][x];
gotoxy(28,x);
cout<<arr[m10][x];
gotoxy(40,x);
cout<<arr[m1][x];
gotoxy(56,x);
cout<<arr[s10][x];
gotoxy(68,x);
cout<<arr[s1][x];
}
Sleep(1000); //요게 1초씩 대기함 ( 말그대로 sleep!!. 밀리세컨드 이기 때문에 1000이라 씀)
}
}
cho.cpp ¶
초시계 의 몸통~ by.박재홍, 박정근 ¶
#include "cho.h"
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <windows.h>
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<<m<<" : "<<std::setw(2)<<std::setfill('0')<<s<<" : "<<std::setw(2)<<std::setfill('0')<<ms<<std::endl;
if(kbhit())
{
key=getch();
break;
}
}
}
}
if(chk==1) //스탑워치출발하고 있을때
{
if(key=='3') //일시정지
{
chk=2;
system("cls");
std::cout<<m<<" : "<<std::setw(2)<<std::setfill('0')<<s<<" : "<<std::setw(2)<<std::setfill('0')<<ms<<std::endl;
key=getch();
}
if(key=='1') // 모드 전환
{
prog_exit=true;
}
}
if(chk==2) //일시정지 상태일때
{
if(key=='2')
{
clock=0;
system("cls");
std::cout<<"0 : 00 : 00";
key=getch();
chk=0;
}
if(key=='1') // 모드 전환
{
prog_exit=true;
}
if(key=='3') // 일시정지 시점부터 다시시작
{
Fulls=GetTickCount();
while(1)
{
clock2=(GetTickCount()-Fulls)+clock;
rs=clock2/1000;
s=rs%60;
m=clock2/60000;
rms=clock2%1000;
ms=rms/10;
system("cls");
std::cout<<m<<" : "<<std::setw(2)<<std::setfill('0')<<s<<" : "<<std::setw(2)<<std::setfill('0')<<ms<<std::endl;
if(kbhit())
{
chk=1;
clock=clock2;
key=getch();
break;
}
}
}
if(key=='1') // 모드 전환
{
prog_exit=true;
}
}
}
}
alarmsetting.cpp ¶
알람을 설정함 by.김정혜, 윤종하 ¶
//made by 김정혜
//알람설정화면 10.07.15
//ver.노가다
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
#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;










