Code: Select all
REM 3D LANDSCAPE GRID IDEA
'
p=0
scx=0
lxo=sw/2 '340
lyo=1000
poll=18
DIM logx(poll*4+1)
DIM logy(poll*3+1)
FOR a=1 TO poll*3
READ logx(a),logy(a)
logx(a)=logx(a)*4
logy(a)=logy(a)*6
NEXT a
GRAPHICS
sw=SCREEN_WIDTH()
sh=SCREEN_HEIGHT()
'CREATE THE LANSCAPE GRID
point=123 '81 '****changed
DIM x(point+1)
DIM y(point+1)
DIM z(point+1)
DIM xt(point+1)
DIM yt(point+1)
xc=-20
yc=1
zc=2
FOR a=1 TO point
x(a)=xc
y(a)=sh*2 '+RND(123) ' hills pre calaculated -650
z(a)=zc
xc=xc+5
IF xc>20 THEN xc=-20 ! zc=zc+1
NEXT a
'TRANSFORM X PERSPECTIVES
FOR a=1 TO point
x(a)=x(a)*sw '120 changed width
NEXT a
mx=zc
LOOP:
REFRESH OFF
FILL COLOR 20/255,0,0
GRAPHICS CLEAR 0,0,0
FILL RECT 0,sh-100 TO sw,sh
GOSUB LANDSCAPE
xsn=40*SIN(m)
m=m+.1
DRAW COLOR 250/255,250/255,250/255
DRAW TEXT MID$(s$,p,67) AT scx+xsn,sh-20
scx=scx-2
IF scx<-10 THEN
p=p+1
IF p>LEN(s$)-1 THEN p=0
scx=scx+10
END IF
a=1
zz=2+1*SIN(m)
FILL COLOR 45/255,45/255,65/255
FOR b=1 TO 18
'FILL TRI zz*logx(a)+lxo,logy(a)+lyo , zz*logx(a+1)+lxo,logy(a+1)+lyo , zz*logx(a+2)+lxo,logy(a+2)+lyo
a=a+3
NEXT b
REFRESH ON
GOTO LOOP
LANDSCAPE:
FOR a=1 TO point 'TRANSFORM POINTS LOOP
q=z(a)+zo ' SET CONSTANT DIVISION VARIABLE
xt(a)=(x(a)/q)+sw/2 ' TRANSFORM AND OFFSET X
yt(a)=(y(a)/q)+sh/2 ' TRANSFORM Y
NEXT a ' END TRANSFORM LOOP
zo=zo-.2 ' SCROLL INTO SCREEN
''HAS ONE LINE COMPLETELY SCROLLED IN?
IF zo<-2 THEN '2
zo=.2 ' RESET Z OFFSET
FOR b=1 TO 72 ' SHIFT ALL ROWS FORWARD BY ONE LINE
y(b)=y(b+9)
NEXT b
FOR a=73 TO 123 '81 ' GENERATE NEW WAVE FOR BACK ROW
y(a)=650+l*SIN(mm+a)
NEXT a
l=140*SIN(mm*2) ' SET SINE SIZE 340
mm=mm+4 ' SHIFTING VALUE FOR SINE
END IF
'DRAW HILLS
xw=71 ' START POINT
FOR a=1 TO 64
c=(z(a)*10)-20 ' COLOR ACCORDING TO DEPTH
FILL COLOR 0,0,c/255 ' DRAW THE BLUE ONE FIRST
FILL TRI xt(xw),yt(xw) , xt(xw+1),yt(xw+1) , xt(xw+9),yt(xw+9)
FILL COLOR c/255,0,0 ' NOW DO THE RED ONE
FILL TRI xt(xw+1),yt(xw+1) , xt(xw+10),yt(xw+10) , xt(xw+9),yt(xw+9)
xw=xw-1 ' JUMP TO NEXT POLYGON PAIR 1
IF xw%9=0 THEN xw=xw-1 ' ARE WE AT EDGE? IF YES, JUMP
NEXT a
FILL COLOR 1,55/255,55/255
RETURN
DATA -39,-9,-25,-15,-24,-8
DATA -31,-15,-35,15,-28,15
DATA -38,0,-27,-4,-26,5
DATA -25,15,-20,-15,-21,18
DATA -21,-15,-15,15,-18,15
DATA -25,3,-18,-4,-16,4
DATA -15,14,-13,-14,-13,17
DATA -16,-14,-9,15,-5,18
DATA -11,-7,-8,-10,-6,19
DATA -3,-12,-5,15,-3,18
DATA -6,-13,5,15,2,16
DATA -6,3,-5,-2,4,4
DATA -2,-10,0,-6,15,-12
DATA 6,17,10,15,3,-13
DATA 12,15,20,15,15,-4
DATA 15,-4,17,-7,10,-8
DATA 15,-11,35,15,27,13
DATA 35,-15,29,-13,21,19
'19