+++ /dev/null
-DECLARE SUB dispimg ()\r
-DECLARE SUB updateland ()\r
-DECLARE SUB makeland ()\r
-DECLARE FUNCTION getcol! (r!, g!, b!)\r
-DEFINT A-Y\r
-DECLARE SUB traceline (x%, y%, xl)\r
-DECLARE SUB dispframe ()\r
-DECLARE SUB tower (x%, y%)\r
-DECLARE SUB square (x1%, y1%, x2%, y2%, c%, h%)\r
-DECLARE SUB displand ()\r
-DECLARE SUB start ()\r
-DECLARE SUB setupal ()\r
-\r
-DIM SHARED landh(0 TO 180, 0 TO 180)\r
-DIM SHARED landc(0 TO 180, 0 TO 180)\r
-\r
-DIM SHARED zmyx, zmyy, zmyz\r
-DIM SHARED myx, myy, myz\r
-DIM SHARED zmyan, myan2\r
-DIM SHARED ste, stem, dist\r
-DIM SHARED tim$, frm, frmrate\r
-DIM SHARED pi\r
-DIM SHARED white\r
-\r
-sky = getcol(100, 100, 255)\r
-pi = 3.141592\r
-\r
-frmrate = 10 ' Desired framerate.\r
- ' Lower framerate, better quality\r
-\r
-start\r
-makeland\r
-\r
-'displand\r
-'a$ = INPUT$(1)\r
-myan2 = 2\r
-OPEN "cat.i01" FOR INPUT AS #1\r
-INPUT #1, pictxw\r
-INPUT #1, pictyw\r
-INPUT #1, pictx\r
-INPUT #1, picty\r
-\r
-1\r
-x1 = RND * 160\r
-y1 = RND * 160\r
-x2 = x1 + RND * 10 + 1\r
-y2 = y1 + RND * 10 + 1\r
-\r
-IF (frm > 50) AND (frm < 150) THEN square x1, y1, x2, y2, RND * 200, RND * 10\r
-IF (frm > 150) AND (picty < 177) THEN\r
-\r
- FOR ff = 1 TO 180 * 2\r
- INPUT #1, c\r
- landc(pictx, picty) = c\r
- landh(pictx, picty) = 0\r
- pictx = pictx + 1\r
- IF pictx >= pictxw THEN pictx = 0: picty = picty + 1\r
- IF picty >= pictyw THEN picty = 0\r
- NEXT ff\r
-END IF\r
-\r
-IF frm = 430 THEN dispimg\r
-LOCATE 1, 30\r
-'PRINT frm\r
-\r
-updateland\r
-dispframe\r
-GOTO 1\r
-CLOSE #1\r
-\r
-SUB dispframe\r
-\r
-l = 0\r
-zst = -.0031 * ste\r
-FOR z = .5 TO -.5 STEP zst\r
- traceline SIN(zmyan + z) * dist + myx, COS(zmyan + z) * dist + myy, l\r
- l = l + ste\r
-NEXT z\r
-\r
-END SUB\r
-\r
-SUB dispimg\r
-\r
-CLOSE #1\r
-\r
-OPEN "cat.i01" FOR INPUT AS #1\r
-INPUT #1, pictxw\r
-INPUT #1, pictyw\r
-\r
-FOR y = 0 TO pictyw - 1\r
- FOR x = 0 TO pictxw - 1\r
- INPUT #1, c\r
- PSET (x + 50, 150 - y), c\r
- NEXT x\r
-NEXT y\r
-\r
-CLOSE #1\r
-\r
-FOR a = 1 TO 50\r
- SOUND 0, 1\r
-NEXT a\r
-CHAIN "KHKDEMO2.BAS"\r
-\r
-END SUB\r
-\r
-SUB displand\r
-\r
-FOR z = 0 TO 180\r
- zs = 1\r
- IF z > 120 THEN zs = .7\r
- IF z > 160 THEN zs = .6\r
- FOR zx = 0 TO 180 STEP zs\r
- y1 = landh(zx, z) - 80\r
- zx1 = zx - 90\r
- z1 = 300 - z\r
- zx2 = zx1 / z1 * 190\r
- zy2 = y1 / z1 * 190\r
-\r
- LINE (zx2 + 160, 40 - zy2)-(zx2 + 160, 200), landc(zx, z)\r
- NEXT zx\r
-NEXT z\r
-\r
-LOCATE 1, 1\r
-PRINT "Press any key to continue..."\r
-\r
-END SUB\r
-\r
-DEFSNG A-Y\r
-FUNCTION getcol (r, g, b)\r
-IF r < 0 THEN r = 0\r
-IF g < 0 THEN g = 0\r
-IF b < 0 THEN b = 0\r
-IF r > 255 THEN r = 255\r
-IF g > 255 THEN g = 255\r
-IF b > 255 THEN b = 255\r
-getcol = INT(r / 43) * 36 + INT(g / 43) * 6 + INT(b / 43)\r
-END FUNCTION\r
-\r
-DEFINT A-Y\r
-SUB makeland\r
-\r
-square 0, 0, 180, 180, 15, 0\r
-\r
-FOR y = 0 TO 180\r
- FOR x = 0 TO 180\r
- x1 = (x \ 10) MOD 2\r
- y1 = (y \ 10) MOD 2\r
- c = (x1 + y1) MOD 2\r
- IF c = 0 THEN\r
- landc(x, y) = getcol(250, 250, 250)\r
- ELSE\r
- landc(x, y) = getcol(250, 50, 50)\r
- END IF\r
- NEXT x\r
-NEXT y\r
-\r
-FOR y = 10 TO 90\r
- FOR x = 90 TO 170\r
- v = SQR((ABS(50 - y)) ^ 2 + (ABS(130 - x)) ^ 2)\r
- h = SQR((60 - v) * (60 + v)) - 35\r
- IF h > 0 THEN landh(x, y) = h\r
- NEXT x\r
-NEXT y\r
-\r
-tower 20, 20\r
-tower 60, 20\r
-tower 40, 150\r
-\r
-FOR za = 0 TO 20 STEP .1\r
- x = SIN(za) * (1 + (za * 2)) + 100\r
- y = COS(za) * (1 + (za * 2)) + 100\r
- landc(x, y) = getcol(20, RND * 200, 20)\r
- landc(x + 1, y) = getcol(20, RND * 200, 20)\r
- landc(x, y + 1) = getcol(20, RND * 200, 20)\r
- landc(x + 1, y + 1) = getcol(20, RND * 200, 20)\r
-NEXT za\r
-\r
-END SUB\r
-\r
-SUB setupal\r
-c = 0\r
-FOR r = 0 TO 5\r
- FOR g = 0 TO 5\r
- FOR b = 0 TO 5\r
- OUT &H3C8, c\r
- c = c + 1\r
- OUT &H3C9, r * 12\r
- OUT &H3C9, g * 12\r
- OUT &H3C9, b * 12\r
- NEXT b\r
- NEXT g\r
-NEXT r\r
-END SUB\r
-\r
-SUB square (x1, y1, x2, y2, c, h)\r
-\r
-FOR y = y1 TO y2\r
- FOR x = x1 TO x2\r
- landh(x, y) = h\r
- landc(x, y) = c\r
- NEXT x\r
-NEXT y\r
-\r
-END SUB\r
-\r
-SUB start\r
-SCREEN 13\r
-'PRINT "please wait..."\r
-\r
-setupal\r
-\r
-zmyan = 4.14\r
-myan2 = 100\r
-ste = 1\r
-stem = ste - 1\r
-dist = 190\r
-tim$ = TIME$\r
-zmyx = 170\r
-zmyy = 170\r
-zmyz = 20\r
-\r
-END SUB\r
-\r
-SUB tower (x, y)\r
-\r
-FOR a = 10 TO 0 STEP -1\r
- square x - a, y - a, x + a, y + a, getcol(100, 0, a * 20), 20 - a\r
-NEXT a\r
-\r
-square x - 11, y - 11, x - 9, y - 9, getcol(255, 0, 0), 20\r
-square x + 9, y - 11, x + 11, y - 9, getcol(0, 255, 0), 20\r
-square x - 11, y + 9, x - 9, y + 11, getcol(0, 0, 255), 20\r
-square x + 9, y + 9, x + 11, y + 11, getcol(255, 255, 0), 20\r
-\r
-END SUB\r
-\r
-SUB traceline (x, y, xl)\r
-\r
-IF x < 0 THEN\r
- zpr = myx / (myx - x)\r
- x = 0\r
- y = myy - ((myy - y) * zpr)\r
-END IF\r
-\r
-IF y < 0 THEN\r
- zpr = myy / (myy - y)\r
- y = 0\r
- x = myx - ((myx - x) * zpr)\r
-END IF\r
-\r
-IF x > 180 THEN\r
- zpr = (180 - myx) / (x - myx)\r
- x = 180\r
- y = myy - ((myy - y) * zpr)\r
-END IF\r
-\r
-IF y > 180 THEN\r
- zpr = (180 - myy) / (y - myy)\r
- y = 180\r
- x = myx - ((myx - x) * zpr)\r
-END IF\r
-\r
-lp = SQR(ABS(myx - x) ^ 2 + ABS(myy - y) ^ 2)\r
-\r
-xp = x - myx\r
-yp = y - myy\r
-\r
-yo = 200\r
-\r
-FOR a = 1 TO lp\r
- cx = xp * a / lp + myx\r
- cy = yp * a / lp + myy\r
- yn = myan2 - ((landh(cx, cy) - myz) * 300) / a\r
- IF yn < yo THEN LINE (xl, yn)-(xl + stem, yo - 1), landc(cx, cy), BF: yo = yn\r
-NEXT a\r
-LINE (xl, yo - 1)-(xl + stem, 0), sky, BF\r
-\r
-END SUB\r
-\r
-SUB updateland\r
-\r
-frm = frm + 1\r
-ste = 4\r
-stem = ste - 1\r
-\r
-zmyan = frm / 15 + pi\r
-'myan2 = myan2 + 5\r
-'zmyx = SIN(zmyan) * 3 + zmyx\r
-'zmyy = COS(zmyan) * 3 + zmyy\r
-'zmyzs = 2\r
-\r
-zmyx = 90 - SIN(zmyan) * 91\r
-zmyy = 90 - COS(zmyan) * 91\r
-\r
-IF zmyx > 170 THEN zmyx = 170\r
-IF zmyy > 170 THEN zmyy = 170\r
-IF zmyx < 10 THEN zmyx = 10\r
-IF zmyy < 10 THEN zmyy = 10\r
-\r
-zmyz = SIN(zmyan / 2) * 4 + 4\r
-zmyz = SIN(zmyan / 2) * 50 + 50\r
-myan2 = -SIN(zmyan / 2) * 120 + 121\r
-myan2 = -(SIN(zmyan / 2) * 10 + 10)\r
-IF zmyz < landh(myx, myy) + 10 THEN zmyz = landh(myx, myy) + 10: zmyzs = (zmyzs / 2) + .2\r
-\r
-myz = zmyz\r
-myy = zmyy\r
-myx = zmyx\r
-\r
-END SUB
\ No newline at end of file
+++ /dev/null
-DECLARE SUB playsound (a$)
-DECLARE SUB start ()
-DECLARE SUB turnoff ()
-DECLARE SUB dispimg (a$)
-DECLARE SUB turnon ()
-DECLARE SUB ellips (x!, y!, s!, v!, t!)
-DECLARE SUB prn (x!, y!, msg$, siz!, col1!)
-DECLARE SUB timerAdd (element!, time!, value!)
-DECLARE SUB timerdisp ()
-DECLARE SUB timerinit ()
-DECLARE SUB timerprocess ()
-DECLARE SUB mo (x!, y!, an!, s!, w!)
-DIM SHARED depth
-DIM SHARED pi
-
-DIM SHARED sh1, sh2, sv1, sv2, hp, vp
-DIM SHARED timerTime(0 TO 50, 0 TO 100)
-DIM SHARED timerValue(0 TO 50, 0 TO 100)
-
-DIM SHARED timerCplace(0 TO 50)
-DIM SHARED timerCtime(0 TO 50)
-DIM SHARED timerCvalue(0 TO 50)
-DIM SHARED timerLast
-
-
-pi = 3.14128
-
-playsound "luule.mp3"
-SCREEN 13
-start
-
-timerinit
-2
-
-
-timerprocess
-IF timerCtime(0) > 0 THEN
- IF im1 = 0 THEN
- dispimg "pikk.i01"
- im1 = 1
- END IF
-END IF
-
-
-
-IF timerCtime(0) > 1.5 THEN
- IF im2 = 0 THEN
- dispimg "pikk4.i01"
- im2 = 1
- END IF
-END IF
-
-
-IF timerCtime(0) > 9 THEN
- IF im3 = 0 THEN
- dispimg "pikk3.i01"
- im3 = 1
- END IF
-END IF
-
-IF timerCtime(0) > 17 THEN
- IF im4 = 0 THEN
- dispimg "pikk2.i01"
- im4 = 1
- END IF
-END IF
-
-IF timerCtime(0) > 24 THEN
- IF im5 = 0 THEN
- dispimg "pikk1.i01"
- im5 = 1
- END IF
-END IF
-
-IF timerCtime(0) > 33 THEN
- IF im6 = 0 THEN
- dispimg "pikk5.i01"
- im6 = 1
- END IF
-END IF
-
-IF timerCtime(0) > 41 THEN
- IF im7 = 0 THEN
- dispimg "pikk.i01"
- im7 = 1
- END IF
-END IF
-
-
-IF timerCtime(0) > 43 THEN
- turnoff
-END IF
-
-'LOCATE 1, 1
-'PRINT timerCtime(0)
-GOTO 2
-SYSTEM
-
-SUB dispimg (a$)
-
-
-OPEN a$ FOR INPUT AS #1
-INPUT #1, xs
-INPUT #1, ys
-
-FOR y = 1 TO ys
-FOR x = 1 TO xs
-INPUT #1, a
-PSET (x - 1, 200 - y), a
-NEXT x
-NEXT y
-
-
-CLOSE #1
-END SUB
-
-SUB ellips (x, y, s, v, t)
-
-IF x > 0 THEN
-IF y > 0 THEN
-
-CIRCLE (x, y), s, v, , , t
-PAINT (x, y), v
-
-END IF
-END IF
-
-END SUB
-
-SUB playsound (a$)
-
-SHELL "c:\progra~1\winamp\winamp.exe " + a$
-SCREEN 0
-SCREEN 7, , , 1
-
-END SUB
-
-SUB prn (x, y, msg$, siz, col1)
-IF x < 0 THEN GOTO prn1
-IF x > 319 THEN GOTO prn1
-
-DIM bck(10000)
-
-GET (0, 0)-(100, 7), bck
-LOCATE 1, 1
-PRINT msg$
-
-col = col1
-
-FOR x1 = 0 TO LEN(msg$) * 8 - 1
-FOR y1 = 0 TO 7
- IF POINT(x1, y1) > 0 THEN
- rx = x1 * siz + x
- ry = y1 * siz + y
- IF col1 > 100 THEN col = RND * 4 + 10
- IF col1 > 200 THEN
- LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, B
- ELSE
- LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF
- END IF
-' LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF
- END IF
-NEXT y1
-NEXT x1
-
-
-PUT (0, 0), bck, PSET
-prn1:
-END SUB
-
-SUB start
-c = 0
-FOR r = 0 TO 5
-FOR g = 0 TO 5
-FOR B = 0 TO 5
-OUT &H3C8, c
-c = c + 1
-OUT &H3C9, r * 12
-OUT &H3C9, g * 12
-OUT &H3C9, B * 12
-NEXT B
-NEXT g
-NEXT r
-
-END SUB
-
-SUB timerAdd (element, time, value)
-
-FOR a = 0 TO 100
- IF (timerTime(element, a) = 0) AND (timerValue(element, a) = 0) THEN GOTO timer3
-NEXT a
-timer3:
-
-timerTime(element, a) = time
-timerValue(element, a) = value
-
-END SUB
-
-SUB timerdisp
-LOCATE 1, 1
-
-FOR a = 0 TO 10
- PRINT timerCplace(a), timerCtime(a), timerCvalue(a)
-NEXT a
-
-END SUB
-
-SUB timerinit
-timerLast = TIMER
-
-paus = 24
-
-' stuff size
-timerAdd 0, 0, 0
-timerAdd 0, 1000, 1000
-
-END SUB
-
-SUB timerprocess
-
-timerCurrent = TIMER
-timerDiff = timerCurrent - timerLast
-timerLast = timerCurrent
-
-FOR a = 0 TO 50
- ctim = timerCtime(a) + timerDiff
- Cplace = timerCplace(a)
-timer2:
- IF timerTime(a, Cplace + 1) = -1 THEN
- ctim = 0
- Cplace = 0
- END IF
- IF timerTime(a, Cplace + 1) < ctim THEN
- IF timerTime(a, Cplace + 1) = 0 THEN
- timerCvalue(a) = timerValue(a, Cplace)
- GOTO timer1:
- END IF
- Cplace = Cplace + 1
- GOTO timer2
- END IF
-
- v1 = timerValue(a, Cplace)
- t1 = timerTime(a, Cplace)
- v2 = timerValue(a, Cplace + 1)
- t2 = timerTime(a, Cplace + 1)
-
- IF v1 = v2 THEN
- timerCvalue(a) = v1
- ELSE
- Tdiff1 = t2 - t1
- Tdiff2 = ctim - t1
- Vdiff = v2 - v1
- timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1
- END IF
-timer1:
- timerCplace(a) = Cplace
- timerCtime(a) = ctim
-NEXT a
-
-END SUB
-
-SUB turnoff
-x = 160
-
-FOR y = 100 TO 1 STEP -1
-
- LINE (160 - x - 5, 90 - y - 5)-(160 + x + 5, 110 + y + 5), 0, B
- LINE (160 - x - 3, 90 - y - 3)-(160 + x + 3, 110 + y + 3), 3, B
- LINE (160 - x, 90 - y)-(160 + x, 110 + y), 15, B
-
- SOUND 0, .1
-NEXT y
-
-
-
-FOR x = 160 TO 0 STEP -1
-
- LINE (160 - x - 5, 90 - 5)-(160 + x + 5, 110 + 5), 0, B
- LINE (160 - x - 3, 90 - 3)-(160 + x + 3, 110 + 3), 1, B
- LINE (160 - x, 90)-(160 + x, 110), 15, B
- SOUND 0, .05
-NEXT x
-
-playsound "silent.mp3"
-SCREEN 10
-SCREEN 13
-CLS
-1
-a$ = INPUT$(1)
-GOTO 1
-
-
-END SUB
-
+++ /dev/null
-DECLARE SUB dispimg ()
-DECLARE SUB updateland ()
-DECLARE SUB makeland ()
-DECLARE FUNCTION getcol! (r!, g!, b!)
-DEFINT A-Y
-DECLARE SUB traceline (x%, y%, xl)
-DECLARE SUB dispframe ()
-DECLARE SUB tower (x%, y%)
-DECLARE SUB square (x1%, y1%, x2%, y2%, c%, h%)
-DECLARE SUB displand ()
-DECLARE SUB start ()
-DECLARE SUB setupal ()
-
-DIM SHARED landh(0 TO 180, 0 TO 180)
-DIM SHARED landc(0 TO 180, 0 TO 180)
-
-DIM SHARED zmyx, zmyy, zmyz
-DIM SHARED myx, myy, myz
-DIM SHARED zmyan, myan2
-DIM SHARED ste, stem, dist
-DIM SHARED tim$, frm, frmrate
-DIM SHARED pi
-DIM SHARED white
-
-sky = getcol(100, 100, 255)
-pi = 3.141592
-
-frmrate = 10 ' Desired framerate.
- ' Lower framerate, better quality
-
-start
-makeland
-
-'displand
-'a$ = INPUT$(1)
-myan2 = 2
-OPEN "cat.i01" FOR INPUT AS #1
-INPUT #1, pictxw
-INPUT #1, pictyw
-INPUT #1, pictx
-INPUT #1, picty
-
-
-1
-x1 = RND * 160
-y1 = RND * 160
-x2 = x1 + RND * 10 + 1
-y2 = y1 + RND * 10 + 1
-
-IF (frm > 50) AND (frm < 250) THEN square x1, y1, x2, y2, RND * 200, RND * 10
-IF (frm > 250) AND (picty < 177) THEN
-
- FOR ff = 1 TO 180 * 2
- INPUT #1, c
- landc(pictx, picty) = c
- landh(pictx, picty) = 0
- pictx = pictx + 1
- IF pictx >= pictxw THEN pictx = 0: picty = picty + 1
- IF picty >= pictyw THEN picty = 0
- NEXT ff
-END IF
-
-IF frm = 430 THEN dispimg
-LOCATE 1, 30
-'PRINT frm
-
-updateland
-dispframe
-GOTO 1
-CLOSE #1
-
-SUB dispframe
-
-l = 0
-zst = -.0031 * ste
-FOR z = .5 TO -.5 STEP zst
-traceline SIN(zmyan + z) * dist + myx, COS(zmyan + z) * dist + myy, l
-l = l + ste
-NEXT z
-
-END SUB
-
-SUB dispimg
-
-CLOSE #1
-
-
-OPEN "cat.i01" FOR INPUT AS #1
-INPUT #1, pictxw
-INPUT #1, pictyw
-
-FOR y = 0 TO pictyw - 1
-FOR x = 0 TO pictxw - 1
-INPUT #1, c
-PSET (x + 50, 150 - y), c
-NEXT x
-NEXT y
-
-CLOSE #1
-
-
-FOR a = 1 TO 50
- SOUND 0, 1
-NEXT a
-CHAIN "KHKDEMO2.BAS"
-
-END SUB
-
-SUB displand
-
-
-FOR z = 0 TO 180
-zs = 1
-IF z > 120 THEN zs = .7
-IF z > 160 THEN zs = .6
-FOR zx = 0 TO 180 STEP zs
-y1 = landh(zx, z) - 80
-zx1 = zx - 90
-z1 = 300 - z
-zx2 = zx1 / z1 * 190
-zy2 = y1 / z1 * 190
-
-LINE (zx2 + 160, 40 - zy2)-(zx2 + 160, 200), landc(zx, z)
-NEXT zx
-NEXT z
-
-LOCATE 1, 1
-PRINT "Press any key to continue..."
-
-END SUB
-
-DEFSNG A-Y
-FUNCTION getcol (r, g, b)
-IF r < 0 THEN r = 0
-IF g < 0 THEN g = 0
-IF b < 0 THEN b = 0
-IF r > 255 THEN r = 255
-IF g > 255 THEN g = 255
-IF b > 255 THEN b = 255
-getcol = INT(r / 43) * 36 + INT(g / 43) * 6 + INT(b / 43)
-END FUNCTION
-
-DEFINT A-Y
-SUB makeland
-
-square 0, 0, 180, 180, 15, 0
-
-FOR y = 0 TO 180
-FOR x = 0 TO 180
-x1 = (x \ 10) MOD 2
-y1 = (y \ 10) MOD 2
-c = (x1 + y1) MOD 2
-IF c = 0 THEN
- landc(x, y) = getcol(250, 250, 250)
-ELSE
- landc(x, y) = getcol(250, 50, 50)
-END IF
-NEXT x
-NEXT y
-
-FOR y = 10 TO 90
-FOR x = 90 TO 170
-v = SQR((ABS(50 - y)) ^ 2 + (ABS(130 - x)) ^ 2)
-h = SQR((60 - v) * (60 + v)) - 35
-IF h > 0 THEN landh(x, y) = h
-NEXT x
-NEXT y
-
-tower 20, 20
-tower 60, 20
-tower 40, 150
-
-
-FOR za = 0 TO 20 STEP .1
-x = SIN(za) * (1 + (za * 2)) + 100
-y = COS(za) * (1 + (za * 2)) + 100
-landc(x, y) = getcol(20, RND * 200, 20)
-landc(x + 1, y) = getcol(20, RND * 200, 20)
-landc(x, y + 1) = getcol(20, RND * 200, 20)
-landc(x + 1, y + 1) = getcol(20, RND * 200, 20)
-NEXT za
-
-END SUB
-
-SUB setupal
-c = 0
-FOR r = 0 TO 5
-FOR g = 0 TO 5
-FOR b = 0 TO 5
-OUT &H3C8, c
-c = c + 1
-OUT &H3C9, r * 12
-OUT &H3C9, g * 12
-OUT &H3C9, b * 12
-NEXT b
-NEXT g
-NEXT r
-END SUB
-
-SUB square (x1, y1, x2, y2, c, h)
-
-FOR y = y1 TO y2
-FOR x = x1 TO x2
-landh(x, y) = h
-landc(x, y) = c
-NEXT x
-NEXT y
-
-END SUB
-
-SUB start
-SCREEN 13
-'PRINT "please wait..."
-
-setupal
-
-zmyan = 4.14
-myan2 = 100
-ste = 1
-stem = ste - 1
-dist = 190
-tim$ = TIME$
-zmyx = 170
-zmyy = 170
-zmyz = 20
-
-END SUB
-
-SUB tower (x, y)
-
-FOR a = 10 TO 0 STEP -1
-square x - a, y - a, x + a, y + a, getcol(100, 0, a * 20), 20 - a
-NEXT a
-
-square x - 11, y - 11, x - 9, y - 9, getcol(255, 0, 0), 20
-square x + 9, y - 11, x + 11, y - 9, getcol(0, 255, 0), 20
-square x - 11, y + 9, x - 9, y + 11, getcol(0, 0, 255), 20
-square x + 9, y + 9, x + 11, y + 11, getcol(255, 255, 0), 20
-
-
-END SUB
-
-SUB traceline (x, y, xl)
-
-IF x < 0 THEN
-zpr = myx / (myx - x)
-x = 0
-y = myy - ((myy - y) * zpr)
-END IF
-
-IF y < 0 THEN
-zpr = myy / (myy - y)
-y = 0
-x = myx - ((myx - x) * zpr)
-END IF
-
-IF x > 180 THEN
-zpr = (180 - myx) / (x - myx)
-x = 180
-y = myy - ((myy - y) * zpr)
-END IF
-
-IF y > 180 THEN
-zpr = (180 - myy) / (y - myy)
-y = 180
-x = myx - ((myx - x) * zpr)
-END IF
-
-lp = SQR(ABS(myx - x) ^ 2 + ABS(myy - y) ^ 2)
-
-xp = x - myx
-yp = y - myy
-
-yo = 200
-
-FOR a = 1 TO lp
- cx = xp * a / lp + myx
- cy = yp * a / lp + myy
- yn = myan2 - ((landh(cx, cy) - myz) * 300) / a
- IF yn < yo THEN LINE (xl, yn)-(xl + stem, yo - 1), landc(cx, cy), BF: yo = yn
-NEXT a
-LINE (xl, yo - 1)-(xl + stem, 0), sky, BF
-
-END SUB
-
-SUB updateland
-
-frm = frm + 1
-ste = 4
-stem = ste - 1
-
-
-zmyan = frm / 15 + pi
-'myan2 = myan2 + 5
-'zmyx = SIN(zmyan) * 3 + zmyx
-'zmyy = COS(zmyan) * 3 + zmyy
-'zmyzs = 2
-
-zmyx = 90 - SIN(zmyan) * 91
-zmyy = 90 - COS(zmyan) * 91
-
-IF zmyx > 170 THEN zmyx = 170
-IF zmyy > 170 THEN zmyy = 170
-IF zmyx < 10 THEN zmyx = 10
-IF zmyy < 10 THEN zmyy = 10
-
-zmyz = SIN(zmyan / 2) * 4 + 4
-zmyz = SIN(zmyan / 2) * 50 + 50
-myan2 = -SIN(zmyan / 2) * 120 + 121
-myan2 = -(SIN(zmyan / 2) * 10 + 10)
-IF zmyz < landh(myx, myy) + 10 THEN zmyz = landh(myx, myy) + 10: zmyzs = (zmyzs / 2) + .2
-
-myz = zmyz
-myy = zmyy
-myx = zmyx
-
-END SUB
-