100 SCREEN 0:T=-&H0.5:'<--- ねじれ具合(-0.5〜0.5) 110 ' 120 ' テクスチャの準備 130 ' 140 LINE (63,0)-(0,63),RGB(31,25,21) 150 FOR I=0 TO 30 160 PSET (RND(64),RND(64)),RGB(RND(32),RND(32),16+RND(16)): NEXT 170 FOR I=0 TO 1:FOR J=0 TO 1 180 GCOPY (0,0)-(63,63) TO (I*64,J*64):NEXT J,I 190 ' 200 ' ポリゴンの定義 210 ' 220 GOSUB *CHANGE_VTX 230 SETPOLYGON 0,5,0:FOR I=0 TO 4 240 SETPOLYGON,(I,(I+1)MOD 5,5+((I+1)MOD 5),5+I MOD 5): NEXT 250 SETTEX 0,64,64,32768: SETATR 0,100,(0,1,3,0,0,0) 260 OBJATR 1,0,0: OBJLINK 1,0: OBJTYPE 1,4 270 OBJ(1,@ZP)=-60:OBJ(1,@YRV)=.01 280 ' 290 ' パッド入力 (ねじれ具合とオブジェクトの位置の変更) 300 ' 310 *LOOP 320 I=(I+1)AND 63 330 GCOPY (I,I)-(I+63,I+63) TO TX$ 340 SETTEX 0,64,64,32768,RIGHT$(TX$,LEN(TX$)-4) 350 P=PAD(0,1) 360 IF P AND @PAD_LEFT AND T>-.5 THEN T=T-&H0.01:GOSUB *CHANGE_VTX 370 IF P AND @PAD_RIGHT AND T< .5 THEN T=T+&H0.01:GOSUB *CHANGE_VTX 380 IF P AND @PAD_UP THEN OBJ(1,@ZP)=OBJ(1,@ZP)+1 390 IF P AND @PAD_DOWN THEN OBJ(1,@ZP)=OBJ(1,@ZP)-1 400 VSYNC :GOTO *LOOP 410 ' 420 ' ねじれ具合を変更する 430 ' 440 *CHANGE_VTX 450 SETVERTEX 0,10 460 FOR J=0 TO 4:SETVERTEX (XSIN(J/5 )*60,-30,XCOS(J/5 )*60):NEXT 470 FOR J=0 TO 4:SETVERTEX (XSIN(J/5+T)*60, 30,XCOS(J/5+T)*60):NEXT 480 LOCATE 0,0:PRINT T;" " 490 RETURN