diff --git a/examples/5cubes.pas b/examples/5cubes.pas deleted file mode 100644 index edaecaa..0000000 --- a/examples/5cubes.pas +++ /dev/null @@ -1,253 +0,0 @@ -program five_cubes_in_a_row; -const MAX_Y = 400; - pi = 3.1415926; - -type pointtype = record x,y:integer end; - -var cube:array[1..6] of record - position:array[1..5] of record x,y,z:real end; - end; - c:char; - pcos,ncos,psin,nsin:real; - -procedure rotx(dir:integer); -var y1,z1:real;i,o:integer; -begin - if dir=1 then - for i:=1 to 6 do - for o:=1 to 5 do - begin - y1:=pcos*cube[i].position[o].y-psin*cube[i].position[o].z; - z1:=psin*cube[i].position[o].y+pcos*cube[i].position[o].z; - cube[i].position[o].y:=y1; - cube[i].position[o].z:=z1; - end - else - for i:=1 to 6 do - for o:=1 to 5 do - begin - y1:=ncos*cube[i].position[o].y-nsin*cube[i].position[o].z; - z1:=nsin*cube[i].position[o].y+ncos*cube[i].position[o].z; - cube[i].position[o].y:=y1; - cube[i].position[o].z:=z1 - end -end; - -procedure roty(dir:integer); -var x1,z1:real;i,o:integer; -begin - if dir=1 then - for i:=1 to 6 do - for o:=1 to 5 do - begin - x1:=pcos*cube[i].position[o].x-psin*cube[i].position[o].z; - z1:=psin*cube[i].position[o].x+pcos*cube[i].position[o].z; - cube[i].position[o].x:=x1; - cube[i].position[o].z:=z1; - end - else - for i:=1 to 6 do - for o:=1 to 5 do - begin - x1:=ncos*cube[i].position[o].x-nsin*cube[i].position[o].z; - z1:=nsin*cube[i].position[o].x+ncos*cube[i].position[o].z; - cube[i].position[o].x:=x1; - cube[i].position[o].z:=z1 - end -end; - -procedure rotz(dir:integer); -var y1,x1:real;i,o:integer; -begin - if dir=1 then - for i:=1 to 6 do - for o:=1 to 5 do - begin - y1:=pcos*cube[i].position[o].y-psin*cube[i].position[o].x; - x1:=psin*cube[i].position[o].y+pcos*cube[i].position[o].x; - cube[i].position[o].y:=y1; - cube[i].position[o].x:=x1; - end - else - for i:=1 to 6 do - for o:=1 to 5 do - begin - y1:=ncos*cube[i].position[o].y-nsin*cube[i].position[o].x; - x1:=nsin*cube[i].position[o].y+ncos*cube[i].position[o].x; - cube[i].position[o].y:=y1; - cube[i].position[o].x:=x1 - end -end; - -procedure display_cube(col:integer); -var i,o,a:integer;c:integer; - stran:array[1..4] of pointtype; - color:integer; -begin - for i:=1 to 6 do - if cube[i].position[5].z>0 then - with cube[i] do - begin - for a:=1 to 5 do - begin - if col>0 then c:=a else c:=0; - if((a=4)and(c>0))then color :=6 else color:= c; - for o:=1 to 4 do - begin - stran[o].x:=a*100+round(position[o].x); - stran[o].y:=MAX_Y div 2+round(position[o].y); - end; - drawline(stran[1].x,stran[1].y,stran[2].x,stran[2].y,color); - drawline(stran[2].x,stran[2].y,stran[3].x,stran[3].y,color); - drawline(stran[3].x,stran[3].y,stran[4].x,stran[4].y,color); - drawline(stran[4].x,stran[4].y,stran[1].x,stran[1].y,color); - end; - end; -end; - -procedure init; -var i,gm,gd:integer; - entrance:array[1..11]of integer; -begin - entrance := [ 1,2,3,4,5,20,7,56,57,58,59 ]; - InitGraphics; - ClearGraphics; - pcos:=cos(6*2*pi/360); - ncos:=cos(-6*2*pi/360); - psin:=sin(6*2*pi/360); - nsin:=sin(-6*2*pi/360); - setpalette(1,$700); - with cube[1] do - begin - position[1].x:=-25; - position[1].y:=-25; - position[1].z:=+25; - position[2].x:=+25; - position[2].y:=-25; - position[2].z:=+25; - position[3].x:=+25; - position[3].y:=+25; - position[3].z:=+25; - position[4].x:=-25; - position[4].y:=+25; - position[4].z:=+25; - position[5].x:=0; - position[5].y:=0; - position[5].z:=25; - end; - with cube[2] do - begin - position[1].x:=-25; - position[1].y:=-25; - position[1].z:=-25; - position[2].x:=+25; - position[2].y:=-25; - position[2].z:=-25; - position[3].x:=+25; - position[3].y:=-25; - position[3].z:=+25; - position[4].x:=-25; - position[4].y:=-25; - position[4].z:=+25; - position[5].x:=0; - position[5].z:=0; - position[5].y:=-25; - end; - with cube[3] do - begin - position[1].x:=-25; - position[1].y:=+25; - position[1].z:=+25; - position[2].x:=+25; - position[2].y:=+25; - position[2].z:=+25; - position[3].x:=+25; - position[3].y:=+25; - position[3].z:=-25; - position[4].x:=-25; - position[4].y:=+25; - position[4].z:=-25; - position[5].x:=0; - position[5].z:=0; - position[5].y:=25; - end; - with cube[4] do - begin - position[1].x:=-25; - position[1].y:=-25; - position[1].z:=-25; - position[2].x:=-25; - position[2].y:=-25; - position[2].z:=+25; - position[3].x:=-25; - position[3].y:=+25; - position[3].z:=+25; - position[4].x:=-25; - position[4].y:=+25; - position[4].z:=-25; - position[5].y:=0; - position[5].z:=0; - position[5].x:=-25; - end; - with cube[5] do - begin - position[1].x:=+25; - position[1].y:=-25; - position[1].z:=+25; - position[2].x:=+25; - position[2].y:=-25; - position[2].z:=-25; - position[3].x:=+25; - position[3].y:=+25; - position[3].z:=-25; - position[4].x:=+25; - position[4].y:=+25; - position[4].z:=+25; - position[5].x:=25; - position[5].y:=0; - position[5].z:=0; - end; - with cube[6] do - begin - position[1].x:=-25; - position[1].y:=+25; - position[1].z:=-25; - position[2].x:=+25; - position[2].y:=+25; - position[2].z:=-25; - position[3].x:=+25; - position[3].y:=-25; - position[3].z:=-25; - position[4].x:=-25; - position[4].y:=-25; - position[4].z:=-25; - position[5].x:=0; - position[5].y:=0; - position[5].z:=-25; - end; -end; - -begin - init; - repeat - display_cube(1); - repeat - c:=conin; - until(upcase(c)in['E','Q','S','W','D','A','J','K','L','U','I','O'])or(c=#27); - display_cube(0); - case upcase(c) of - 'E':rotz(0); - 'Q':rotz(1); - 'S':rotx(0); - 'W':rotx(1); - 'D':roty(0); - 'A':roty(1); - 'J':begin rotx(1);roty(1);rotz(1);end; - 'L':begin rotx(0);roty(0);rotz(0);end; - 'K':begin rotx(1);roty(0);rotz(1);end; - 'I':begin rotx(0);roty(1);rotz(0);end; - 'U':begin rotx(0);roty(1);rotz(1);end; - 'O':begin rotx(1);roty(0);rotz(0);end; - end; - until c=#27; -end.