20年前の2003/5/28、株式会社jig.jpが誕生しました。ありがとう、20周年。記念にIchigoJam BASICでjig.jpロゴパズルを作りました。
メイキング。まずはjig.jpロゴを設計。配列に横幅-1、縦幅-1、アルファベットを使った16進法でビットパターンを定義。
10 LET[0],1,4,"CCCCD",0,0,"B",0,2,"BBB",0,0,"B",3,4,"PFHEH",0,0,"B",1,4,"CCCCD",0,0,"B",2,4,"HFHBB"
表示サブルーチン@PUTを作って、テスト表示。
10 LET[0],1,4,"CCCCD",0,0,"B",0,2,"BBB",0,0,"B",3,4,"PFHEH",0,0,"B",1,4,"CCCCD",0,0,"B",2,4,"HFHBB" 20 CLS:X=3:Y=5:FORI=0TO8:N=I:O=1:GSB@PUT:WAIT30:X=X+[N*3]+2:NEXT 30 END 100 @PUT:FORL=0TO[N*3+1]:C=PEEK([N*3+2]+L)-65:FORM=0TO[N*3]:IFC>>M&1LCX+M,Y+L:IFO?CHR$(3-!!SCR()*2);:ELSE?CHR$(!!SCR()*3) 110 NEXT:NEXT:RTN
カーソルキーで動かせるようにします。スペースキーでパーツ選択。これでロゴができます。
10 LET[0],1,4,"CCCCD",0,0,"B",0,2,"BBB",0,0,"B",3,4,"PFHEH",0,0,"B",1,4,"CCCCD",0,0,"B",2,4,"HFHBB" 15 CLS:O=1:X=1:Y=5:FORI=0TO8:LET[27+I*2],X,Y:N=I:GSB@PUT:X=X+[N*3]+2:NEXT:N=0 45 X=[27+N*2]:Y=[28+N*2] 50 K=INKEY():IF!KCONT 60 IFK=32LET[27+N*2],X,Y:N=(N+1)%9:GOTO45 65 O=0:GSB@PUT 70 X=X-(K=28)+(K=29):Y=Y-(K=30)+(K=31) 80 O=1:GSB@PUT 90 GOTO50 100 @PUT:FORL=0TO[N*3+1]:C=PEEK([N*3+2]+L)-65:FORM=0TO[N*3]:IFC>>M&1LCX+M,Y+L:IFO?CHR$(3-!!SCR()*2);:ELSE?CHR$((SCR()=1)*3); 110 NEXT:NEXT:RTN
上下左右で動かして・・・
jig.jpロゴはこの配置!
更に、プログラムを改造して、エンターキーで回転に対応すると、長方形に収めるパズルのできあがり!
10 LET[0],1,4,"CCCCD",0,0,"B",0,2,"BBB",0,0,"B",3,4,"PFHEH",0,0,"B",1,4,"CCCCD",0,0,"B",2,4,"HFHBB" 15 CLS:R=0:O=1:X=4:Y=10:FORI=0TO8:LET[27+I*3],X,Y,R:N=I:GSB@PUT:X=X+[N*3]+2:NEXT:N=0 45 X=[27+N*3]:Y=[28+N*3]:R=[29+N*3] 50 K=INKEY():IF!KCONT 60 IF!F&&K=32LET[27+N*3],X,Y,R:N=(N+1)%9:GOTO45 65 O=0:GSB@PUT 66 R=(R+(K=10))%4 70 X=X-(K=28)+(K=29):Y=Y-(K=30)+(K=31) 80 O=1:GSB@PUT 90 GOTO50 100 @PUT:F=0:FORL=0TO[N*3+1]:C=PEEK([N*3+2]+L)-65:FORM=0TO[N*3]:IFC>>M&1=0:GOTO120 105 IFR=0LCX+M,Y+L 106 IFR=1LCX+L,Y-M 107 IFR=2LCX-M,Y-L 108 IFR=3LCX-L,Y+M 109 IFOIFSCR()F=1:?CHR$(1);:ELSE?CHR$(3); 110 IF!O?CHR$((SCR()=1)*3); 120 NEXT:NEXT:RTN
RUN on IchigoJam web
今の IchigoJam web ちょっと動作が遅いので、ぜひ IchigoJamの実機でどうぞ!IchigoJam R だとより快適です。
隠れた楽しいパターンが見つけた方、ご一報ください!
長方形にしてみよう!
プログラムは、652byte。残り、372byteとまだ余裕あり!