02-20-2004, 06:39 PM
Well, I was thinking back to that fad about terrain generators a while ago on Qbasic.com, etc and decided to make my own
Code:
DECLARE SUB writepal (red!, grn!, blu!, palp!)
RANDOMIZE TIMER
SCREEN 13
sizex = 120
sizey = 70
FOR i = 1 TO 8
writepal 0, 0, 60, i
NEXT
FOR i = 8 TO 12
r = r + 60 / 4
g = g + 50 / 4
B = B - 60 / 4
writepal r, g, B, i
NEXT
FOR i = 12 TO 30
writepal 60, 50, 0, i
NEXT
r = 60
g = 50
FOR i = 30 TO 64
r = r - 40 / 34
g = g - 40 / 34
writepal r, g, 0, i
NEXT
r = 20
g = 10
FOR i = 64 TO 192
r = r - 20 / 128
g = g + 50 / 128
writepal r, g, 0, i
NEXT
r = 0
g = 60
B = 0
FOR i = 192 TO 255
r = r + 45 / 64
g = g - 15 / 64
B = B + 45 / 64
writepal r, g, B, i
NEXT
DIM buffer(sizex, sizey)
FOR x = 1 TO sizex
FOR y = 1 TO sizey
buffer(x, y) = 1
NEXT
NEXT
FOR i = 1 TO 130
posx = INT(RND * sizex) + 1
posy = INT(RND * sizey) + 1
height = INT(RND * 350) + 1
FOR j = 1 TO 90
posx2 = (INT(RND * 10) - 5) + posx
posy2 = (INT(RND * 10) - 5) + posy
IF posx2 > 1 AND posx2 < sizex AND posy2 > 1 AND posy2 < sizey THEN buffer(posx2, posy2) = height
NEXT
NEXT
LOCATE 1, 24: PRINT "]"
FOR smth = 1 TO 4
FOR x = 1 TO sizex - 1
FOR y = 1 TO sizey - 1
av = 0
av = av + buffer(x - 1, y - 1)
av = av + buffer(x + 1, y - 1)
av = av + buffer(x - 1, y + 1)
av = av + buffer(x + 1, y + 1)
av = av + buffer(x, y)
av = av / 5
IF av > 255 THEN av = 255
IF av < 1 THEN av = 1
buffer(x, y) = av
NEXT
LOCATE 1, 1
a = a + 1
PRINT "Generating: [" + STRING$((a / ((sizex - 1) * 4)) * 10, "þ")
NEXT
NEXT
CLS
FOR x = sizex - 1 TO 1 STEP -1
FOR y = 10 TO sizey + 9
'PSET (x, y), buffer(x, y - 10)
LINE (x * 2 - 2 + y, y * 2 - 2)-(x * 2 + y, y * 2 - buffer(x, y - 10) / 8), buffer(x, y - 10), BF
NEXT
NEXT
END
FOR x = sizex - 1 TO 2 STEP -2
FOR y = 12 TO sizey + 9 STEP 2
LINE (x * 2 + y, y * 2 - buffer(x, y - 10) / 8)-((x - 2) * 2 + y, y * 2 - buffer(x - 2, y - 10) / 8), buffer(x, y - 10)
LINE (x * 2 + y, y * 2 - buffer(x, y - 10) / 8)-(x * 2 + (y - 2), (y - 2) * 2 - buffer(x, y - 12) / 8), buffer(x, y - 10)
NEXT
NEXT
SUB writepal (red, grn, blu, palp)
OUT &H3C8, palp
OUT &H3C9, red
OUT &H3C9, grn
OUT &H3C9, blu
END SUB