' Program: Star Parallax Screensaver (Horizontal)
' Created: May 16th, 2020
' Creator: Cloud Zimmermann

SCREEN 7, 1, 0, 1
RANDOMIZE TIMER

CONST screenWidth% = 320
CONST screenHeight% = 200
CONST count% = 200
DIM SHARED stars%(count%, 5)

FOR i% = 1 TO count% - 1
    CALL resetStar(i%, 1)
NEXT i%

WHILE INKEY$ = ""
    CLS
    FOR i% = 1 TO count% - 1
        IF stars%(i%, 1) > screenWidth% THEN
            CALL resetStar(i%, 0)
        ELSE
            stars%(i%, 1) = stars%(i%, 1) + stars%(i%, 3)
        END IF
        PSET (stars%(i%, 1), stars%(i%, 2)), stars%(i%, 4)
    NEXT i%
    PCOPY 0, 1
    _LIMIT 60
WEND

SUB resetStar (starSelected%, init%)
    IF init% = 1 THEN
        stars%(starSelected%, 1) = INT(RND * screenWidth%) + 1
    ELSE
        stars%(starSelected%, 1) = 1
    END IF

    stars%(starSelected%, 2) = INT(RND * screenHeight%) + 1
    stars%(starSelected%, 3) = INT(RND * 3) + 1

    SELECT CASE INT(RND * 3) + 1
        CASE 1
            stars%(starSelected%, 4) = 15
        CASE 2
            stars%(starSelected%, 4) = 7
        CASE ELSE
            stars%(starSelected%, 4) = 8
    END SELECT

END SUB
