Quick a 3D platformer #games #all #pen #3D #platformer
@Stage\n\nwhen flag clicked\nforever\n    play sound [Masked Heroes - Vexento v] until done\n    wait (1) seconds\nend\n\n@Blank\n\n@Blank  \n\n@Blank    \n\n@Blank \n\n@Blank     \n\n@GAME\n\ndefine Line from point (x1) (y1) (z1)\nset [x1 v] to (x1)\nset [y1 v] to (y1)\nset [z1 v] to (z1)\n\ndefine Line from point - 2 (x2) (y2) (z2)\nset [x2 v] to (x2)\nset [y2 v] to (y2)\nset [z2 v] to (z2)\n\ndefine Draw Line (x1) (y1) (z1) to (x2) (y2) (z2)\nLine from point ((x1) - (cam x)) ((y1) - (cam y)) ((z1) - (cam z))\nLine from point - 2 ((x2) - (cam x)) ((y2) - (cam y)) ((z2) - (cam z))\nLine from point (((z1) * (sin Y)) + ((x1) * (cos Y))) (y1) (((z1) * (cos Y)) - ((x1) * (sin Y)))\nLine from point - 2 (((z2) * (sin Y)) + ((x2) * (cos Y))) (y2) (((z2) * (cos Y)) - ((x2) * (sin Y)))\nLine from point (x1) (((y1) * (cos X)) - ((z1) * (sin X))) (((y1) * (sin X)) + ((z1) * (cos X)))\nLine from point - 2 (x2) (((y2) * (cos X)) - ((z2) * (sin X))) (((y2) * (sin X)) + ((z2) * (cos X)))\nif <not <<(z1) < (near plane)> and <(z2) < (near plane)>>> then\n    Z Clipping\n    screen x ((view factor) * ((x1) / (z1))) ((view factor) * ((y1) / (z1)))\n    Set Screen Point 2: ((view factor) * ((x2) / (z2))) ((view factor) * ((y2) / (z2)))\n    XY Clipping\n    go to x: (x1) y: (y1)\n    pen down\n    go to x: (x2) y: (y2)\n    pen up\n    set pen size to (9)\nend\n\ndefine screen x (x1) (y1)\nset [x1 v] to (x1)\nset [y1 v] to (y1)\n\ndefine Set Screen Point 2: (x2) (y2)\nset [x2 v] to (x2)\nset [y2 v] to (y2)\n\ndefine Go to x: (x) y: (y) z: (z) with shift\ngo to x: ((view factor) * (((x) - (cam x)) / ((z) - (cam z)))) y: ((view factor) * (((y) - (cam y)) / ((z) - (cam z))))\n\ndefine Calculate side\nset [sin x v] to ([sin v] of (rot X) )\nset [cos x v] to ([cos v] of (rot X) )\nset [sin y v] to ([sin v] of (rot Y) )\nset [cos y v] to ([cos v] of (rot Y) )\n\ndefine Z Clipping\nif <<(z1) < (near plane)> or <(z2) < (near plane)>> then\n    set [chance v] to (((near plane) - (z1)) / ((z2) - (z1)))\n    if <(z1) < (near plane)> then\n        Line from point ((x1) + (((x2) - (x1)) * (chance))) ((y1) + (((y2) - (y1)) * (chance))) (near plane)\n    else\n        if <(z2) < (near plane)> then\n            Line from point - 2 ((x1) + (((x2) - (x1)) * (chance))) ((y1) + (((y2) - (y1)) * (chance))) (near plane)\n        end\n    end\nend\n\ndefine XY Clipping\nset [motion v] to (((y2) - (y1)) / ((x2) - (x1)))\nif <(x1) > [240]> then\n    if <(x2) > [240]> then\n        stop [this script v]\n    else\n        screen x (240) ((y1) + (((240) - (x1)) * (motion)))\n    end\nend\nif <(y1) > [180]> then\n    if <(y2) > [180]> then\n        stop [this script v]\n    else\n        screen x ((x1) + (((180) - (y1)) / (motion))) (180)\n    end\nend\nif <(x1) < [-240]> then\n    if <(x2) < [-240]> then\n        stop [this script v]\n    else\n        screen x (-240) ((y1) + (((-240) - (x1)) * (motion)))\n    end\nend\nif <(y1) < [-180]> then\n    if <(y2) < [-180]> then\n        stop [this script v]\n    else\n        screen x ((x1) + (((-180) - (y1)) / (motion))) (-180)\n    end\nend\nif <(x2) > [240]> then\n    Set Screen Point 2: (240) ((y1) + (((240) - (x1)) * (motion)))\nend\nif <(y2) > [180]> then\n    Set Screen Point 2: ((x1) + (((180) - (y1)) / (motion))) (180)\nend\nif <(x2) < [-240]> then\n    Set Screen Point 2: (-240) ((y1) + (((-240) - (x1)) * (motion)))\nend\nif <(y2) < [-180]> then\n    Set Screen Point 2: ((x1) + (((-180) - (y1)) / (motion))) (-180)\nend\n\ndefine Cube at (x) (y) (z) with size (size)\nDraw Line ((x) + (size)) ((y) + (size)) ((z) + (size)) to ((x) + (size)) ((y) - (size)) ((z) + (size))\nDraw Line ((x) + (size)) ((y) - (size)) ((z) + (size)) to ((x) - (size)) ((y) - (size)) ((z) + (size))\nDraw Line ((x) - (size)) ((y) - (size)) ((z) + (size)) to ((x) - (size)) ((y) + (size)) ((z) + (size))\nDraw Line ((x) - (size)) ((y) + (size)) ((z) + (size)) to ((x) + (size)) ((y) + (size)) ((z) + (size))\nDraw Line ((x) + (size)) ((y) + (size)) ((z) - (size)) to ((x) + (size)) ((y) - (size)) ((z) - (size))\nDraw Line ((x) + (size)) ((y) - (size)) ((z) - (size)) to ((x) - (size)) ((y) - (size)) ((z) - (size))\nDraw Line ((x) - (size)) ((y) - (size)) ((z) - (size)) to ((x) - (size)) ((y) + (size)) ((z) - (size))\nDraw Line ((x) - (size)) ((y) + (size)) ((z) - (size)) to ((x) + (size)) ((y) + (size)) ((z) - (size))\nDraw Line ((x) + (size)) ((y) + (size)) ((z) + (size)) to ((x) + (size)) ((y) + (size)) ((z) - (size))\nDraw Line ((x) + (size)) ((y) - (size)) ((z) + (size)) to ((x) + (size)) ((y) - (size)) ((z) - (size))\nDraw Line ((x) - (size)) ((y) - (size)) ((z) + (size)) to ((x) - (size)) ((y) - (size)) ((z) - (size))\nDraw Line ((x) - (size)) ((y) + (size)) ((z) + (size)) to ((x) - (size)) ((y) + (size)) ((z) - (size))\n\ndefine start\nLevel type\nPhysics\n\ndefine Level type\ndelete all of [x1 v]\ndelete all of [x2 v]\ndelete all of [y1 v]\ndelete all of [y2 v]\ndelete all of [z1 v]\ndelete all of [z2 v]\ndelete all of [type v]\nif <(setup) = [easy]> then\n    if <(level) = [0]> then\n        if <not <(COLLECTED) = [1]>> then\n            Tile at [60] [120] [180] with size [5] type [c]\n        end\n        Tile at [60] [0] [60] with size [30] type [g]\n        Tile at [60] [0] [120] with size [30] type [g]\n        Tile at [60] [0] [180] with size [30] type [g]\n        Tile at [60] [0] [240] with size [30] type [b]\n        Tile at [60] [0] [360] with size [30] type [g]\n        Tile at [60] [0] [420] with size [30] type [l]\n        Tile at [60] [0] [480] with size [30] type [g]\n        Tile at [60] [0] [540] with size [30] type [g]\n        Tile at [60] [0] [600] with size [30] type [f]\n        set pen color to (#000000)\n        Cube at (player x) (player y) (player z) with size [5]\n    else\n        if <(level) = [1]> then\n            Tile at [60] [0] [60] with size [30] type [g]\n            Tile at [0] [] [60] with size [30] type [g]\n            Tile at [-60] [] [60] with size [30] type [g]\n            Tile at [-120] [0] [60] with size [30] type [g]\n            Tile at [-120] [0] [120] with size [30] type [g]\n            Tile at [-120] [0] [180] with size [30] type [g]\n            Tile at [-120] [0] [240] with size [30] type [g]\n            Tile at [60] [] [120] with size [30] type [g]\n            Tile at [60] [] [180] with size [30] type [g]\n            Tile at [-60] [] [180] with size [30] type [l]\n            Tile at [-60] [] [120] with size [30] type [l]\n            Tile at [0] [] [120] with size [30] type [l]\n            Tile at [0] [] [180] with size [30] type [l]\n            Tile at [60] [] [240] with size [30] type [g]\n            Tile at [-60] [] [240] with size [30] type [l]\n            Tile at [0] [] [240] with size [30] type [g]\n            Tile at [60] [] [420] with size [30] type [g]\n            Tile at [-120] [] [300] with size [30] type [g]\n            Tile at [-120] [] [360] with size [30] type [g]\n            Tile at [-120] [] [420] with size [30] type [g]\n            Tile at [-60] [] [420] with size [30] type [g]\n            Tile at [0] [] [420] with size [30] type [l]\n            Tile at [0] [] [480] with size [30] type [g]\n            Tile at [0] [] [540] with size [30] type [g]\n            Tile at [60] [] [600] with size [30] type [g]\n            Tile at [60] [] [660] with size [30] type [f]\n            if <not <(COLLECTED) = [1]>> then\n                Tile at [-9] [60] [240] with size [5] type [c]\n            end\n            set pen color to (#000000)\n            Cube at (player x) (player y) (player z) with size [5]\n        else\n            if <(level) = [2]> then\n                if <not <(COLLECTED) = [1]>> then\n                    Tile at [60] [120] [240] with size [5] type [c]\n                end\n                Tile at [60] [0] [60] with size [30] type [g]\n                Tile at [0] [0] [60] with size [30] type [g]\n                Tile at [0] [60] [60] with size [30] type [g]\n                Tile at [120] [60] [60] with size [30] type [g]\n                Tile at [120] [] [60] with size [30] type [g]\n                Tile at [120] [120] [60] with size [30] type [g]\n                Tile at [] [120] [60] with size [30] type [g]\n                Tile at [60] [180] [60] with size [30] type [l]\n                Tile at [60] [0] [60] with size [30] type [g]\n                Tile at [60] [0] [120] with size [30] type [g]\n                Tile at [60] [0] [180] with size [30] type [g]\n                Tile at [60] [0] [240] with size [30] type [g]\n                Tile at [60] [0] [300] with size [30] type [l]\n                Tile at [60] [0] [360] with size [30] type [b]\n                Tile at [60] [0] [420] with size [30] type [l]\n                Tile at [60] [0] [480] with size [30] type [l]\n                Tile at [60] [0] [540] with size [30] type [f]\n                set pen color to (#000000)\n                Cube at (player x) (player y) (player z) with size [5]\n            else\n                if <(level) = [3]> then\n                    if <not <(COLLECTED) = [1]>> then\n                        Tile at [50] [120] [200] with size [5] type [c]\n                    end\n                    Tile at [60] [0] ((moving platformer x) + (120)) with size [30] type [m]\n                    Tile at [60] [0] ((moving platformer x) + (60)) with size [30] type [l]\n                    Tile at [60] [0] [60] with size [30] type [g]\n                    Tile at [60] [0] [600] with size [30] type [g]\n                    Tile at [60] [0] ((moving platformer x) + (680)) with size [30] type [m]\n                    Tile at [60] [0] ((moving platformer x) + (640)) with size [20] type [l]\n                    Tile at [60] [0] [1100] with size [30] type [f]\n                    set pen color to (#000000)\n                    Cube at (player x) (player y) (player z) with size [5]\n                else\n                    broadcast (Win v) and wait\n                    set [win v] to [y]\n                    stop [this script v]\n                end\n            end\n        end\n    end\nelse\n    if <(level) = [0]> then\n        if <not <(COLLECTED) = [1]>> then\n            Tile at [60] [0] [180] with size [5] type [c]\n        end\n        Tile at [60] [120] [120] with size [30] type [l]\n        Tile at [60] [0] [60] with size [30] type [g]\n        Tile at [60] [-60] [180] with size [30] type [g]\n        Tile at [60] [-60] [120] with size [30] type [l]\n        Tile at [0] [-60] [220] with size [10] type [l]\n        Tile at [20] [-60] [220] with size [10] type [l]\n        Tile at [40] [-60] [220] with size [10] type [l]\n        Tile at [60] [-60] [220] with size [10] type [l]\n        Tile at [80] [-60] [220] with size [10] type [l]\n        Tile at [100] [-60] [220] with size [10] type [l]\n        Tile at [60] [0] [260] with size [30] type [g]\n        Tile at [60] [0] [360] with size [30] type [f]\n        set pen color to (#000000)\n        Cube at (player x) (player y) (player z) with size [5]\n    else\n        if <(level) = [1]> then\n            Tile at [60] [0] ((moving platformer x) + (120)) with size [30] type [m]\n            Tile at [60] [0] ((moving platformer x) + (60)) with size [30] type [l]\n            Tile at [60] [0] [60] with size [30] type [g]\n            Tile at [60] [0] [600] with size [30] type [g]\n            Tile at [60] [0] ((moving platformer x) + (680)) with size [30] type [m]\n            Tile at [60] [0] ((moving platformer x) + (640)) with size [20] type [l]\n            if <not <(COLLECTED) = [1]>> then\n                Tile at [50] [120] [200] with size [5] type [c]\n            end\n            Tile at [60] [0] [1100] with size [30] type [f]\n            set pen color to (#000000)\n            Cube at (player x) (player y) (player z) with size [5]\n        else\n            if <(level) = [2]> then\n                if <not <(COLLECTED) = [1]>> then\n                    set [collected v] to [1]\n                end\n                Tile at [60] [0] [60] with size [30] type [g]\n                Tile at [60] [-60] [120] with size [30] type [g]\n                Tile at [60] [-120] [180] with size [30] type [g]\n                Tile at [60] [-180] [240] with size [30] type [l]\n                Tile at [60] [-120] [300] with size [30] type [g]\n                Tile at [60] [-60] [100] with size [5] type [l]\n                Tile at [60] [-120] [165] with size [5] type [l]\n                Tile at [60] [-110] ((moving platformer x) + (300)) with size [30] type [l]\n                Tile at [60] [-120] [360] with size [30] type [g]\n                Tile at [60] ((moving platformer x) + (-110)) [360] with size [30] type [f]\n                set pen color to (#000000)\n                Cube at (player x) (player y) (player z) with size [5]\n            else\n                broadcast (Win v)\n            end\n        end\n    end\nend\n\ndefine Physics\nchange [player y vel v] by (-1)\nif <key (left arrow v) pressed?> then\n    change [roto r x v v] by (0.8)\nend\nif <key (right arrow v) pressed?> then\n    change [roto r x v v] by (-0.8)\nend\nset [roto r x v v] to ((roto r x v) * (0.6))\nchange [rot y v] by (roto r x v)\nif <key (up arrow v) pressed?> then\n    change [roto r y v v] by (0.8)\nend\nif <key (down arrow v) pressed?> then\n    change [roto r y v v] by (-0.8)\nend\nset [roto r y v v] to ((roto r y v) * (0.6))\nchange [rot x v] by (roto r y v)\nif <key (a v) pressed?> then\n    change [player x vel v] by (join [-] (movement speed))\nend\nif <key (d v) pressed?> then\n    change [player x vel v] by (movement speed)\nend\nset [player x vel v] to ((player x vel) * (0.8))\nchange x\nif <key (w v) pressed?> then\n    change [player z vel v] by (movement speed)\nend\nif <key (s v) pressed?> then\n    change [player z vel v] by (join [-] (movement speed))\nend\nset [player z vel v] to ((player z vel) * (0.8))\nchange z\nchange [player y v] by (-2)\nCollision\nif <<key (space v) pressed?> and <(in air) = [1]>> then\n    set [player y vel v] to [12]\nend\nCollision\nif <(bounce) = [1]> then\n    set [player y vel v] to [16]\n    set [bounce v] to [0]\nend\nchange [player y v] by (2)\nchange y\nif <<key (up arrow v) pressed?> or <<key (left arrow v) pressed?> or <<key (right arrow v) pressed?> or <key (down arrow v) pressed?>>>> then\n    change [cam x v] by ((((player x) + (((sin Y) * (cos X)) * (150))) - (cam x)) / (10))\n    change [cam y v] by ((((player y) + ((sin X) * (-150))) - (cam y)) / (10))\nend\nchange [cam z v] by ((((player z) + (((cos Y) * (cos X)) * (-150))) - (cam z)) / (10))\nif <(player y) < [-70]> then\n    set [die v] to [die]\nend\nif <(Danger) = [1]> then\n    broadcast (dead v)\n    erase all\n    set [die v] to [die]\nend\n\ndefine Collision\nset [helper v] to [0]\nset [in air v] to [0]\nset [danger v] to [0]\nrepeat (length of [x1 v])\n    change [helper v] by (1)\n    if <((player x) + (player s)) > (item (helper) of [x1 v])> then\n        if <((player x) - (player s)) < (item (helper) of [x2 v])> then\n            if <((player y) - (player s)) < (item (helper) of [y1 v])> then\n                if <((player y) + (player s)) > (item (helper) of [y2 v])> then\n                    if <((player z) - (player s)) < (item (helper) of [z1 v])> then\n                        if <((player z) + (player s)) > (item (helper) of [z2 v])> then\n                            if <(item (helper) of [type v]) = [g]> then\n                                set [in air v] to [1]\n                            else\n                                if <(item (helper) of [type v]) = [b]> then\n                                    set [bounce v] to [1]\n                                else\n                                    if <(item (helper) of [type v]) = [f]> then\n                                        if <(COLLECTED) = [1]> then\n                                            set [finish line v] to [1]\n                                            broadcast (message1 v)\n                                        else\n                                            set [danger v] to [1]\n                                        end\n                                    else\n                                        if <(item (helper) of [type v]) = [m]> then\n                                            set [in air v] to [1]\n                                        else\n                                            if <(item (helper) of [type v]) = [c]> then\n                                                change [collected v] by (1)\n                                                delete (helper) of [type v]\n                                            else\n                                                set [danger v] to [1]\n                                            end\n                                        end\n                                    end\n                                end\n                            end\n                        end\n                    end\n                end\n            end\n        end\n    end\nend\n\ndefine Tile at (x) (y) (z) with size (size) type (type)\nif <(type) = [g]> then\n    set pen size to (5)\n    set pen color to (#d06e00)\nelse\n    if <(type) = [l]> then\n        set pen size to (5)\n        set pen color to (#ff0000)\n    else\n        if <(type) = [f]> then\n            set pen size to (5)\n            set pen color to (#4cff00)\n        else\n            if <(type) = [m]> then\n                set pen size to (5)\n                set pen color to (#ffffff)\n            else\n                if <(type) = [c]> then\n                    set pen size to (5)\n                    set pen color to (#ffcf00)\n                else\n                    set pen color to (#ffcf00)\n                end\n            end\n        end\n    end\nend\nCalculate side\nDraw Line ((x) + (size)) ((y) + (size)) ((z) + (size)) to ((x) + (size)) ((y) - (size)) ((z) + (size))\nDraw Line ((x) + (size)) ((y) - (size)) ((z) + (size)) to ((x) - (size)) ((y) - (size)) ((z) + (size))\nDraw Line ((x) - (size)) ((y) - (size)) ((z) + (size)) to ((x) - (size)) ((y) + (size)) ((z) + (size))\nDraw Line ((x) - (size)) ((y) + (size)) ((z) + (size)) to ((x) + (size)) ((y) + (size)) ((z) + (size))\nDraw Line ((x) + (size)) ((y) + (size)) ((z) - (size)) to ((x) + (size)) ((y) - (size)) ((z) - (size))\nDraw Line ((x) + (size)) ((y) - (size)) ((z) - (size)) to ((x) - (size)) ((y) - (size)) ((z) - (size))\nDraw Line ((x) - (size)) ((y) - (size)) ((z) - (size)) to ((x) - (size)) ((y) + (size)) ((z) - (size))\nDraw Line ((x) - (size)) ((y) + (size)) ((z) - (size)) to ((x) + (size)) ((y) + (size)) ((z) - (size))\nDraw Line ((x) + (size)) ((y) + (size)) ((z) + (size)) to ((x) + (size)) ((y) + (size)) ((z) - (size))\nDraw Line ((x) + (size)) ((y) - (size)) ((z) + (size)) to ((x) + (size)) ((y) - (size)) ((z) - (size))\nDraw Line ((x) - (size)) ((y) - (size)) ((z) + (size)) to ((x) - (size)) ((y) - (size)) ((z) - (size))\nDraw Line ((x) - (size)) ((y) + (size)) ((z) + (size)) to ((x) - (size)) ((y) + (size)) ((z) - (size))\nadd ((x) - (size)) to [x1 v]\nadd ((x) + (size)) to [x2 v]\nadd ((y) + (size)) to [y1 v]\nadd ((y) - (size)) to [y2 v]\nadd ((z) + (size)) to [z1 v]\nadd ((z) - (size)) to [z2 v]\nadd (type) to [type v]\n\ndefine change y\nchange [player y v] by (round (player y vel))\nCollision\nif <(in air) = [1]> then\n    repeat until <not <(in air) = [1]>>\n        Collision\n        if <(player y vel) > [0]> then\n            change [player y v] by (-1)\n        else\n            change [player y v] by (1)\n        end\n    end\n    set [player y vel v] to [0]\n    change [player y v] by (-1)\nend\n\ndefine change x\nchange [player x v] by (round (player x vel))\nCollision\nif <(in air) = [1]> then\n    change [player y v] by (12)\n    Collision\n    if <not <(in air) = [1]>> then\n        stop [this script v]\n    end\n    change [player y v] by (-12)\n    Collision\n    if <(in air) = [1]> then\n        repeat until <not <(in air) = [1]>>\n            Collision\n            if <(player x vel) > [0]> then\n                change [player x v] by (-1)\n            else\n                change [player x v] by (1)\n            end\n        end\n        if <(player x vel) > [0]> then\n            change [player x v] by (1)\n        else\n            change [player x v] by (-1)\n        end\n        set [player x vel v] to [0]\n    end\nend\n\ndefine change z\nchange [player z v] by (round (player z vel))\nCollision\nif <(in air) = [1]> then\n    change [player y v] by (12)\n    Collision\n    if <not <(in air) = [1]>> then\n        stop [this script v]\n    end\n    change [player y v] by (-12)\n    Collision\n    if <(in air) = [1]> then\n        repeat until <not <(in air) = [1]>>\n            Collision\n            if <(player z vel) > [0]> then\n                change [player z v] by (-1)\n            else\n                change [player z v] by (1)\n            end\n        end\n        if <(player z vel) > [0]> then\n            change [player z v] by (1)\n        else\n            change [player z v] by (-1)\n        end\n        set [player z vel v] to [0]\n    end\nend\n\ndefine Reset\nset [player y vel v] to [0]\nset [player x vel v] to [0]\nset [player x v] to [60]\nset [player y v] to [50]\nset [player z v] to [60]\nset [view factor v] to [300]\nset [cam x v] to [60]\nset [cam y v] to [50]\nset [cam z v] to [-140]\nset [rot x v] to [3]\nset [rot y v] to [355]\nset [danger v] to [0]\nset [bounce v] to [0]\nset [moving platformer x v] to [0]\nset [help x v] to [0]\nset [x pos v] to [0]\n\ndefine death\nset [die v] to []\n\nwhen I receive [message1 v]\nchange [level v] by (1)\nset [collected v] to [0]\n\nwhen flag clicked\nset [level v] to [0]\nwait until <(level) = [1]>\nset [player x v] to [60]\nset [player y v] to [55]\nset [player z v] to [60]\n\nwhen flag clicked\nswitch costume to (size hack small v)\nset size to (100) %\n\nwhen flag clicked\nerase all\nset [collected v] to [0]\n\nwhen flag clicked\nforever\n    if <(help x) = [0]> then\n        repeat until <(x pos) > [200]>\n            change [moving platformer x v] by (2)\n            change [x pos v] by (1)\n        end\n        set [help x v] to [1]\n    else\n        repeat until <[1] > (x pos)>\n            change [moving platformer x v] by (-2)\n            change [x pos v] by (-1)\n        end\n        set [help x v] to [0]\n    end\nend\n\nwhen I receive [start v]\nforever\n    Reset\n    repeat until <(die) > []>\n        erase all\n        start\n    end\n    death\nend\n\ndefine Render letter (letter) Position? (x) (y) Size (s)\ngo to x: (x) y: (y)\nset pen size to ((4) * (s))\nif <[a] = (letter)> then\n    pen down\n    go to x: (((5) * (s)) + (x position)) y: (((20) * (s)) + (y position))\n    go to x: (((5) * (s)) + (x position)) y: ((y position) - ((20) * (s)))\n    go to x: (((-2) * (s)) + (x position)) y: (((7) * (s)) + (y position))\n    change x by ((-5) * (s))\n    pen up\nend\nif <[b] = (letter)> then\n    pen down\n    change y by ((20) * (s))\n    change y by ((-20) * (s))\n    change x by ((10) * (s))\n    change y by ((9) * (s))\n    change x by ((-10) * (s))\n    change y by ((2) * (s))\n    change x by ((7) * (s))\n    change y by ((9) * (s))\n    change x by ((-7) * (s))\n    pen up\nend\nif <[c] = (letter)> then\n    pen down\n    change y by ((20) * (s))\n    change y by ((-20) * (s))\n    change x by ((10) * (s))\n    change x by ((-10) * (s))\n    change y by ((20) * (s))\n    change x by ((10) * (s))\n    pen up\nend\nif <[d] = (letter)> then\n    pen down\n    change y by ((20) * (s))\n    change x by ((8) * (s))\n    go to x: (((2) * (s)) + (x position)) y: (((-5) * (s)) + (y position))\n    change y by ((-10) * (s))\n    go to x: (((-2) * (s)) + (x position)) y: (((-5) * (s)) + (y position))\n    change x by ((-8) * (s))\n    pen up\nend\nif <[e] = (letter)> then\n    pen down\n    change y by ((20) * (s))\n    change y by ((-20) * (s))\n    change x by ((10) * (s))\n    change x by ((-10) * (s))\n    change y by ((10) * (s))\n    change x by ((10) * (s))\n    change x by ((-10) * (s))\n    change y by ((10) * (s))\n    change x by ((10) * (s))\n    change x by ((-10) * (s))\n    pen up\nend\nif <[f] = (letter)> then\n    pen down\n    change y by ((20) * (s))\n    change y by ((-20) * (s))\n    change y by ((10) * (s))\n    change x by ((10) * (s))\n    change x by ((-10) * (s))\n    change y by ((10) * (s))\n    change x by ((10) * (s))\n    change x by ((-10) * (s))\n    pen up\nend\nif <[g] = (letter)> then\n    pen down\n    change y by ((20) * (s))\n    change y by ((-20) * (s))\n    change x by ((7) * (s))\n    change y by ((5) * (s))\n    change x by ((-2) * (s))\n    change x by ((4) * (s))\n    change x by ((-2) * (s))\n    change y by ((-5) * (s))\n    change x by ((-7) * (s))\n    change y by ((20) * (s))\n    change x by ((7) * (s))\n    pen up\nend\nif <[h] = (letter)> then\n    pen down\n    change y by ((20) * (s))\n    change y by ((-10) * (s))\n    change x by ((10) * (s))\n    change y by ((10) * (s))\n    change y by ((-20) * (s))\n    pen up\nend\nif <[i] = (letter)> then\n    change x by ((5) * (s))\n    pen down\n    change y by ((20) * (s))\n    change x by ((5) * (s))\n    change x by ((-10) * (s))\n    change x by ((5) * (s))\n    change y by ((-20) * (s))\n    change x by ((5) * (s))\n    change x by ((-10) * (s))\n    change x by ((5) * (s))\n    pen up\nend\nif <[j] = (letter)> then\n    pen down\n    change y by ((10) * (s))\n    change y by ((-10) * (s))\n    change x by ((5) * (s))\n    change y by ((20) * (s))\n    change x by ((-5) * (s))\n    change x by ((10) * (s))\n    pen up\nend\nif <[k] = (letter)> then\n    pen down\n    change y by ((20) * (s))\n    change y by ((-10) * (s))\n    go to x: (((10) * (s)) + (x position)) y: (((-10) * (s)) + (y position))\n    go to x: (((-10) * (s)) + (x position)) y: (((10) * (s)) + (y position))\n    go to x: (((10) * (s)) + (x position)) y: (((10) * (s)) + (y position))\n    pen up\nend\nif <[l] = (letter)> then\n    pen down\n    change y by ((20) * (s))\n    change y by ((-20) * (s))\n    change x by ((10) * (s))\n    pen up\nend\nif <[m] = (letter)> then\n    pen down\n    change y by ((20) * (s))\n    go to x: (((5) * (s)) + (x position)) y: (((-10) * (s)) + (y position))\n    go to x: (((5) * (s)) + (x position)) y: (((10) * (s)) + (y position))\n    change y by ((-20) * (s))\n    pen up\nend\nif <[n] = (letter)> then\n    pen down\n    change y by ((20) * (s))\n    go to x: (((10) * (s)) + (x position)) y: (((-20) * (s)) + (y position))\n    change y by ((20) * (s))\n    pen up\nend\nif <[o] = (letter)> then\n    change y by ((5) * (s))\n    pen down\n    change y by ((10) * (s))\n    go to x: (((2) * (s)) + (x position)) y: (((5) * (s)) + (y position))\n    change x by ((6) * (s))\n    go to x: (((2) * (s)) + (x position)) y: (((-5) * (s)) + (y position))\n    change y by ((-10) * (s))\n    go to x: (((-2) * (s)) + (x position)) y: (((-5) * (s)) + (y position))\n    change x by ((-6) * (s))\n    go to x: (((-2) * (s)) + (x position)) y: (((5) * (s)) + (y position))\n    pen up\nend\nif <[p] = (letter)> then\n    pen down\n    change y by ((15) * (s))\n    go to x: (((2) * (s)) + (x position)) y: (((5) * (s)) + (y position))\n    change x by ((6) * (s))\n    go to x: (((2) * (s)) + (x position)) y: (((-5) * (s)) + (y position))\n    change y by ((-1) * (s))\n    go to x: (((-2) * (s)) + (x position)) y: (((-5) * (s)) + (y position))\n    change x by ((-6) * (s))\n    go to x: (((-2) * (s)) + (x position)) y: (((5) * (s)) + (y position))\n    pen up\nend\nif <[q] = (letter)> then\n    change y by ((5) * (s))\n    pen down\n    change y by ((10) * (s))\n    go to x: ((2) + (x position)) y: (((5) * (s)) + (y position))\n    change x by ((6) * (s))\n    go to x: ((2) + (x position)) y: (((-5) * (s)) + (y position))\n    change y by ((-10) * (s))\n    go to x: ((-2) + (x position)) y: ((-5) + (y position))\n    change x by ((-6) * (s))\n    go to x: ((-2) + (x position)) y: (((5) * (s)) + (y position))\n    pen up\n    change x by ((6) * (s))\n    pen down\n    go to x: (((5) * (s)) + (x position)) y: (((-5) * (s)) + (y position))\n    pen up\nend\nif <[r] = (letter)> then\n    pen down\n    change y by ((15) * (s))\n    go to x: (((2) * (s)) + (x position)) y: (((5) * (s)) + (y position))\n    change x by ((6) * (s))\n    go to x: (((2) * (s)) + (x position)) y: (((-5) * (s)) + (y position))\n    change y by ((-1) * (s))\n    go to x: (((-2) * (s)) + (x position)) y: (((-5) * (s)) + (y position))\n    change x by ((-6) * (s))\n    go to x: (((-2) * (s)) + (x position)) y: (((5) * (s)) + (y position))\n    change y by ((-3) * (s))\n    go to x: (((10) * (s)) + (x position)) y: (((-11) * (s)) + (y position))\n    pen up\nend\nif <[s] = (letter)> then\n    pen down\n    change y by ((2) * (s))\n    change y by ((-2) * (s))\n    change x by ((10) * (s))\n    change y by ((10) * (s))\n    change x by ((-10) * (s))\n    change y by ((10) * (s))\n    change x by ((10) * (s))\n    change y by ((-2) * (s))\n    change y by ((2) * (s))\n    pen up\nend\nif <[t] = (letter)> then\n    change x by ((5) * (s))\n    pen down\n    change y by ((20) * (s))\n    change x by ((5) * (s))\n    change x by ((-10) * (s))\n    pen up\nend\nif <[u] = (letter)> then\n    change y by ((5) * (s))\n    pen down\n    change y by ((15) * (s))\n    pen up\n    change x by ((10) * (s))\n    pen down\n    change y by ((-15) * (s))\n    go to x: (((-2) * (s)) + (x position)) y: (((-5) * (s)) + (y position))\n    change x by ((-6) * (s))\n    go to x: (((-2) * (s)) + (x position)) y: (((5) * (s)) + (y position))\n    pen up\n    change x by ((10) * (s))\n    pen down\n    change y by ((-5) * (s))\n    pen up\nend\nif <[v] = (letter)> then\n    change y by ((20) * (s))\n    pen down\n    go to x: (((5) * (s)) + (x position)) y: (((-20) * (s)) + (y position))\n    go to x: (((5) * (s)) + (x position)) y: (((20) * (s)) + (y position))\n    pen up\nend\nif <[w] = (letter)> then\n    change y by ((20) * (s))\n    pen down\n    go to x: (((2.5) * (s)) + (x position)) y: (((-20) * (s)) + (y position))\n    go to x: (((2.5) * (s)) + (x position)) y: (((20) * (s)) + (y position))\n    go to x: (((2.5) * (s)) + (x position)) y: (((-20) * (s)) + (y position))\n    go to x: (((2.5) * (s)) + (x position)) y: (((20) * (s)) + (y position))\n    pen up\nend\nif <[x] = (letter)> then\n    change y by ((20) * (s))\n    pen down\n    go to x: (((10) * (s)) + (x position)) y: (((-20) * (s)) + (y position))\n    pen up\n    change x by ((-10) * (s))\n    pen down\n    go to x: (((10) * (s)) + (x position)) y: (((20) * (s)) + (y position))\n    pen up\nend\nif <[y] = (letter)> then\n    change x by ((5) * (s))\n    pen down\n    change y by ((10) * (s))\n    go to x: (((5) * (s)) + (x position)) y: (((10) * (s)) + (y position))\n    go to x: (((-5) * (s)) + (x position)) y: (((-10) * (s)) + (y position))\n    go to x: (((-5) * (s)) + (x position)) y: (((10) * (s)) + (y position))\n    pen up\nend\nif <[z] = (letter)> then\n    pen down\n    change x by ((10) * (s))\n    go to x: (((-10) * (s)) + (x position)) y: (((20) * (s)) + (y position))\n    change x by ((10) * (s))\n    pen up\nend\nif <[0] = (letter)> then\n    pen down\n    change y by ((20) * (s))\n    change x by ((10) * (s))\n    change y by ((-20) * (s))\n    change x by ((-10) * (s))\n    pen up\nend\nif <[1] = (letter)> then\n    change x by ((5) * (s))\n    pen down\n    change y by ((20) * (s))\n    go to x: (((-5) * (s)) + (x position)) y: (((-5) * (s)) + (y position))\n    pen up\nend\nif <[2] = (letter)> then\n    pen down\n    change x by ((10) * (s))\n    change x by ((-10) * (s))\n    change y by ((10) * (s))\n    change x by ((10) * (s))\n    change y by ((10) * (s))\n    change x by ((-10) * (s))\n    pen up\nend\nif <[3] = (letter)> then\n    pen down\n    change x by ((10) * (s))\n    change y by ((10) * (s))\n    change x by ((-10) * (s))\n    change x by ((10) * (s))\n    change y by ((10) * (s))\n    change x by ((-10) * (s))\n    pen up\nend\nif <[4] = (letter)> then\n    change x by ((10) * (s))\n    pen down\n    change y by ((10) * (s))\n    change x by ((-10) * (s))\n    change y by ((10) * (s))\n    change y by ((-10) * (s))\n    change x by ((10) * (s))\n    change y by ((10) * (s))\n    pen up\nend\nif <[5] = (letter)> then\n    pen down\n    change x by ((10) * (s))\n    change y by ((10) * (s))\n    change x by ((-10) * (s))\n    change y by ((10) * (s))\n    change x by ((10) * (s))\n    pen up\nend\nif <[6] = (letter)> then\n    pen down\n    change x by ((10) * (s))\n    change y by ((10) * (s))\n    change x by ((-10) * (s))\n    change y by ((-10) * (s))\n    change y by ((20) * (s))\n    pen up\nend\nif <[7] = (letter)> then\n    change y by ((20) * (s))\n    pen down\n    change x by ((10) * (s))\n    change y by ((-20) * (s))\n    pen up\nend\nif <[8] = (letter)> then\n    pen down\n    change x by ((10) * (s))\n    change y by ((10) * (s))\n    change x by ((-10) * (s))\n    change y by ((-10) * (s))\n    change y by ((20) * (s))\n    change x by ((10) * (s))\n    change y by ((-10) * (s))\n    pen up\nend\nif <[9] = (letter)> then\n    change x by ((10) * (s))\n    pen down\n    change y by ((20) * (s))\n    change x by ((-10) * (s))\n    change y by ((-10) * (s))\n    change x by ((10) * (s))\n    pen up\nend\n\ndefine Word (word) Position? (x) (y) size: (s)\nset [start x v] to (x)\nset [start y v] to (y)\nset [letter v] to [0]\nrepeat (length of (word))\n    change [letter v] by (1)\n    Render letter (letter (Letter) of (word)) Position? (Start x) (Start y) Size (s)\n    change [start x v] by ((15) * (s))\nend\n\nwhen I receive [nc v]\n\nwhen flag clicked\nbroadcast (flag clicked v)\n\nwhen flag clicked\nset [win v] to [n]\nset [timer v] to [0]\n\nwhen I receive [start v]\nreset timer\nerase all\nforever\n    if <(win) = [n]> then\n        Word (round (timer)) Position? [-225] [150] size: [1]\n    end\nend\n\nwhen I receive [win v]\nerase all\nstop [other scripts in sprite v]\nset [timer v] to (round (timer))\nif <(setup) = [easy]> then\n    if <(timer) < (☁ HighScore - Easy 1st)> then\n        set [☁ highscore - easy 1st v] to (timer)\n        set [i of username v] to [0]\n        set [☁ highscore username easy - 1 v] to []\n        repeat until <(i of username) = (length of (username))>\n            change [i of username v] by (1)\n            set [i of username2 v] to [0]\n            repeat until <(letter (i of username) of (username)) = (letter (i of username2) of (symbol index))>\n                change [i of username2 v] by (1)\n            end\n            if <(length of (i of username2)) = [1]> then\n                set [i of username2 v] to (join [0] (i of username2))\n            end\n            set [☁ highscore username easy - 1 v] to (join (☁ Highscore Username Easy - 1) (i of username2))\n        end\n    else\n        set pen color to (#ff0000)\n        Word [Yay you won!] Position? [-150] [100] size: [2]\n        set pen color to (#ffd000)\n        Word (join [Your time ] (timer)) Position? [-150] [0] size: [1.5]\n        set pen color to (#1dff00)\n        Word [Click the green flag to play again] Position? [-225] [-100] size: [0.9]\n    end\nelse\n    if <(timer) < (☁ HighScore - Hard 1st)> then\n        set [☁ highscore - hard 1st v] to (timer)\n        set [i of username v] to [0]\n        set [☁ highscore username hard - 1 v] to []\n        repeat until <(i of username) = (length of (username))>\n            change [i of username v] by (1)\n            set [i of username2 v] to [0]\n            repeat until <(letter (i of username) of (username)) = (letter (i of username2) of (symbol index))>\n                change [i of username2 v] by (1)\n            end\n            if <(length of (i of username2)) = [1]> then\n                set [i of username2 v] to (join [0] (i of username2))\n            end\n            set [☁ highscore username hard - 1 v] to (join (☁ Highscore Username Hard - 1) (i of username2))\n        end\n    else\n        set pen color to (#ff0000)\n        Word [Yay you won!] Position? [-150] [100] size: [2]\n        set pen color to (#ffd000)\n        Word (join [Your time ] (timer)) Position? [-150] [0] size: [1.5]\n        set pen color to (#1dff00)\n        Word [Click the green flag to play again] Position? [-225] [-100] size: [0.9]\n    end\nend\nset pen color to (#ff0000)\nWord [Yay you won!] Position? [-150] [100] size: [2]\nset pen color to (#ffd000)\nWord (join [Your time ] (timer)) Position? [-150] [0] size: [1.5]\nset pen color to (#1dff00)\nWord [Click the green flag to play again] Position? [-225] [-100] size: [0.9]\n\nbroadcast (Win v)\n\nwhen I receive [highscore v]\nstop [other scripts in sprite v]\nerase all\nset pen color to (#ffd000)\nWord [easy] Position? [-175] [50] size: [2]\npen up\ndraw [-210] [40] to [-30] [40]\npen up\nWord [1st ] Position? [-150] [-5] size: [1.5]\npen up\nWord (join [Time ] (☁ HighScore - Easy 1st)) Position? [-200] [-60] size: [1.5]\npen up\nDecode\npen up\nWord (join [By ] [ElectroBolt]) Position? [-200] [-120] size: [1]\nset pen color to (#ff0000)\npen up\nWord [hard] Position? [60] [50] size: [2]\npen up\ndraw [210] [40] to [30] [40]\npen up\nWord [1st ] Position? [80] [-5] size: [1.5]\npen up\nWord (join [Time ] (☁ HighScore - Hard 1st)) Position? [30] [-60] size: [1.5]\npen up\nDecode\npen up\nWord (join [By ] [ElectroBolt]) Position? [30] [-120] size: [1]\nset pen color to (#ffffff)\nWord [Back] Position? [170] [-170] size: [1]\n\ndefine draw (x) (y) to (x1) (y1)\npen up\ngo to x: (x) y: (y)\npen down\ngo to x: (x1) y: (y1)\n\nwhen flag clicked\nset [symbol index v] to [abcdefghijklmnopqrstuvwxwz0123456789-=\;',./!@#$%^&*\(\)_+{}|:"<>?`~§]\n\nset [☁ highscore - hard 1st v] to [200]\n\ndefine Decode\nset [i of username v] to [0]\nset [decode v] to []\nrepeat until <(i of username) = (length of (☁ Highscore Username Easy - 1))>\n    change [i of username v] by (2)\n    set [decode v] to (join (letter ((i of username) - (☁ Highscore Username Easy - 1)) of (letter (i of username) of (☁ Highscore Username Easy - 1))) (symbol index))\nend\n\nwhen I receive [flag clicked v]\nforever\n    if <(setup) = [n]> then\n        erase all\n        set pen color to (#000000)\n        Word [play] Position? [-100] [-40] size: [3.5]\n        set pen color to (#65ff00)\n        Word [quick a 3d platformer] Position? [-218] [100] size: [1.4]\n        set pen color to (#ffd000)\n        Word [Highscore] Position? [-125] [-150] size: [2]\n    else\n        if <(setup) = [y]> then\n            erase all\n            set pen color to (#000000)\n            Word [play] Position? [-95] [-35] size: [3.3]\n            set pen color to (#65ff00)\n            Word [quick a 3d platformer] Position? [-218] [100] size: [1.4]\n            set pen color to (#ffd000)\n            Word [Highscore] Position? [-125] [-150] size: [2]\n        else\n            if <(setup) = [g]> then\n                erase all\n                set pen color to (#65ff00)\n                Word [choose the difficulty] Position? [-215] [100] size: [1.4]\n                set pen color to (#ffd000)\n                Word [easy] Position? [-50] [0] size: [2]\n                set pen color to (#ff0000)\n                Word [hard] Position? [-50] [-75] size: [2]\n            end\n        end\n    end\nend\n\n@SCREEN\n\nwhen I receive [dead v]\nswitch costume to (costume1 v)\nshow\nrepeat (20)\n    change [ghost v] effect by (5)\nend\nhide\nset [ghost v] effect to (0)\n\nwhen flag clicked\nhide\nset [ghost v] effect to (0)\nhide variable [movement speed v]\n\n@MOUSE\n\nwhen flag clicked\nset [setup v] to [n]\nshow\nset [ghost v] effect to (100)\nforever\n    if <touching color (#000000)?> then\n        set [setup v] to [y]\n        if <<touching color (#000000)?> and <mouse down?>> then\n            set [setup v] to [g]\n            stop [this script v]\n        end\n    else\n        if <<touching color (#ffd000)?> and <mouse down?>> then\n            broadcast (Highscore v)\n            if <<touching color (#ffffff)?> and <mouse down?>> then\n                broadcast (flag clicked v)\n            end\n        else\n            set [setup v] to [n]\n        end\n    end\nend\n\nwhen flag clicked\nforever\n    go to (mouse-pointer v)\n    if <(setup) = [g]> then\n        if <<touching color (#ffd000)?> and <mouse down?>> then\n            erase all\n            set [movement speed v] to [2]\n            set [setup v] to [easy]\n            broadcast (start v)\n        else\n            if <<touching color (#ff0000)?> and <mouse down?>> then\n                erase all\n                set [movement speed v] to [0.5]\n                set [setup v] to [hard]\n                broadcast (start v)\n            end\n        end\n    end\nend\n\nwhen I receive [highscore v]\nforever\n    if <<touching color (#ffffff)?> and <mouse down?>> then\n        broadcast (flag clicked v)\n    end\nend\n\n@TB\n\nwhen flag clicked\nforever\n    set [ghost v] effect to (100)\nend\n\n
Ladies and Gentlemen, Boys and Girls, after a long time of continuous hard work, I present you my first 3D platformer!\n========================================\nInstructions - \n1) W,A,S,D to move\n2) Arrow keys to change your view - keep bird eye view\n3) Space to jump\n4) Brown is land\n5) Red is lava (stay away from it)\n6) Big yellow is trampoline\n7) Tiny yellows are coins (You must collect the coins to \n    finish the level )\n8) White is moving platform \n9) Touch green to go to the next level\n10) Love, Fav and follow me xD\n\nCan you beat the game in both modes?