' '3D Terain Creator 'Richard Wheeldon 1996 ' Set Buffer 400 Set Stack 3000 Reserve As Chip Data 10,65535 Set Tempras Start(10),65535 ' 'Planet Constants Global DIST,ZOM,XMID,YMID,YFACT Global XF,YF,ZF DIST=500 : ZOM=30 XMID=0 : YMID=20 XF=50 : YF=50 : ZF=15 YFACT=20 ' Global RIVERS,LSIZE,THRESH,RIVMARK RIVERS=80 LSIZE=80 THRESH=10 RIVMARK=160 ' XSIZE=40 : YSIZE=40 Dim MAP(XSIZE,YSIZE) Global XSIZE,YSIZE,MAP() Print "Please Wait. Setting up Islands." GENMAP Screen Open 0,320,200,32,Lowres Curs Off : Flash Off : Paper 0 : Cls 'Palette $9,$9,$9,$50,$50,$50,$50,$50,$50,$A80,$A80,$A80,$444,$666,$888,$FFF Palette $0,$999,$AAA,$BBB,$CCC,$DDD,$EEE,$FFF,$F Colour 16,$F MAIN ' Procedure MAIN Do _SHOWLAND Repeat I$=Inkey$ S=Scancode Until I$<>"" If I$="6" Add XMID,20 Else If I$="4" Add XMID,-20 Else If I$="8" Add YMID,-20 Else If I$="2" Add YMID,20 Else If I$="7" Add DIST,-20 Else If I$="9" Add DIST,20 Else If I$="1" Add ZOM,-20 Else If I$="3" Add ZOM,20 Else If I$="5" ROTMAP Else If I$=Chr$(27) Edit End If Loop End Proc ' Procedure SHWMAP For X=0 To XSIZE For Y=0 To YSIZE Ink MAP(X,Y)/THRESH Bar X*5,Y*4 To X*5+4,Y*4+3 Next Next End Proc Procedure GENMAP For C=0 To 30+Rnd(30) GENISLAND[Rnd(XSIZE),Rnd(YSIZE),Rnd(LSIZE)] Next For X=0 To XSIZE For Y=0 To YSIZE MAP(X,Y)=MAP(X,Y)/YFACT Next Next '_ADD_MOUNTAINS '_ADD_RIVERS End Proc Procedure GENISLAND[X,Y,R] If X<0 Then Pop Proc If X>XSIZE Then Pop Proc If Y<0 Then Pop Proc If Y>YSIZE Then Pop Proc Add MAP(X,Y),R MAP(X,Y)=Min(MAP(X,Y),THRESH*15) If R>0 D=Rnd(3) If D=0 GENISLAND[X,Y+1,R-1] Else If D=1 GENISLAND[X+1,Y,R-1] Else If D=2 GENISLAND[X,Y-1,R-1] Else GENISLAND[X-1,Y,R-1] End If End If End Proc Procedure _ADD_RIVERS For C1=0 To RIVERS X=Rnd(XSIZE) Y=Rnd(YSIZE) While MAP(X,Y)>30 and MAP(X,Y)<>RIVMARK M=MAP(X,Y) MAP(X,Y)=RIVMARK ' Trap M1=MAP(X,Y+1) : If Errtrap Then M1=5000 Trap M2=MAP(X,Y-1) : If Errtrap Then M2=5000 Trap M3=MAP(X+1,Y) : If Errtrap Then M3=5000 Trap M4=MAP(X-1,Y) : If Errtrap Then M4=5000 ' If M