今朝9時にダウンロード解禁となったプチコンを買いました。私は25歳ですし(元)マイコン族ではないのですが、BASICからプログラムを始めたようなものなので懐かしさを感じます。とりあえずFizzBuzzと跳ねるボールを組んでみたのでコードを晒しておきます。
FIZZBUZZ
通勤時間だいたい15分くらいで作成。IF〜ELSEで書くよりもシンプルに見えるのは気のせいでしょうか。
'FizzBuzz ' CLS CLEAR @START INPUT"MAX";MAX IF MAX<1 GOTO @START FOR I=0 TO MAX J=0 IF I%3 == 0 THEN J=1 IF I%5 == 0 THEN J=J+2 IF J == 0 THEN PRINT I IF J == 1 THEN PRINT"FIZZ" IF J == 2 THEN PRINT"BUZZ" IF J == 3 THEN PRINT"FIZZBUZZ" NEXT
BOUND BALL
画面をボールが跳ねます。それだけ。ボールの消去は空白をPRINTすることで行いました。重力を考慮するバージョンも作成しましたが、さすがにテキストではカクカクしてしまいます。
CLS CLEAR BALLS=20 WIDTH=30:HEIGHT=20 DIM BX(BALLS),BY(BALLS) DIM VX(BALLS),VY(BALLS) @INIT FOR I=0 TO BALLS-1 BX(I)=1+RND(WIDTH-1) BY(I)=1+RND(HEIGHT-1) VX(I)=RND(2)*2-1 VY(I)=RND(2)*2-1 NEXT FOR X=0 TO WIDTH+1 LOCATE X,HEIGHT+1 PRINT"■" NEXT FOR Y=0 TO HEIGHT LOCATE WIDTH+1,Y PRINT"■" NEXT @LOOP GOSUB @CLSCREEN GOSUB @MOVE GOSUB @DRAW VSYNC(8) GOTO @LOOP @CLSCREEN FOR I=0 TO BALLS-1 LOCATE BX(I),BY(I) PRINT" " NEXT RETURN @MOVE FOR I=0 TO BALLS-1 BX(I)=BX(I)+VX(I) BY(I)=BY(I)+VY(I) IF BX(I)==WIDTH THEN VX(I)=-1 IF BX(I)==0 THEN VX(I)=1 IF BY(I)==HEIGHT THEN VY(I)=-1 IF BY(I)==0 THEN VY(I)=1 NEXT RETURN @DRAW FOR I=0 TO BALLS-1 LOCATE BX(I),BY(I) PRINT"○" NEXT RETURN
単なるBASICプログラムのはずですが、DSiの2画面で動くというだけでかなりの楽しさが感じられるものですね。これはちょっとした驚きでした。