Module Cube3D { form 80, 32 smooth on // enable GDI+ smooth lines zoff=0.5773502691896257645091487805019574556@ cylr=1.6329931618554520654648560498039275946@ oX=scale.x div 2 : oY=scale.y div 2 SCALE=min.data(oX, oY)/2*.6 gradient 0 theta = 0.0 : dtheta = 1.5 : dt = 1000/60 ScZof=SCALE/zoff ScZofM=SCALE*zoff dim cylphi(), x() c =(PI/6, 5*PI/6, 3*PI/2, 11*PI/6, PI/2, 7*PI/6) : c*=180/Pi : cylphi()=c // cos() take Degree every DT { if mouse then (oX, oY)=(mouse.x,mouse.y) : dtheta*=1.05 else dtheta = 1.5 dim x(6)=oX : for i=0 to 5: x(i) += SCALE*cylr*cos(cylphi(i)+theta):next drawcube() : refresh 100 : IF keypress(32) then exit theta += dtheta : gradient 0, 5: cursor 0,0 Print "Press space to exit",,"Press any mouse button to move cube",,Time$(Now) } sub drawcube() for i= 0 to 2 move x(i), oY-ScZofM:draw to oX,oY-ScZof, 11 move oX,ScZof+oY:draw to x(i),oY-ScZofM, 9 move oX,oY+ ScZof:draw to x(5-i),ScZofM+oY move x(i),oY-ScZofM:draw to x(i mod 3 + 3),oY+ScZofM, 15 move oX,oY-ScZof:draw to x(i mod 3 + 3), oY+ScZofM, 7 move x(i),oY-ScZofM:draw to x((i+1) mod 3 + 3),oY+ScZofM, 13 next end sub } Cube3D