ニコニコにあげた動画(プチコンでテトリス2)が監視されてたみたいです。少なくとも存在を察知されていた模様。似て非なるものにしてたつもりが。。
そういえば一時期「この動画は三原によって監視されています」ってタグがついてました(今は消えてます)。
変なことにならないようにしないと。
どこかにありそうなゲーム画面 |
上がプチコン、下の">"以降がプログラム実行結果 |
CLEAR DIM RP$(127),RPA(127),RPW$(127) LMAX=5 _PAR0=1 _PARC=2 _OPE=3 _NUM=4 @IN LINPUT ">";I$ IX=0:IE=LEN(I$)-1:B$="":ER=0 RPSP=0:RPWSP=0 @LOOP C$=MID$(I$,IX,1) IF C$==" " THEN GOTO @LSKP ATR=_NUM IF IX==0 AND C$=="-" THEN GOSUB @NUM IF (PRE==_PARC OR PRE==_OPE) AND C$=="-" THEN GOSUB @NUM IF C$>="0" AND C$<="9" THEN GOSUB @NUM ATR=_PARO IF C$=")" THEN GOSUB @PARCLOSE ATR=_PARC IF C$="(" THEN GOSUB @PAROPEN ATR=_OPE IF C$="*" THEN GOSUB @OPE IF C$="/" THEN GOSUB @OPE IF C$="^" THEN GOSUB @OPE IF C$="%" THEN GOSUB @OPE IF C$="+" THEN GOSUB @OPE IF C$="-" THEN GOSUB @OPE @LSKP IX=IX+1:IF IX<=IE GOTO @LOOP GOSUB @OPEEND GOSUB @CALC ?"=";A$ GOTO @IN @NUM A$=C$ @NUMLP C$=MID$(I$,IX+1,1) IF C$>="0" AND C$<="9" THEN A$=A$+C$:IX=IX+1:GOTO @NUMLP IF LEN(A$)>LMAX THEN ER=1:?"OVERFLOW ERROR":STOP IF ER=0 THEN GOSUB @RPPUSH C$="":PRE=ATR:RETURN @PAROPEN A$=C$:GOSUB @RPWPUSH C$="":PRE=ATR:RETURN @PARCLOSE IF RPWSP=0 THEN RETURN PRE=ATR GOSUB @RPWPOP IF A$=="(" THEN RETURN GOSUB @RPPUSH IF RPWSP>0 GOTO @PARCLOSE RETURN @OPE IF RPWSP<1 GOTO @OPEPUSH @OPEPUSHW A$=C$:GOSUB @RPWPUSH C$="":PRE=ATR:RETURN @OPEEND IF RPWSP==0 THEN RETURN GOSUB @RPWPOP GOSUB @RPPUSH IF RPWSP>0 GOTO @OPEEND RETURN @OPEPR PR=255 IF A$=="^" THEN PR=1 IF A$=="%" THEN PR=2 IF A$=="*" THEN PR=2 IF A$=="/" THEN PR=2 IF A$=="+" THEN PR=3 IF A$=="-" THEN PR=3 RETURN @CALC SP=0:RPWSP=0 @CALCLP A$=RP$(AP):ATR=RPA(SP) IF ATR==_NUM THEN GOSUB @RPWPUSH:GOTO @CALCSKP B$=A$ GOSUB @RPWPOP:A2=VAL(A$) GOSUB @RPWPOP:A1=VAL(A$) IF B$=="*" THEN A0=A1*A2 IF B$=="/" THEN GOSUB @CALCDIV IF B$=="^" THEN GOSUB @CALCPOW IF B$=="%" THEN A0=A1%A2 IF B$=="+" THEN A0=A1+A2 IF B$=="-" THEN A0=A1-A2 A$=STR$(A0):GOSUB @RPWPUSH @CALCSKP SP=SP+1 IF SPちなみにプログラム名はRPCALC1。その名の通り、逆ポーランド記法(Reverse Polish Notation)を使ってます。おかしいところがあったらすいません。 以下ページを見ながら作りました。非常に分かりやすい説明なので作りやすいのでは。 ところでLINPUTを初めて使いましたが、入力は32桁まででした。これ以上を実現しようとすると、INKEY$/BUTTON/タッチスクリーンとかで自作?0 THEN FOR I=1 TO A2:A0=A0*A1:NEXT RETURN @RPPUSH IF RPSP>127 THEN ER=1:?"RP STACK OVERFLOW":STOP IF ER==0 THEN RP$(RPSP)=A$:RPA(RPSP)=ATR:RPSP=RPSP+1 RETURN @RPPOP RPSP=RPSP-1:IF RPSP<0 THEN ER=1:?"RP STACK OVERFLOW":STOP IF ER==0 THEN RPW$(RPSP)=A$:RPSP=RPSP+1 RETURN @RPWPUSH IF PRWSP==127 THEN ER=3:?"ERR:RPW STACK OVERFLOW":STOP IF ER==0 THEN RPW$(RPWSP)=A$:RPWSP=RPWSP+1 RETURN @RPWPOP RPWSP=RPWSP-1:IF RPWSP<0 THEN ER=4:?"ERR:RPWSP -":STOP IF ER==0 THEN A$=RPW$(RPWSP): RETURN
----- 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」の長い計算式は折り返しなしです。
CLEAR:CLS結果:158
A=0
T=MAINCNTL
FOR I=0 TO 9999
LOCATE 0,0
?A;
NEXT
?MAINCNTL-T
CLEAR:CLS結果:162
ABCDEFGH=0
T=MAINCNTL
FOR I=0 TO 9999
LOCATE 0,0
?ABCDEFGH;
NEXT
?MAINCNTL-T
CLEAR:CLS結果:19
T=MAINCNTL
FOR I=0 TO 9999
NEXT
?MAINCNTL-T
CLEAR:CLS結果:2463
T=MAINCNTL
FOR I=0 TO 9999
?0
NEXT
?MAINCNTL-T
CLEAR:CLS結果:376
T=MAINCNTL
FOR I=0 TO 9999
?0;
NEXT
?MAINCNTL-T
CLEAR:CLS結果:160
T=MAINCNTL
FOR I=0 TO 9999
LOCATE 0,0
?0
NEXT
?MAINCNTL-T
CLEAR:CLS結果:152
T=MAINCNTL
FOR I=0 TO 9999
LOCATE 0,0
?0;
NEXT
?MAINCNTL-T
CLEAR:CLS結果:2500
T=MAINCNTL
FOR I=0 TO 9999
LOCATE 31,23
?0;
NEXT
?MAINCNTL-T
CLEAR:CLS結果:152
T=MAINCNTL
FOR I=0 TO 9999
LOCATE 0,0
PRINT 0;
NEXT
?MAINCNTL-T
CLEAR:CLS結果:158
A=0
T=MAINCNTL
FOR I=0 TO 9999
LOCATE 0,0
?A;
NEXT
?MAINCNTL-T
CLEAR:CLS結果:167
A(0)=0
T=MAINCNTL
FOR I=0 TO 9999
LOCATE 0,0
?A(0);
NEXT
?MAINCNTL-T
CLEAR:CLS結果:172
A(0,0)=0
T=MAINCNTL
FOR I=0 TO 9999
LOCATE 0,0
?A(0,0);
NEXT
?MAINCNTL-T
---TIMER INTERRUPT TEST CLEAR:CLS I1=10 I2=20 I3=10 T1=MAINCNTL T2=MAINCNTL T3=MAINCNTL ' @MAIN IF MAINCNTL-T1>I1 THEN GOSUB @INT1:T1=MAINCNTL IF MAINCNTL-T2>I2 THEN GOSUB @INT2:T2=MAINCNTL IF MAINCNTL-T3>I3 THEN GOSUB @INT3:T3=MAINCNTL GOTO @MAIN ' @INT1 LOCATE 10,10:?"★" RETURN @INT2 LOCATE 10,10:?" " RETURN @INT3 BEEP RND(64) RETURN ---I1〜3 ... 割り込みタイミング
DSiへ移植されたYOPPALの図 |
---PRG:YOPPAL ‘*** YOPPAL for DSi *** CLEAR DIM P(14) VISIBLE 1,1,1,1,1,1 CLS:GCLS:SPCLR CHRINIT “BGF0” CHRINIT “BGU3” GOSUB @PALINIT GOSUB @PALSET CHRSET “BGU3”,0,”1571000055570000455500001451000000000000000000000000000000000000” RESTORE @NOTEDAT:FOR I=0 TO 13:READ P(I):NEXT I RESTORE @SCENEDAT:FOR I=1 TO 7:READ O$(I):NEXT I @NEWGAME O=1:U=0 @MAIN GCLS 0 FOR I=0 TO 1 FOR J=0 TO 63 GPUTCHR J*4,I*180,”BGU3”,0,0,1 NEXT FOR J=1 TO 44 GPUTCHR I*252,J*4,”BGU3”,0,0,1 NEXT NEXT A$=O$(O) FOR I=0 TO 3:B=VAL(“&H”+MID$(A$,I*2,2)):G=128 FOR J=1 TO 6:iF B>=G THEN GOSUB @WALLTATE:B=B-G G=FLOOR(G/2):NEXT J NEXT I FOR I=0 TO 4:B=VAL(“&H”+MID$(A$,I*2+8,2)):G=128 FOR J=1 TO 6:IF B>=G THEN GOSUB @WALLYOKO:B=B-G G=FLOOR(G/2):NEXT J NEXT I GFILL 252,148,255,179,10:’GOAL X=20:Y=164:Z=3.5:V=0:W=0:OX=X:OY=Y:GCOLOR 3:GPSET X,Y A$="SCENE["+STR$(O)+"]":GX=0:GY=185:GOSUB @GPRINT @PLAY B=BUTTON():S=B AND 15:U=U+1 IF S AND 4 THEN V=V-0.5:IF V<=-Z THEN V=-Z IF S AND 8 THEN V=V+0.5:IF V>=Z THEN V=Z IF B AND 16 THEN W=W-2:IF W<-3 THEN W=-3 W=W+1:IF W>3 THEN W=3 X=X+V:Y=Y+W:I=GSPOIT(X,Y) GLINE OX,OY,X,Y:OX=X:OY=Y VSYNC 3 IF I==0 OR I==3 GOTO @PLAY IF I==10 THEN P$=“O6CDEFC”:GOSUB @MML:O=O+1 IF I!=10 THEN P$=“O5GFEDC”:GOSUB @MML IF O==8 GOTO @ALLCLEAR GOTO @MAIN @ALLCLEAR A$=“:TIME[“+STR$(U)+”]”:GX=64:GY=185:GOSUB @GPRINT P$=“DEGCDEGEDC”:GOSUB @MML FOR I=0 TO 1 GLINE X,Y,RND(255),RND(184),RND(16) I=BUTTON() AND 15 VSYNC 2 NEXT:GOTO @NEWGAME @MML ‘OCTAVE=O3~O6 ‘CDEFGABC,# M=0 @MMLLOOP ML=1 N=ASC(MID$(P$,M,1))-ASC(“A”) NN$=“”:IF M<LEN(P$)-1 THEN NN$=MID$(P$,M+1,1) IF NN$=“#” THEN ML=2:N=N+8 IF N==14 AND NN$=“” GOTO @NEXTMML IF N==14 THEN ML=2:OCT=(VAL(NN$)-3)*4096-8192:GOTO @NEXTMML @PLAYMML BEEP 0,FLOOR(OCT+341.3*P(N)+0.5) VSYNC 5 @NEXTMML M=M+ML IF M<LEN(P$) GOTO @MMLLOOP RETURN @GPRINT FOR M=0 TO LEN(A$)-1 GPUTCHR GX+M*8,GY,"BGF0",ASC(MID$(A$,M,1)),0,1 NEXT M:RETURN @WALLYOKO FOR W=0 TO 9 GPUTCHR J*36+W*4,I*36+36,”BGU3”,0,0,1 NEXT W:RETURN @WALLTATE FOR W=0 TO 9 GPUTCHR J*36,I*36+W*4,”BGU3”,0,0,1 NEXT W:RETURN @PALINIT FOR M=0 TO 15 COLINIT “BG”,M COLINIT “SP”,M COLINIT “GRP”,M NEXT M:RETURN @PALSET RESTORE @PALDAT FOR M=0 TO 15:READ C$ COLSET “BG”,M,C$ COLSET “GRP”,M,C$ NEXT M:RETURN @NOTEDAT DATA 9,11,0,2,4,5,7 DATA 10,11,1,3,4,6,8 @PALDAT DATA 000000,000000,24DB24,6DFF6D DATA 2424FF,496DFF,B62424,49DBFF DATA FF2424,FF6D6D,DBDB24,DBDB92 DATA 249224,DB49B6,B6B6B6,FFFFFF @SCENEDAT DATA 4450047C00FCFC DATA 7C381C3E0084C4C080 DATA 7C3E4C980080A06444 DATA 7CF24C860008287050 DATA 64384C861094A47050 DATA 70EC5820081424AC94 DATA 1C6ED00840A0286CA4 ---もし奇特にも約140行を打ち込まれて、動かなかったり、変な動きをするようでしたら、DSからの転記ミスなので教えてください。
--- CHRINIT "BGF3" CHRSET “BGU3”,0,”1571000055570000455500001451000000000000000000000000000000000000” GCLS 0 FOR I=0 TO 1 FOR J=0 TO 63 GPUTCHR J*4,I*180,”BGU3”,0,0,1 NEXT FOR J=1 TO 44 GPUTCHR I*252,J*4,”BGU3”,0,0,1 NEXT NEXT ---
--- GPAGE 0:GCLS 0:O=1 A$="SCENE["+STR$(O)+"]":GX=0:GY=185:GOSUB @GPRINT END @GPRINT FOR M=0 TO LEN(A$)-1 GPUTCHR GX+M*8,GY,"BGF0",ASC(MID$(A$,M,1)),0,1 NEXT M RETURN ---
太字、イタリック体。記号は見にくい... |
---PRG:COLORFNT
CHRINIT "BGF0"
CL$="FCC88888"
IT$="22111000"
CLS
FOR C=0 TO 255
LOCATE 0,0:PRINT 255-C;" ";
CHRREAD("BGF0",C),C$
N$=""
FOR I=0 TO 7
F$=""
FOR J=0 TO 7
T$=MID$(C$,I*8+J,1):E$=T$
IF T$=="F" THEN E$=MID$(CL$,I,1):F$=""
'BOLD
IF T$=="F" AND J<7 THEN F$=E$
IF T$!="F" AND F$!="" THEN E$=F$:F$=""
'
D$=D$+E$
NEXT
'ITALIC
K=VAL(MID$(IT$,I,1))
IF K>0 THEN FOR L=1 TO K:D$="0"+D$:NEXT
D$=MID$(D$,0,8)
N$=N$+D$
'
D$=""
NEXT
CHRSET "BGF0",C,N$
NEXT
------ COLSET "BG",225,"2424FF" COLSET "BG",239,"2424FF" ---
元MSXユーザにはぐっとくる画面 |
元に戻すときは
--- COLINIT "BG",225 COLINIT "BG",239 ---
---PRG:CHR CLS:CLEAR ?" 0123456789ABCDEF":? FOR I=0 TO 15:A$=HEX$(I)+" " FOR J=0 TO 15:A$=A$+CHR$(I*16+J) NEXT J:?A$ NEXT I ---
回るつぼ |
CLEAR:CLS VISIBLE 1,1,1,1,1,1 ’SETUP DIM DX(361),DY(361) SS=0:SX=32:SY=32:SZ=200 W=FLOOR(8*SZ/100+0.5) R=W*SQR(2) PX=SX+W:PY=SY+W FOR I=0 TO 360 DG=I+45 IF DG>=360 THEN DG=DG-360 DX=FLOOR(COS(RAD(DG))*R+0.5) DY=FLOOR(SIN(RAD(DG))*R+0.5) DX(I)=DX:DY(I)=DY NEXT ’DISP SPCLR SPSET SS,60,0,0,0,2 SPSCALE SS,SZ SPOFS SS,SX,SY ST=5 FOR I=0 TO 360 STEP ST A=I:S=SS:X=100:Y=100 GOSUB @PUTSP VSYNC 1 NEXT END @PUTSP SPOFS S,X+W-DX(A),Y+W-DY(A) SPANGLE S,A,1 RETURN