examples: removed 5cubes due to unclear licensing
This commit is contained in:
parent
61699e420a
commit
cd9e1708c8
1 changed files with 0 additions and 253 deletions
|
|
@ -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.
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue