ニコニコにあげた動画(プチコンでテトリス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 SP0 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
ちなみにプログラム名はRPCALC1。その名の通り、逆ポーランド記法(Reverse Polish Notation)を使ってます。おかしいところがあったらすいません。
以下ページを見ながら作りました。非常に分かりやすい説明なので作りやすいのでは。
ところでLINPUTを初めて使いましたが、入力は32桁まででした。これ以上を実現しようとすると、INKEY$/BUTTON/タッチスクリーンとかで自作?
----- 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