Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
planetdoodle2
#1
This is an earlier version of my alien skies program posted elsewhere here in this forum. I whipped this up a few months back when first using QB64 again. This is nowhere near as fancy as alien skies or as complicated in code. It's also just in 256 colors but it works well enough for what it does so I'm sharing it.

Code: (Select All)
'planetdoodle2
' By James D. Jarvis
' a 256 color planet picture generator
' type quit   to leave program, press enter to go on
Screen _NewImage(800, 500, 256)
Cls
redstart = 17
redstop = 32
orangestart = 33
orangestop = 48
yellowstart = 49
yellowstop = 64
greenstart = 65
greenstop = 80
bluestart = 81
bluestop = 96
purplestart = 97
purplestop = 112
greystart = 113
greystop = 128
brownstart = 129
brownstop = 144
pinkstart = 145
pinkstop = 160
whitestart = 161
whitestop = 176
cyanstart = 177
cyanstop = 192
neonstart = 193
neonstop = 208
mix1start = 209
mix1stop = 224
mix2start = 225
mix2stop = 240

Randomize Timer

For x = 0 To 15
    _PaletteColor redstart + x, _RGB32(x * 16, 0, 0)
    _PaletteColor bluestart + x, _RGB32(0, 0, x * 16)
    _PaletteColor greenstart + x, _RGB32(0, x * 16, 0)
    _PaletteColor yellowstart + x, _RGB32(x * 16, x * 16, 0)
    _PaletteColor purplestart + x, _RGB32(x * 16, 0, x * 16)
    _PaletteColor orangestart + x, _RGB32(x * 16, x * 12, 0)
    _PaletteColor greystart + x, _RGB32(x * 16, x * 16, x * 16)
    _PaletteColor brownstart + x, _RGB32(x * 8 + 37, x * 2 + 18, x * 3 + 17)
    _PaletteColor pinkstart + x, _RGB32(x * 4 + 191, x * 12, (x * 15))
    _PaletteColor whitestart + x, _RGB32(x * 2 + 223, x * 2 + 224, x * 2 + 225)
    _PaletteColor cyanstart + x, _RGB32(0, x * 8 + 127, x * 8 + 127)
    _PaletteColor neonstart + x, _RGB32(x * x, x * x, x * 2)
    _PaletteColor mix1start + x, _RGB32(x * x, x * x, x * x)
    _PaletteColor mix2start + x, _RGB32(255 - (x * x), x * x, x * x)
Next x

Cls
'shadded balls
planets:
'sky
stars = Int(Rnd * 3000)

horizon = 200 + Int(Rnd * 200)

hstart = 1
hstop = horizon
hkolor = Int(Rnd * 14)
hkolor = hkolor * 16 + 17
change = 0
For h = 0 To horizon
    Line (0, h)-(799, h), hkolor + change
    If Int(Rnd * 3) = 1 Then change = change + 1
    If change > 15 Then change = 15

Next h

For s = 1 To stars
    x = Int(Rnd * 800)
    y = Int(Rnd * horizon)
    sr = Int(Rnd * 10) + 1
    sr = Int(Sqr(sr))
    sr = sr / 3
    kk = whitestart + Int(Rnd * 16)
    Circle (x, y), sr, kk
    Paint (x, y), kk, kk
Next s

For balls = 1 To 5
    x = Int(Rnd * 700) + 100
    y = Int(Rnd * horizon) + 50
    ox = x
    oy = y
    rr = Int(Rnd * 60) + 20
    kk = Int(Rnd * 14)
    kk = kk * 16 + 17 + Int(Rnd * 4)
    Circle (x, y), rr, kk
    Paint (x, y), kk, kk
    ck = kk
    For inner = 1 To 4
        oldr = rr
        rr = Int(rr * .87)
        nc = Int((oldr - rr) / 2)
        x = x + nc
        y = y - nc
        kk = kk + inf(Rnd * 2) + 1
        Circle (x, y), rr, kk
        Paint (x, y), kk, kk
    Next inner
    craters = Int(Rnd * 10) - 6
    If craters < 0 Then craters = 0
    If craters > 0 Then

        For cc = 1 To craters
            cr = oldr * .75
            xv = Int((Rnd * cr) + 3) - Int(Rnd * (cr + 3))
            yv = Int((Rnd * cr) + 3) - Int(Rnd * (cr + 3))
            Circle (ox + xv, oy + yv), cr - 2, ck + 2
            Paint (ox + xv, oy + yv), ck + 1, ck + 2
        Next cc
    End If
Next balls

pointy = Int(Rnd * 30) + 1

pkolor = Int(Rnd * 14)
pkolor = pkolor * 16 + 17 + Int(Rnd * 3)
change = 0
For h = horizon To 499
    Line (0, h)-(799, h), pkolor + chnage
    For qq = 1 To 8
        mcheck = Int(Rnd * 20)
        If mcheck = 1 Then GoTo drawmountain
        dirt:
    Next qq

    If Int(Rnd * 4) = 1 Then
        change = change + 1
        If change > 15 Then change = 15
    End If
Next h
Input a$
If a$ = "quit" Then GoTo done

GoTo planets

drawmountain:

mhigh = h - (Int(Rnd * 120) + 20)
mwide = Int(Rnd * 3) + 2
mwide = mwide * Sqr(Rnd * mwide / 3)

'mlow = horizon + Int(Rnd * mhigh) + 40

mkolor = pkolor + Int(Rnd * 8)
mx = Int(Rnd * 800) + 1

mx1 = mx - (mwide / 2)
mx2 = mx + (mwide / 2)
rcheck = 0
rlimit = Int(Rnd * 30) + 1

For my = mhigh To h
    Line (mx1, my)-(mx2, my), mkolor
    xv1 = Int(Rnd * 5)
    xv2 = Int(Rnd * 5)
    Line (mx1 + xv1, my)-(mx2 - xv2, my), mkolor + 1
    Line (mx - (xv1 + mwide / 3), my)-(mx2 - xv2, my), mkolor + 3
    rcheck = rcheck + 1
    If rcheck > rlimit Then
        Line (mx - (xv1 + mwide / 3), my)-(mx - (mwide / 2), my), mkolor + 3
    End If

    mwide = mwide + xv1 + wv2
    mx1 = mx1 - (Int(Rnd * pointy) + (Rnd * mwide) / 2)
    mx2 = mx2 + (Int(Rnd * pointy) + (Rnd * mwide) / 2)
    ' mwide = mx2 - mx1
Next my
GoTo dirt
done:
'end program
Cls
Clear
End
Reply


Messages In This Thread
planetdoodle2 - by James D Jarvis - 05-12-2022, 12:00 AM
RE: planetdoodle2 - by johnno56 - 05-12-2022, 01:01 PM



Users browsing this thread: 1 Guest(s)