GUST NOTCH? DIARY

100行プログラムに挑戦

電車の中でスマートフォンでこんなアプリをやってる人を見かけた。これならベースは簡単に作れると思って作ってみたら84行でできた。ちょっと手直しして93行になった。
せっかくなので、一行の幅が一画面内に収まるようにもしてみた。そのため、一行で書ける部分を5行かけたりしている。

  • 12(twelve) TOUCH
    • 1から12の数字を順に押してそのタイムを出すだけのプログラム



自己ベストは3秒20。ボタンの数字の視認性がよくないせいかもしれない。でも、準備されてるスプライトをそのまま使ったのでこれで勘弁。
以下にプログラムをテキストでも置いときます。エディタにコピーしてみてください。


REM 12(twelve) TOUCH
REM by @gust_notch
REM 2011-07-31
' CLEAR
CLEAR:VISIBLE 1,1,0,0,1,1
PNLTYPE "OFF"
GPAGE 1:GCLS:SPPAGE 1:SPCLR
B$=""
FOR I=0 TO 31:B$=B$+" ":NEXT
PNLSTR 0,23,B$
' INIT
DIM BTN(12),SP(12)
FOR I=0 TO 11:BTN(I)=-1:NEXT
FOR I=0 TO 11
@SET
R=RND(12)
IF BTN(R)!=-1 THEN @SET
BTN(R)=I
SP(I)=I
SPSET I,49+I,0,0,0,0
SPOFS I,-100,-100
NEXT
' COUNT DOWN
VSYNC 30
FOR I=3 TO 1 STEP -1
SPOFS SP(I-1),128-16,96-16
SPSCALE SP(I-1),200
SPOFS SP(I-1),128-8,96-8,60
SPSCALE SP(I-1),0,60
BEEP 0,8192
VSYNC 60
NEXT
' SHOW BUTTONS
FOR I=0 TO 11
X=(I%4):Y=FLOOR(I/4)
X1=X*64:Y1=Y*64
X2=X1+56:Y2=Y1+56
GFILL X1,Y1,X2,Y2,4
SPOFS BTN(I),X1+12,Y1+12
SPSCALE BTN(I),200
NEXT
' MAIN
C=0:TS=MAINCNTL
@LOOP
IF TCHST==1 THEN GOSUB @CHK
IF C==12 THEN @E
GOSUB @TM:PNLSTR 8,23,T$
GOTO @LOOP
' CHECK PRESSED
@CHK
FOR I=0 TO 11
X=(I%4):Y=FLOOR(I/4)
X1=X*64:Y1=Y*64
X2=X1+56:Y2=Y1+56
IF TCHXX2 THEN @N
IF TCHYY2 THEN @N
IF BTN(I)==C THEN GOSUB @P
@N
NEXT
RETURN
' PRESSED
@P
BEEP 7
C=C+1
GFILL X1,Y1,X2,Y2,1
SPOFS BTN(I),X1+24,Y1+24,10
SPSCALE BTN(I),0,10
RETURN
' END
@E
GOSUB @TM
? T$
VSYNC 30
END
' TIME
@TM
TE=MAINCNTL
T=TE-TS
MS=T%60
S=FLOOR(T/60)%60
M=FLOOR(T/60/60)%60
T$="TIME = "
V=M:GOSUB @FMT:T$=T$+V$+":"
V=S:GOSUB @FMT:T$=T$+V$+"."
V=MS:GOSUB @FMT:T$=T$+V$
RETURN
' FORMAT VALUE
@FMT
V$=STR$(V)
IF LEN(V$)==1 THEN V$="0"+V$
RETURN