Monday, September 19, 2011

プチコンでカレンダー

3DSはいろいろなソフトが添付されていて、本体だけでいろいろ遊べますが、なぜかカレンダーを見る機能が見あたりません。 なので、プチコンでカレンダーを作ってみます。とりあえず簡単なもので、今月のカレンダーを表示するもの。

リスト
-----
CLEAR:CLS
FOR I=0 TO 6:READ C(I):NEXT
DATA 13,15,15,15,15,15,11
W$="SUMOTUWETHFRSA"
DTREAD(DATE$),Y,M,DT:D=1
IF M<2 THEN Y=Y-1:M=M+12
W=(Y+FLOOR(Y/4)-FLOOR(Y/100)+FLOOR(Y/400)+FLOOR((13*M+8)/5)+7*(4*M+5)+D)%7
A=30+(M-(M>7))%2-2*(M==2)
IF M!=2 GOTO @A
IF Y%4==0 THEN A=29
IF Y%100==0 THEN A=28
IF Y%400==0 THEN A=29
@A
COLOR 15:?Y;"/";M
FOR I=0 TO 6:LOCATE 1+I*3,2
COLOR C(I):?MID$(W$,I*2,2)
NEXT
D=1:FOR I=W TO 42:D$=""
IF D>A GOTO @B
X=1+FLOOR(I%7)*3+(D<=9)
Y=FLOOR(I/7)*2+4:C=C(I%7)
LOCATE X,Y:COLOR C:?D:D=D+1
@B
NEXT
-----
※「W= ... %7」の長い計算式は折り返しなしです。

プログラムの流れ
・システム変数から年月を取得
・月頭の曜日を計算(ツェラーの公式)
・月の末日を計算
・カレンダーをprint

ちゃんとしたプログラムであれば、曜日や月の末日は配列をつかうとおもいます。