@PRTTEXT
RESTORE "@"+LBL$
FOR Z=0 TO 2
READ TXT$
READ CL$
FOR I=0 TO LEN(TXT$)-1
WAIT 2
FOR CLI=0TO 15
IF MID$(CL$,I,1)==HEX$(CLI)THEN CL=CLI
NEXT CLI
COLOR CL
PRINT MID$(TXT$,I,1);
NEXT I:PRINT:WAIT 2
NEXT Z
RETURN
@PRTTEXT
RESTORE "@"+LBL$
FOR Z=0 TO 2
READ TXT$
FOR I=0 TO LEN(TXT$)-1
WAIT 2
IF MID$(TXT$,I,1)=="&"THEN I=I+1:GOSUB@CL
COLOR CL
PRINT MID$(TXT$,I,1);
NEXT I:PRINT:WAIT 2
NEXT Z
RETURN
@CL
FOR CLI=0TO 15
IF MID$(TXT$,I,1)==HEX$(CLI)THEN CL=CLI
NEXT CLI
RETURN
@TXTDT0
DATA"テ&4ストダヨ-ン"
DATA"ア-ア-テストテスト"
DATA"テスタマン!?"
@PRTTEXT
RESTORE "@"+LBL$
FOR Z=0 TO 2
READ TXT$
FOR I=0 TO LEN(TXT$)-1
WAIT 2
IF MID$(TXT$,I,1)=="&"THEN I=I+1:GOSUB@CL
COLOR CL
PRINT MID$(TXT$,I,1);
NEXT I:PRINT:WAIT 2
NEXT Z
RETURN
@CL
FOR CLI=0TO 15
IF MID$(TXT$,I,1)==HEX$(CLI)THEN CL=CLI:I=I+1
NEXT CLI
RETURN
@TXTDT0
DATA"テ&4ストダヨ-ン"
DATA"ア-ア-テストテスト"
DATA"テスタマン!?"
SPHITでバグらしきものをみつけました。SPOFSでスプライトを移動しているときにSPHITで当たり判定をすると、たまにどうみても接触してないのにSPHITが1を返す事があります。
ACLS
GPAGE 0
SPPAGE 0:SPCLR
SPSET 0,0,0,0,0,0
A=0
@LOOP
ON A GOTO @0,@1
@0
SPOFS 0,RND(256),RND(192),30
A=1
GOTO @00
@1
IF SPCHK(0)==0 THEN A=0
@00
FOR I=0 TO 11
FOR J=0 TO 15
B=SPHITRC(0,16*J,16*I,15,15)
GFILL 16*J,16*I,16*J+15,16*I+15,B*15
NEXT
NEXT
GOTO @LOOP
SPHITRCとGFILLで当たり判定が見えるようにしたんですが、たまにスプライトのない所でも当たり判定が発生してしまいます。これはSPOFSの補間時間を1以上にした時に起きてるみたいです。
分かりにくかったらすいません。
>>418
もう>>419で既出ですが。。
IF ABS(MX-EX)<=15 AND ABS(MY-EY)<=15 THEN @OVER
16×16スプライトキャラのゲームなんかではこのようにしておいて、
判定厳しいときはキャラサイズ値”15”の数を減らしていけば、イイ感じ?
自機座標にオフセット値を追加すれば、キャラの中心辺りに判定を持ってこれます。
>>448
大体こんな感じ?
PNLTYPE "OFF"
ACLS:CLEAR:GPAGE 1
X1=50:Y1=50:X2=100:Y2=100
GFILL X1,Y1,X2,Y2,13
@LOOP
VSYNC 1
TX=TCHX:TY=TCHY
IF !TCHST GOTO @LOOP
X=TX>=X1 AND TX<=X2
Y=TY>=Y1 AND TY<=Y2
IF X AND Y THEN BEEP
GOTO @LOOP
>>450
検証用プログラムだよ。
CLEAR:ACLS:BEEP:WAIT 60
FOR I=0 TO 2READ B$(I):NEXT
FOR I=0 TO 767
C$=""FOR J=0 TO 2
C$=C$+HEX$(RND(256),2)NEXT
COLSET B$(I/256),I%256,C$
NEXT:DATA BG,SP,GRP