2012年7月10日火曜日

みんな暑そうだなー

どうも初めまして。かつおでございます。
今回僕の作成したちょっとシュールな時計プログラムを
紹介したいと思います。


#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void)
{
/* 数字&記号用アスキーアートを作成 */
char num0[5][7]={"000000",
"00  00",
"00  00",
"00  00",
"000000" };

char num1[5][7]={" 111  ",
"  11  ",
"  11  ",
"  11  ",
"111111" };

char num2[5][7]={"222222",
"    22",
"222222",
"22    ",
"222222" };

char num3[5][7]={"333333",
"    33",
"333333",
"    33",
"333333" };

char num4[5][7]={"44    ",
"44 4  ",
"44 4  ",
"444444",
"   4  " };

char num5[5][7]={"555555",
"55    ",
"555555",
"    55",
"555555" };

char num6[5][7]={"666666",
"66    ",
"666666",
"66  66",
"666666" };

char num7[5][7]={"777777",
"77  77",
"    77",
"    77",
"    77" };

char num8[5][7]={"888888",
"88  88",
"888888",
"88  88",
"888888" };

char num9[5][7]={"999999",
"99  99",
"999999",
"    99",
"999999" };
char num_colon[5][7] =
{"  **  ",
"  **  ",
"      ",
"  **  ",
"  **  " };
char num_slash[5][7] =
{"    **",
"   ** ",
"  **  ",
" **   ",
"**    " };

int i; /* ループカウンタ */
char *nump[12]; /* 各アスキーアート数字へのポインタ */
time_t t;                             /*時間を一時的に保存*/
struct tm *ltime;                 /* tm構造体へのポインタ */
int year; /* 西暦 */
int mon; /* 月   */
int mday; /* 日   */
int hour; /* 時   */
int min; /* 分   */
int sec; /* 秒   */
int oldsec=0; /* 一回前の秒数 */

/* 各アスキーアートの先頭アドレスをポインタ配列に格納 */
nump[0] = num0[0];
nump[1] = num1[0];
nump[2] = num2[0];
nump[3] = num3[0];
nump[4] = num4[0];
nump[5] = num5[0];
nump[6] = num6[0];
nump[7] = num7[0];
nump[8] = num8[0];
nump[9] = num9[0];
nump[10] = num_colon[0];
nump[11] = num_slash[0];

while(1){
while(sec == oldsec){
t = time(NULL);
ltime = localtime(&t); /* localtime()でstruct *tm型に変換 */
sec  = ltime->tm_sec;
}
system("cls");            /*スクリーンクリア*/
year = ltime->tm_year;
mon  = ltime->tm_mon + 1; /* tm_monは 0~11 */
mday = ltime->tm_mday;
hour = ltime->tm_hour;
min  = ltime->tm_min;
oldsec = sec;

/* 西暦(下2桁)、月、日 を表示 */
printf("\n");
for(i=0;i<=4;i++){
printf("%s %s ",nump[year / 10 % 10]+ i*7, nump[year % 10]+ i*7);
printf("%s ",nump[11]+ i*7);
printf("%s %s ", nump[mon / 10]+ i*7, nump[mon % 10]+ i*7);
printf("%s ",nump[11]+ i*7);
printf("%s %s ", nump[mday / 10]+ i*7, nump[mday % 10]+ i*7);
printf("\n");
}
printf("\n");
/* 時、分、秒 を表示 */
for(i=0;i<=4;i++){
printf("%s %s ", nump[hour / 10]+ i*7, nump[hour % 10]+ i*7);
printf("%s ",nump[10]+ i*7);
printf("%s %s ", nump[min / 10]+ i*7, nump[min % 10]+ i*7);
printf("%s ",nump[10]+ i*7);
printf("%s %s ", nump[sec / 10]+ i*7, nump[sec % 10]+ i*7);
printf("\n");
}
}
return 0;
}

このコードを実行すると何とも言えないシュールな時計が出来上がります。。。