The Platformer (An Impossible Platformer)
@Stage\n\nwhen I receive [start v]\nswitch backdrop to (backdrop1 v)\nbroadcast (start player v)\nwait (3) seconds\nnext backdrop\n\nwhen I receive [start player v]\nwait (0.3) seconds\nforever\n    play sound (pick random (1) to (5)) until done\nend\n\nwhen flag clicked\nhide variable [☁ world record: v]\nhide variable [user: v]\nswitch backdrop to (backdrop12 v)\n\nwhen I receive [next level v]\nnext backdrop\n\nwhen flag clicked\nforever\n    if <(backdrop [number v]) = [15]> then\n        broadcast (laser v)\n    end\n    if <(backdrop [number v]) = [22]> then\n        if <(Deaths:) < (☁ World Record:)> then\n            set [level: v] to [20]\n            set [☁ world record: v] to (Deaths:)\n        end\n    end\n    if <(backdrop [number v]) = [20]> then\n        broadcast (laser 2 v)\n    end\n    if <(backdrop [number v]) = [16]> then\n        hide variable [level: v]\n        ask [What's 9 + 10?] and wait\n        if <(answer) = (21)> then\n            ask [What level were you on?] and wait\n            if <(answer) = (3)> then\n                show variable [level: v]\n                next backdrop\n            else\n                broadcast (question wrong v)\n                set [level: v] to [1]\n                show variable [level: v]\n                switch backdrop to (backdrop2 v)\n            end\n        else\n            broadcast (question wrong v)\n            show variable [level: v]\n            switch backdrop to (backdrop2 v)\n            set [level: v] to [1]\n        end\n    end\n    if <(backdrop [number v]) = [21]> then\n        broadcast (laser 3 and 4 v)\n    end\nend\n\n@Sprite1\n\nwhen flag clicked\nshow\nset size to (275) %\nswitch costume to (costume2 v)\ngo to x: (-10) y: (20)\nforever\n    if <touching (mouse-pointer v)?> then\n        switch costume to (costume3 v)\n        if <(start key) = [0]> then\n            start sound [laser2 v]\n            set [start key v] to [1]\n        end\n    else\n        switch costume to (costume2 v)\n        set [start key v] to [0]\n    end\n    if <<touching (mouse-pointer v)?> and <mouse down?>> then\n        wait until <not <mouse down?>>\n        broadcast (Start v)\n        hide\n        stop [this script v]\n    end\nend\n\n@Sprite2\n\nwhen I receive [laser v]\nshow\nforever\n    if <(x position) > [95]> then\n        go to x: (36) y: (-33)\n    end\n    change x by (2)\n    if <(backdrop [number v]) = [16]> then\n        hide\n        stop [this script v]\n    end\nend\n\nwhen flag clicked\nhide\ngo to x: (36) y: (-33)\n\n@Sprite3\n\nwhen flag clicked\nshow\nset [ghost v] effect to (100)\ngo to [front v] layer\ngo to x: (0) y: (0)\n\n@Sprite4\n\nwhen flag clicked\ngo to [front v] layer\ngo [backward v] (1) layers\nhide\ngo to x: (83) y: (-75)\n\nwhen I receive [laser 2 v]\nshow\nforever\n    if <(backdrop [number v]) = [21]> then\n        hide\n        stop [this script v]\n    end\nend\n\nwhen I receive [laser 2 v]\nforever\n    change y by (3)\n    if <(y position) > [190]> then\n        set y to (-75)\n    end\nend\n\n@Sprite5\n\nwhen flag clicked\ngo to [front v] layer\ngo [backward v] (1) layers\nhide\ngo to x: (-70) y: (14)\n\nwhen I receive [laser 3 and 4 v]\nshow\nforever\n    change x by (3)\n    if <(x position) > [230]> then\n        set x to (-70)\n    end\n    if <(backdrop [number v]) = [22]> then\n        hide\n        stop [this script v]\n    end\nend\n\n@Sprite6\n\nwhen flag clicked\ngo to [front v] layer\ngo [backward v] (1) layers\nhide\ngo to x: (75) y: (-134)\n\nwhen I receive [laser 3 and 4 v]\nshow\nforever\n    change y by (3)\n    if <(y position) > [154]> then\n        set y to (-134)\n    end\n    if <(backdrop [number v]) = [22]> then\n        hide\n        stop [this script v]\n    end\nend\n\n@Player\n\ndefine Touch Ground <>\nchange [falling? v] by (1)\nrepeat until <not <touching color (#000000)?>>\n    if <up?> then\n        change y by (-1)\n    else\n        change y by (1)\n        set [falling? v] to [0]\n    end\n    set [speed y v] to [0]\nend\n\ndefine None\nchange x by (speed)\nset [slope v] to [0]\nrepeat until <<(slope) = [8]> or <not <touching color (#000000)?>>>\n    change y by (1)\n    change [slope v] by (1)\nend\nif <(slope) = [8]> then\n    change x by ((0) - (speed))\n    change y by ((0) - (slope))\n    if <key (up arrow v) pressed?> then\n        if <(speed x) > [0]> then\n            set [speed x v] to [-20]\n        else\n            set [speed x v] to [20]\n        end\n        set [speed y v] to [14]\n        start sound [boing v]\n    else\n        set [speed x v] to [0]\n    end\nend\n\nwhen I receive [question wrong v]\ngo to x: (-215) y: (-50)\n\nwhen flag clicked\nhide variable [3 v]\nset [level: v] to [1]\nset [deaths: v] to [0]\nset [user: v] to (username)\nset [3 v] to [13]\nhide variable [21 v]\nset [21 v] to [19]\nhide variable [level: v]\nhide variable [deaths: v]\nset rotation style [left-right v]\nset size to (100) %\ngo to [front v] layer\ngo [backward v] (1) layers\nhide\n\nwhen I start as a clone\nrepeat (4)\n    change [ghost v] effect by (25)\nend\ndelete this clone\n\nwhen I receive [start player v]\nwait (3) seconds\ngo to x: (-215) y: (30)\nshow\nshow variable [☁ world record: v]\nshow variable [level: v]\nshow variable [deaths: v]\nshow variable [user: v]\nset [speed y v] to [0]\nset [can move v] to [2]\nforever\n    change [speed y v] by (-1)\n    change y by (speed y)\n    Touch Ground <(speed y) > [0]>\n    if <key (up arrow v) pressed?> then\n        if <(Can Move) = [2]> then\n            if <(falling?) < [3]> then\n                set [speed y v] to [14.5]\n                set [falling? v] to [6]\n                start sound [water drop v]\n            end\n        end\n    end\n    set [speed x v] to ((speed x) * (0.75))\n    if <(Can Move) = [2]> then\n        if <key (left arrow v) pressed?> then\n            change [speed x v] by (-2.5)\n        end\n        if <key (right arrow v) pressed?> then\n            change [speed x v] by (2.5)\n        end\n        Walk (speed x)\n        if <touching color (#00ffff)?> then\n            if <key (up arrow v) pressed?> then\n                set [speed y v] to [7]\n            else\n                set [speed y v] to [-1.5]\n            end\n        end\n    end\n    if <touching color (#ff0000)?> then\n        go to x: (-215) y: (-50)\n        start sound [pop v]\n        change [deaths: v] by (1)\n        set [falling? v] to [6]\n        set [speed y v] to [0]\n        set [speed x v] to [0]\n        switch costume to (costume5 v)\n    end\n    if <(x position) > [238]> then\n        broadcast (Next Level v)\n        change [level: v] by (1)\n        go to x: (-215) y: (-50)\n    end\n    if <touching color (#ff9400)?> then\n        set [speed y v] to [23]\n        start sound [zoop v]\n    end\n    if <(speed y) = [0]> then\n        if <(speed x) > [.5]> then\n            switch costume to (costume1 v)\n        else\n            if <(speed x) < [-5]> then\n                switch costume to (costume2 v)\n            else\n                switch costume to (costume5 v)\n            end\n        end\n    end\n    if <(speed y) < [0]> then\n        if <<(speed x) > [.5]> and <(speed y) < [0]>> then\n            switch costume to (costume8 v)\n        else\n            if <<(speed x) < [-.5]> and <(speed y) < [0]>> then\n                switch costume to (costume9 v)\n            else\n                switch costume to (costume4 v)\n            end\n        end\n    end\n    if <(speed y) > [0]> then\n        if <<(speed x) > [.5]> and <(speed y) > [0]>> then\n            switch costume to (costume6 v)\n        else\n            if <<(speed x) < [-.5]> and <(speed y) > [0]>> then\n                switch costume to (costume7 v)\n            else\n                switch costume to (costume3 v)\n            end\n        end\n    end\n    create clone of (_myself_ v)\nend\n\n
This is my first project in Scratch, so I hope you guys like it!\n\nControls:\n\nUse the arrow keys to move. Up key is to jump.\n\nDISCLAIMER: This platformer has been specifically designed to be very frustrating and is not for beginners. All levels have been tested and are ALL possible. I am not responsible for any raging or any broken computers :).