Procedure PharaosDeath;
VAR
{ x= Bodenkante der Pyramide, h= höhe der Pyramide
i= influence, Einfluss des Pharaos
m= masstab
d= Anzahl Tote für die eine Pyramide gebaut werden muss
s= Anzahl Sklaven die an der Pyramide bauen müssen
t= Zeit die für die Pyramide gebraucht wird
ds= dead slaves, Sklaven die beim Bau umkommen
dsm= dead slave mausoleums
idsm= zähler für mausoleums
q=
h= höhe der pyramiden
hk= ausgangshöhe
}
x,h,q,nx,ny,hk,q1,x1: Real;
d,p,s,i,m,dx,ds,dsm, idsm: integer;
BEGIN
{
Parameter zum Einstellen
Anzahl Pyramiden, wovon die des Pharaos grösser wird,
Einfluss des Pharaos
Massstabs mit dem das ganz gezeichnet wird
}
d:=PPYRAMIDEN;
i:=PEINFLUSS;
m:=PMASSSTAB;
s:=ROUND(i*RANDOM*100)+1;
FOR dx:=1 TO d DO BEGIN
{
Wenn dx=1 dann ist es die Pyramide des Pharaos, die natürlich grösser ist.
}
IF (dx=1) THEN BEGIN
hk:=s*i*(1/m)/100;
h:=hk;
x:=h;
q:=sqrt(h^2+(x/2)^2);
nx:=0;
ny:=0;
END;
{
Pyramide der Verwandten, Angestellten usw.
}
IF NOT (dx=1) THEN BEGIN
q1:=q;
x1:=x;
h:=hk*((RANDOM*0.3)+0.4);
x:=h;
q:=sqrt(h^2+(x/2)^2);
ny:=ny+x1+q1+q;
nx:=nx+x1/2;
END;
{
zeichnen der Pyramiden, schwarz sind die gerizzten Linien, blau die geschnittenen
}
PenFore(255);
moveto(nx,ny);
lineto(nx,(ny+x));
lineto((nx+x),(ny+x));
lineto((nx+x),ny);
lineto(nx,ny);
PenFore(2);
lineto((nx-q),ny+x/2);
lineto(nx,(ny+x));
lineto((nx+x/2),(ny+x+q));
lineto(nx+x,ny+x);
lineto((nx+x+q),(ny+x/2));
lineto(nx+x,ny);
lineto((nx+x/2),(ny-q));
lineto(nx,ny);
lineto((nx-q),(ny+x/2));
END;
{
Je mehr Sklaven beim Bau tätig desto kleiner ist die Sterberrate, da bei wenigen Sklaven diese mehr schuften müssen
}
IF (s<=10000) THEN BEGIN
ds:=s*((RANDOM*0.2)+0.2);
IF (s<=1000) THEN BEGIN
ds:=s*((RANDOM*0.2)+0.3);
END;
IF (s<=100) THEN BEGIN
ds:=s*((RANDOM*0.2)+0.4);
END;
hk:=hk+300/m;
{
Die Gräber der Sklaven müssen natürlich auch gebaut werden, pro 500
Arbeiter ein Grab (5*4*3m)
}
dsm:=ROUND(ds/500);
FOR idsm:=0 TO (dsm-1) DO BEGIN
penfore(255);
moveto((-(hk*1.5)),0+idsm*1100/m);
lineto((-(hk*1.5)-500/m),0+idsm*1100/m);
lineto((-(hk*1.5)-500/m),(400/m)+idsm*1100/m);
lineto((-(hk*1.5)),(400/m)+idsm*1100/m);
lineto((-(hk*1.5)),0+idsm*1100/m);
penfore(2);
lineto((-(hk*1.5)),(-300/m)+idsm*1100/m);
lineto((-(hk*1.5)-500/m),(-300/m)+idsm*1100/m);
lineto((-(hk*1.5)-500/m),0+idsm*1100/m);
lineto((-(hk*1.5)-800/m),0+idsm*1100/m);
lineto((-(hk*1.5)-800/m),(400/m)+idsm*1100/m);
lineto((-(hk*1.5)-500/m),(400/m)+idsm*1100/m);
lineto((-(hk*1.5)-500/m),(700/m)+idsm*1100/m);
lineto((-(hk*1.5)),(700/m)+idsm*1100/m);
lineto((-(hk*1.5)),(400/m)+idsm*1100/m);
lineto((-(hk*1.5)+300/m),(400/m)+idsm*1100/m);
lineto((-(hk*1.5)+300/m),0+idsm*1100/m);
lineto((-(hk*1.5)),0+idsm*1100/m);
END;
END;
END;
run(PharaosDeath);