Variable Platformer (Scrolling)

Instructions: This is like a normal platformer, but everything you see is in one variable, that's it. No sprites, only one backdrop, and no motion blocks.\n\n- Playing in Fullscreen glitches the game -\n\nArrow Keys to move\nAvoid spikes & pits\n), (, =, and " blocks move you\n\nIf it looks weird, press Z to open debug and change the symbols.\n\nLove and Favorite if you think it's cool!\nCheck out my other projects @Dogo2009\nAnd be sure to follow me if you like them.\nCode by 04tmoody.

@Stage\n\ndefine render\ndelete all of [list platformer v]\nset [i v] to [0]\nrepeat (9)\n    change [i v] by (1)\n    add [                                                     ↓ Scroll Down ↓] to [list platformer v]\nend\nrepeat (13)\n    change [i v] by (1)\n    add [] to [list platformer v]\n    set [j v] to [0]\n    repeat (29)\n        change [j v] by (1)\n        if <<<(i) = [10]> and <(j) > [24]>> or <<(i) = [11]> and <(j) > [22]>>> then\n            if <(j) = [29]> then\n                if <(i) = [10]> then\n                    replace item (i) of [list platformer v] with (join (item (i) of [list platformer v]) (join [ Time: ] (timer)))\n                else\n                    replace item (i) of [list platformer v] with (join (item (i) of [list platformer v]) (join [High Score: ] (☁ High Score)))\n                end\n            end\n        else\n            if <<((j) + (Camera X)) = (round (X))> and <(((i) - (9)) + (Camera Y)) = (round (Y))>> then\n                replace item (i) of [list platformer v] with (join (item (i) of [list platformer v]) (item (8) of [emojis v]))\n            else\n                replace item (i) of [list platformer v] with (join (item (i) of [list platformer v]) (item (letter ((j) + (Camera X)) of (item (((i) - (9)) + (Camera Y)) of [level v])) of [emojis v]))\n            end\n        end\n    end\nend\n\nwhen flag clicked\nshow list [emojis v]\nshow list [possible emojis v]\nshow variable [variable platformer v]\nshow list [debug v]\nswitch backdrop to (backdrop2 v)\nset [level width v] to [150]\nset [level height v] to [26]\nset [cam y focus v] to [8]\nset [cam x focus v] to [15]\nGenerate Level\nReset\nforever\n    wait (0.01) seconds\n    render\n    if <key (left arrow v) pressed?> then\n        Change X by [-0.3]\n    end\n    if <key (right arrow v) pressed?> then\n        Change X by [0.3]\n    end\n    change [y v] by (1)\n    Collisions \n    change [y v] by (-1)\n    if <(Collide?) = [5]> then\n        Change X by [-0.5]\n    end\n    if <(Collide?) = [6]> then\n        Change X by [0.5]\n    end\n    change [yv v] by (0.02)\n    if <<key (up arrow v) pressed?> and <(can jump?) = [1]>> then\n        change [y v] by (1)\n        Collisions \n        change [y v] by (-1)\n        if <(Collide?) = [3]> then\n            set [yv v] to [-0.8]\n        else\n            if <(Collide?) = [4]> then\n                set [yv v] to [0]\n            else\n                set [yv v] to [-0.5]\n            end\n        end\n    end\n    Change Y by (yv)\n    Collisions \n    if <<(Level Height) < (Y)> or <(Collide?) = [2]>> then\n        Reset\n    end\n    if <(X) > (Level Width)> then\n        broadcast (win v)\n        stop [this script v]\n    end\n    Camera\nend\n\ndefine Generate Level\ndelete all of [level v]\nset [i v] to [0]\nrepeat (Level Height)\n    change [i v] by (1)\n    add [] to [level v]\n    repeat (Level Width)\n        replace item (i) of [level v] with (join (item (i) of [level v]) [1])\n    end\nend\nAdd blocks [2] from [1] [26] to [13] [26]\nAdd blocks [2] from [10] [23] to [13] [25]\nAdd blocks [2] from [18] [20] to [21] [26]\nAdd blocks [2] from [26] [16] to [30] [26]\nAdd blocks [2] from [36] [0] to [38] [20]\nAdd blocks [2] from [31] [26] to [60] [26]\nAdd blocks [3] from [45] [24] to [45] [25]\nAdd blocks [3] from [52] [23] to [53] [25]\nAdd blocks [2] from [69] [26] to [73] [26]\nAdd blocks [4] from [74] [26] to [75] [26]\nAdd blocks [2] from [76] [13] to [80] [26]\nAdd blocks [2] from [81] [25] to [85] [26]\nAdd blocks [5] from [86] [25] to [90] [26]\nAdd blocks [2] from [91] [21] to [92] [26]\nAdd blocks [2] from [91] [0] to [92] [15]\nAdd blocks [6] from [93] [21] to [102] [21]\nAdd blocks [2] from [103] [19] to [104] [26]\nAdd blocks [7] from [105] [21] to [120] [21]\nAdd blocks [3] from [121] [20] to [123] [26]\nAdd blocks [2] from [124] [21] to [150] [26]\nAdd blocks [3] from [135] [19] to [137] [20]\n\ndefine Add blocks (type) from (x) (y) to (x2) (y2)\nset [i v] to ((y) - (1))\nrepeat (((y2) - (y)) + (1))\n    change [i v] by (1)\n    set [line v] to (item (i) of [level v])\n    replace item (i) of [level v] with []\n    set [j v] to [0]\n    repeat (Level Width)\n        change [j v] by (1)\n        if <<(j) > ((x) - (1))> and <(j) < ((x2) + (1))>> then\n            replace item (i) of [level v] with (join (item (i) of [level v]) (type))\n        else\n            replace item (i) of [level v] with (join (item (i) of [level v]) (letter (j) of (Line)))\n        end\n    end\nend\n\ndefine Collisions <detailed?>\nif <detailed?> then\n    set [collide? v] to ((letter (round (X)) of (item (round (Y)) of [level v])) - (1))\nelse\n    set [collide? v] to ((letter (round (X)) of (item (round (Y)) of [level v])) - (1))\n    if <<(Collide?) = [1]> or <<(Collide?) = [3]> or <<(Collide?) = [4]> or <<(Collide?) = [5]> or <(Collide?) = [6]>>>>> then\n        set [collide? v] to [1]\n    else\n        set [collide? v] to [0]\n    end\nend\n\ndefine Change X by (xv)\nchange [x v] by ((xv) / ([abs v] of (xv) ))\nCollisions <>\nif <(Collide?) = [1]> then\n    change [x v] by (() - ((xv) / ([abs v] of (xv) )))\nelse\n    change [x v] by (() - ((xv) / ([abs v] of (xv) )))\n    change [x v] by (xv)\nend\n\ndefine Change Y by (yv)\nset [can jump? v] to [0]\nchange [y v] by ((yv) / ([abs v] of (yv) ))\nCollisions <>\nif <(Collide?) = [1]> then\n    change [y v] by (() - ((yv) / ([abs v] of (yv) )))\n    set [yv v] to [0]\n    if <[0] < (yv)> then\n        set [can jump? v] to [1]\n    end\nelse\n    change [y v] by (() - ((yv) / ([abs v] of (yv) )))\n    change [y v] by (yv)\nend\n\ndefine Reset\nset [x v] to [2]\nset [y v] to ((Level Height) - (2))\nset [yv v] to [0]\n\ndefine Camera\nset [camera y v] to (round ((Y) - (Cam Y focus)))\nif <[0] > (Camera Y)> then\n    set [camera y v] to [0]\nend\nif <(Camera Y) > ((Level Height) - (13))> then\n    set [camera y v] to ((Level Height) - (13))\nend\nset [camera x v] to (round ((X) - (Cam X focus)))\nif <[0] > (Camera X)> then\n    set [camera x v] to [0]\nend\nif <(Camera X) > ((Level Width) - (29))> then\n    set [camera x v] to ((Level Width) - (29))\nend\n\nwhen I receive [win v]\nset [got record v] to [0]\nif <(timer) < (☁ High Score)> then\n    set [☁ high score v] to (timer)\n    set [got record v] to [1]\nend\nset [i v] to [9]\nrepeat (13)\n    change [i v] by (1)\n    replace item (i) of [list platformer v] with []\nend\nreplace item (14) of [list platformer v] with [                                                        \  I   I   I  /]\nreplace item (15) of [list platformer v] with [                                                       --  YOU  --]\nreplace item (16) of [list platformer v] with [                                                       --            --]\nreplace item (17) of [list platformer v] with [                                                       --  WIN   --]\nreplace item (18) of [list platformer v] with [                                                        /  I   I   I  \]\nif <(got record) = [1]> then\n    replace item (10) of [list platformer v] with [You got the High Score!]\nend\n\ndefine Update Emojis Selections\nset [k v] to [0]\nrepeat (8)\n    change [k v] by (1)\n    replace item (k) of [emojis v] with (letter (1) of (item (k) of [possible emojis v]))\nend\n\nUpdate Emojis Selections\n\nwhen [1 v] key pressed\nChange emoji # [1]\n\ndefine Change emoji # (#)\nask (join [Set symbol ] (join (#) [ to:])) and wait\nreplace item (#) of [emojis v] with (answer)\n\nwhen [2 v] key pressed\nChange emoji # [2]\n\nwhen [3 v] key pressed\nChange emoji # [3]\n\nwhen [4 v] key pressed\nChange emoji # [4]\n\nwhen [5 v] key pressed\nChange emoji # [5]\n\nwhen [6 v] key pressed\nChange emoji # [6]\n\nwhen [7 v] key pressed\nChange emoji # [7]\n\nwhen [8 v] key pressed\nChange emoji # [8]\n\nUpdate Emojis Selections\n\nwhen [z v] key pressed\nhide list [debug v]\nhide list [possible emojis v]\n\nwhen [x v] key pressed\nshow list [debug v]\nshow list [possible emojis v]\n\nwhen flag clicked\nwait until <key (any v) pressed?>\nreset timer\n\nset [☁ high score v] to [999.99]\n\nwhen flag clicked\nforever\n    set [variable platformer v] to (List Platformer)\nend\n\n