ACLS:GCLS 255:GPAGE 0,2,0:GCLS 255 CLEAR BGMPLAY 23 PNLTYPE "OFF" LOAD "GRP1:OCHAMRCT",0 LOAD "COL2:OCHAMRCT",0 LOAD "COL2L:OCHAMRCT",0 KX=8:PX=32:PY=12 CL=2:CA=60:RS=0.2 X=128:Y=96:PA=0 SP=0:SC=KX*PX IF SC>200THEN SC=200 SPSET 0,76,0,0,0,0 SPHOME 0,8,8 SPSCALE 0,SC SPANIM 0,4,6 SPOFS 0,KX*PX/2,192-SC/12.5 SPPAGE 1 SPSET 0,110,0,0,0,0 SPHOME 0,1,1 @LOOP B=BUTTON():T=TCHST:TX=TCHX:TY=TCHY IF B AND 4 THEN PA=(PA+355)%360 IF B AND 8 THEN PA=(PA+5)%360 IF B AND 16 THEN SP=SP+(SP<20) IF B AND 32 THEN SP=SP-(SP>-20) IF B AND 64 THEN SP=0 IF T THEN CA=0OR 90-(TCHY/3)+0.9:RS=POW(0.988,TCHX):CL=RS*10 C=2-C GOSUB @3DROTATE VX=SN*SP/16:VY=-CS*SP/16 SPANGLE 0,PA+45 SPOFS 0,X,Y GPAGE 1 IF GSPOIT(X+VX,Y+VY)<0THEN VX=0:VY=0:BEEP 1 X=X+VX:Y=Y+VY LOCATE 0,0:?"("0OR X","0OR Y") ソクド"SP" カクド"CA" サイズ"(0OR KX/RS+0.5),, FPS=FPS+1IF MAINCNTL-CNT>59THEN LOCATE 27,1?"FPS"FPS,:FPS=0CNT=MAINCNTL GOTO @LOOP @3DROTATE SN=SIN(RAD(PA)) CS=COS(RAD(PA)) SI=SIN(RAD(CA)) CO=COS(RAD(CA)) TA=TAN(RAD(90-CA)) MY=191 FOR I=1 TO PY DW=CL/I/RS-TA DX=CL/(DW+!DW) DY=DX*SQR(1+TA*TA) IF DY<0OR DY>512THEN DY=512 XR=(CL*SI+DX*TA)/CL*RS AX=X+SN*DY:AY=Y-CS*DY BX=CS*XR:BY=SN*XR CX=AX-BX*PX/2:CY=AY-BY*PX/2 FOR MX=0 TO (PX-1)*KX STEP KX GPAGE 1:G=GSPOIT(CX,CY) GPAGE 0,C,2-C GFILL MX,MY,MX+KX,MY-KX,G*(G>0) CX=CX+BX:CY=CY+BY NEXT MY=MY-KX NEXT RETURN |