pxt-arcade 1.13.12 → 1.13.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"id":"arcade","name":"arcade","nickname":"arcade","thumbnailName":"MakeCode Arcade","title":"Microsoft MakeCode Arcade","description":"Develop your programming skills by quickly creating and modding retro arcade games with Blocks and JavaScript in the MakeCode editor","corepkg":"device","cloud":{"workspace":false,"sharing":true,"thumbnails":true,"importing":true,"packages":true,"publishing":true,"githubPackages":true,"showBadges":true,"cloudProviders":{"github":{"id":"github","name":"GitHub","icon":"/static/providers/github-mark.png","identity":false,"order":3},"microsoft":{"id":"microsoft","name":"Microsoft","icon":"/static/providers/microsoft-logo.svg","identity":true,"redirect":true,"order":1},"google":{"id":"google","name":"Google","icon":"/static/providers/google-logo.svg","identity":true,"redirect":true,"order":2}}},"staticpkgdirs":{"base":["libs/hw","libs/hw---n3","libs/hw---samd51","libs/hw---stm32f401"],"extensions":["libs/accelerometer","libs/color","libs/edge-connector","libs/esp32","libs/feather","libs/light","libs/lightsensor","libs/mqtt","libs/net","libs/net-game","libs/palette","libs/radio","libs/radio-broadcast","libs/serial","libs/servo","libs/settings","libs/sevenseg","libs/thermometer"]},"cacheusedblocksdirs":["skillmap/space","skillmap/platformer"],"compile":{"useUF2":true,"deployDrives":"(ARCADE|PY|FTHR840BOOT|ARCD|RPI-RP2)","deployFileMarker":"INFO_UF2.TXT","driveName":"ARCADE","floatingPoint":true,"taggedInts":true,"nativeType":"thumb","gc":true,"upgrades":[],"webUSB":true,"saveAsPNG":true,"patches":{"0.0.0 - *":[{"type":"missingPackage","map":{"(DigitalPin|AnalogPin|pins)\\.P\\d\\d?":"edge-connector","serial\\.":"serial"}}],"0.0.0 - 0.1.1":[{"type":"api","map":{"controller\\.controlSprite":"controller.moveSprite","controller\\.controlPlayer":"controller.movePlayer"}}],"0.0.0 - 0.3.23":[{"type":"package","map":{"local-multiplayer":""}}],"0.0.0 - 0.3.24":[{"type":"api","map":{"sprites\\.createEmptySprite\\(([^)]+)\\)":"sprites.create(img`.`, $1)"}},{"type":"blockId","map":{"keysdx":"keydx","keysdy":"keydy"}}],"0.0.0 - 0.11.20":[{"type":"api","map":{"SpriteKind":"SpriteKindLegacy"}}],"0.0.0 - 0.14.57":[{"type":"missingPackage","map":{"scene\\.setTileMap":"color-coded-tilemap","scene\\.setTile":"color-coded-tilemap","scene\\.getTile":"color-coded-tilemap","scene\\.getTilesByType":"color-coded-tilemap","scene\\.placeOnRandomTile":"color-coded-tilemap","scene\\.setTileAt":"color-coded-tilemap","scene\\.onHitTile":"color-coded-tilemap","\\.tileHitFrom":"color-coded-tilemap"}}],"0.0.0 - 0.18.9":[{"type":"api","map":{"tilemap\\s*\\.\\s*createTileSprite":"tiles.createTileSprite","tilemap\\s*\\.\\s*coverAllTiles":"tiles.coverAllTiles","tilemap\\s*\\.\\s*createSpritesOnTiles":"tiles.createSpritesOnTiles","tilemap\\s*\\.\\s*destorySpritesOfKind":"tiles.destroySpritesOfKind","tilemap\\s*\\.\\s*tileIs":"tiles.tileIs","tilemap\\s*\\.\\s*tileIsWall":"tiles.tileIsWall","tilemap\\s*\\.\\s*forEachTileOfKind":"tiles.forEachTileOfKind","tilemap\\s*\\.\\s*forEachTileOfMap":"tiles.forEachTileOfMap","tilemap\\s*\\.\\s*replaceAllTiles":"tiles.replaceAllTiles","tilemap\\s*\\.\\s*columnInDirection":"tiles.columnInDirection","tilemap\\s*\\.\\s*rowInDirection":"tiles.rowInDirection","tilemap\\s*\\.\\s*forEachDirection":"tiles.forEachDirection","tilemap\\s*\\.\\s*centerCameraOnTile":"tiles.centerCameraOnTile","tilemap\\s*\\.\\s*locationOfSprite":"tiles.locationOfSprite","tilemap\\s*\\.\\s*RowCol":"tiles.RowCol","tilemap\\s*\\.\\s*spriteRowCol":"tiles.spriteRowCol","tilemap\\s*\\.\\s*locationColumn":"tiles.locationColumn","tilemap\\s*\\.\\s*locationRow":"tiles.locationRow","tilemap\\s*\\.\\s*XY":"tiles.XY","tilemap\\s*\\.\\s*locationXY":"tiles.locationXY","tilemap\\s*\\.\\s*locationInDirection":"tiles.locationInDirection","tilemap\\s*\\.\\s*_directionEditor":"tiles._directionEditor","tilemap\\s*\\.\\s*tileWidth":"tiles.tileWidth","tilemap\\s*\\.\\s*tilemapColumns":"tiles.tilemapColumns","tilemap\\s*\\.\\s*tilemapRows":"tiles.tilemapRows","tilemap\\s*\\.\\s*screenCoordinateToTile":"tiles.screenCoordinateToTile","tilemap\\s*\\.\\s*tileCoordinateToScreen":"tiles.tileCoordinateToScreen","tilemap\\s*\\.\\s*centeredTileCoordinateToScreen":"tiles.centeredTileCoordinateToScreen","tilemap\\s*\\.\\s*OVERWORLD_MAP_ID":"tiles.OVERWORLD_MAP_ID","tilemap\\s*\\.\\s*MAP_LOADED_EVENT":"tiles.MAP_LOADED_EVENT","tilemap\\s*\\.\\s*WorldMap":"tiles.WorldMap","tilemap\\s*\\.\\s*WorldMapConnection":"tiles.WorldMapConnection","tilemap\\s*\\.\\s*createMap":"tiles.createMap","tilemap\\s*\\.\\s*copyMap":"tiles.copyMap","tilemap\\s*\\.\\s*loadMap":"tiles.loadMap","tilemap\\s*\\.\\s*getLoadedMap":"tiles.getLoadedMap","tilemap\\s*\\.\\s*onMapLoaded":"tiles.onMapLoaded","tilemap\\s*\\.\\s*onMapUnloaded":"tiles.onMapUnloaded","tilemap\\s*\\.\\s*connectMapById":"tiles.connectMapById","tilemap\\s*\\.\\s*loadConnectedMap":"tiles.loadConnectedMap","tilemap\\s*\\.\\s*getConnectedMap":"tiles.getConnectedMap","tilemap\\s*\\.\\s*setWorldLocationToMap":"tiles.setWorldLocationToMap","tilemap\\s*\\.\\s*loadMapAt":"tiles.loadMapAt","tilemap\\s*\\.\\s*getMapAtWorldLocation":"tiles.getMapAtWorldLocation","tilemap\\s*\\.\\s*loadMapInDirection":"tiles.loadMapInDirection","tilemap\\s*\\.\\s*loadedWorldColumn":"tiles.loadedWorldColumn","tilemap\\s*\\.\\s*loadedWorldRow":"tiles.loadedWorldRow"}}],"0.0.0 - 1.9.0":[{"type":"api","map":{"myCorg\\s*\\.\\s*follow":"myCorg.cameraFollow"}}]},"switches":{},"jsRefCounting":false,"utf8":true},"compileService":{"buildEngine":"codal","githubCorePackage":"lancaster-university/codal","gittag":"v0.8.0","dockerImage":"pext/yotta:latest","codalTarget":{"branches":{}}},"variants":{"stm32f401":{"compile":{"hasHex":true,"openocdScript":"source [find interface/stlink-v2.cfg]; source [find target/stm32f4x.cfg]","flashEnd":524288,"uf2Family":"0x57755a57"},"compileService":{"codalTarget":{"name":"codal-big-brainpad","url":"https://github.com/lancaster-university/codal-big-brainpad","branch":"v1.3.1","type":"git"},"codalBinary":"STM32","serviceId":"codal2stm32","dockerImage":"pext/yotta:latest"}},"samd51":{"compile":{"hasHex":true,"openocdScript":"source [find interface/cmsis-dap.cfg]; set CHIPNAME at91samd51g19; source [find target/atsame5x.cfg]","openocdScriptAlt":"source [find interface/stlink-v2.cfg]; set CPUTAPID 0x2ba01477; set CHIPNAME at91samd51g19; source [find target/at91samdXX.cfg]","ramSize":196608,"flashEnd":524288,"uf2Family":"0x55114460"},"compileService":{"codalTarget":{"name":"codal-itsybitsy-m4","url":"https://github.com/lancaster-university/codal-itsybitsy-m4","branch":"v0.2.7","type":"git"},"codalBinary":"ITSYBITSY_M4","serviceId":"codal2samd51","dockerImage":"pext/yotta:latest"}},"nrf52840":{"compile":{"hasHex":true,"openocdScript":"source [find interface/cmsis-dap.cfg]; source [find target/nrf52.cfg]","webUSB":false,"flashEnd":1007616,"uf2Family":"0xada52840"},"compileService":{"codalTarget":{"name":"codal-nrf52840-dk","url":"https://github.com/mmoskal/codal-nrf52840-dk","branch":"v1.1.7","type":"git"},"codalBinary":"NRF52840_DK","serviceId":"codal2nrf52840","dockerImage":"pext/yotta:latest","yottaConfig":{"pxt":{"board":{"id":"BOARD_ID_NRF52840"}}}}},"nrf52833":{"compile":{"hasHex":true,"openocdScript":"source [find interface/cmsis-dap.cfg]; source [find target/nrf52.cfg]","webUSB":false,"useUF2":false,"flashEnd":524288,"deployDrives":".*","deployFileMarker":"DETAILS.TXT"},"compileService":{"codalTarget":{"name":"codal-nrf52833-dk","url":"https://github.com/mmoskal/codal-nrf52833-dk","branch":"v2.0.2","type":"git"},"codalBinary":"NRF52840_DK","serviceId":"codal2nrf52840","dockerImage":"pext/yotta:latest","yottaConfig":{"pxt":{"board":{"id":"BOARD_ID_NRF52833"}}}}},"rp2040":{"compile":{"hasHex":true,"openocdScript":"???","flashChecksumAddr":0,"flashEnd":2097152,"uf2Family":"0xe48bff56"},"compileService":{"codalTarget":{"name":"codal-pi-pico","url":"https://github.com/lancaster-university/codal-pi-pico","branch":"v0.0.13","type":"git"},"gittag":"v0.9.0","codalBinary":"PI-PICO","serviceId":"codal2pico","dockerImage":"pext/arm:gcc9"}},"rpi":{"compile":{"hasHex":true,"useELF":true,"runtimeIsARM":true,"flashCodeAlign":256,"webUSB":false,"stackAlign":2},"compileService":{"buildEngine":"dockermake","dockerImage":"pext/rpi:alsa","serviceId":"rpi"}},"vm":{"compile":{"hasHex":true,"useELF":true,"flashCodeAlign":256,"webUSB":false,"nativeType":"vm","stackAlign":2},"compileService":{"buildEngine":"dockercross","dockerImage":"pext/crossbuild","serviceId":"crossbuild","skipCloudBuild":true}}},"serial":{"useEditor":true,"log":true,"editorTheme":{"graphBackground":"#d9d9d9","lineColors":["#009DDC","#FB48C7","#40bf4a","#8073E5","#d25b33"]}},"runtime":{"mathBlocks":true,"loopsBlocks":true,"logicBlocks":true,"variablesBlocks":true,"textBlocks":true,"functionBlocks":true,"breakBlock":true,"continueBlock":true,"pauseUntilBlock":{"category":"loops"},"functionsOptions":{"useNewFunctions":true,"extraFunctionEditorTypes":[{"typeName":"Sprite","icon":"send","defaultName":"mySprite"},{"typeName":"Image","icon":"image outline","defaultName":"myImage"}]},"listsBlocks":true,"tilesetFieldEditorIdentity":"images._tile","bannedCategories":["pins","control","input","serial","power"]},"simulator":{"autoRun":true,"autoRunLight":false,"emptyRunCode":"pxsim.pxtcore.updateScreen(new pxsim.RefImage(160, 120, 4))","aspectRatio":0.85,"dynamicBoardDefinition":true,"keymap":true,"messageSimulators":{"jacdac":{"url":"https://microsoft.github.io/jacdac-docs/tools/makecode-sim?webusb=0&parentOrigin=$PARENT_ORIGIN$","localHostUrl":"http://localhost:8000/tools/makecode-sim?webusb=0&parentOrigin=$PARENT_ORIGIN$","aspectRatio":"0.89","permanent":true}}},"queryVariants":{"skillsMap=1":{"appTheme":{"embeddedTutorial":true,"allowParentController":true,"shareFinishedTutorials":false}}},"unsupportedBrowsers":[{"id":"ie"}],"uploadDocs":true,"defaultBadges":[{"id":"skillmap-completion-save the forest","type":"skillmap-completion","image":"/static/badges/badge-forest.png","lockedImage":"/static/badges/badge-forest-locked.png","sourceURL":"https://www.makecode.com/api/md/arcade/skillmap/forest","title":"Save the Forest"},{"id":"skillmap-completion-zookeeper","type":"skillmap-completion","image":"/static/badges/badge-zoo.png","lockedImage":"/static/badges/badge-zoo-locked.png","sourceURL":"https://www.makecode.com/api/md/arcade/skillmap/zoo","title":"Zookeeper"},{"id":"skillmap-completion-rockstar","image":"/static/badges/badge-rockstar.png","lockedImage":"/static/badges/badge-rockstar-locked.png","sourceURL":"https://www.makecode.com/api/md/arcade/skillmap/rockstar","type":"skillmap-completion","title":"80's Rockstar"},{"id":"skillmap-completion-build a platformer game!","image":"/static/badges/badge-jungle.png","lockedImage":"/static/badges/badge-jungle-locked.png","sourceURL":"https://www.makecode.com/api/md/arcade/skillmap/jungle","type":"skillmap-completion","title":"Jungle Monkey"},{"id":"skillmap-completion-space","image":"/static/badges/badge-space.png","lockedImage":"/static/badges/badge-space-locked.png","sourceURL":"https://www.makecode.com/api/md/arcade/skillmap/space","type":"skillmap-completion","title":"Space Explorer"},{"id":"skillmap-completion-shark","image":"/static/badges/badge-shark.png","lockedImage":"/static/badges/badge-shark-locked.png","sourceURL":"https://www.makecode.com/api/md/arcade/skillmap/shark","type":"skillmap-completion","title":"Shark Splash"}],"versions":{"branch":"v1.13.12","tag":"v1.13.12","commits":"https://github.com/microsoft/pxt-arcade/commits/19955352b7e8739a135d040a802d792529785ce5","target":"1.13.12","pxt":"8.6.14"},"blocksprj":{"id":"blocksprj","config":{"name":"{0}","dependencies":{"device":"*"},"description":"","files":["main.blocks","main.ts","README.md","assets.json"],"additionalFilePaths":[]},"files":{"README.md":" ","assets.json":"","main.blocks":"<xml xmlns=\"http://www.w3.org/1999/xhtml\">\n <variables></variables>\n <block type=\"pxt-on-start\" x=\"0\" y=\"0\"></block>\n</xml>","main.ts":" "}},"tsprj":{"id":"tsprj","config":{"name":"{0}","dependencies":{"device":"*"},"description":"","files":["main.ts","README.md","assets.json"],"additionalFilePaths":[]},"files":{"README.md":" ","assets.json":"","main.ts":" "}}}
1
+ {"id":"arcade","name":"arcade","nickname":"arcade","thumbnailName":"MakeCode Arcade","title":"Microsoft MakeCode Arcade","description":"Develop your programming skills by quickly creating and modding retro arcade games with Blocks and JavaScript in the MakeCode editor","corepkg":"device","cloud":{"workspace":false,"sharing":true,"thumbnails":true,"importing":true,"packages":true,"publishing":true,"githubPackages":true,"showBadges":true,"cloudProviders":{"github":{"id":"github","name":"GitHub","icon":"/static/providers/github-mark.png","identity":false,"order":3},"microsoft":{"id":"microsoft","name":"Microsoft","icon":"/static/providers/microsoft-logo.svg","identity":true,"redirect":true,"order":1},"google":{"id":"google","name":"Google","icon":"/static/providers/google-logo.svg","identity":true,"redirect":true,"order":2}}},"staticpkgdirs":{"base":["libs/hw","libs/hw---n3","libs/hw---samd51","libs/hw---stm32f401"],"extensions":["libs/accelerometer","libs/color","libs/edge-connector","libs/esp32","libs/feather","libs/light","libs/lightsensor","libs/mqtt","libs/net","libs/net-game","libs/palette","libs/radio","libs/radio-broadcast","libs/serial","libs/servo","libs/settings","libs/sevenseg","libs/thermometer"]},"cacheusedblocksdirs":["skillmap/space","skillmap/platformer"],"compile":{"useUF2":true,"deployDrives":"(ARCADE|PY|FTHR840BOOT|ARCD|RPI-RP2)","deployFileMarker":"INFO_UF2.TXT","driveName":"ARCADE","floatingPoint":true,"taggedInts":true,"nativeType":"thumb","gc":true,"upgrades":[],"webUSB":true,"saveAsPNG":true,"patches":{"0.0.0 - *":[{"type":"missingPackage","map":{"(DigitalPin|AnalogPin|pins)\\.P\\d\\d?":"edge-connector","serial\\.":"serial"}}],"0.0.0 - 0.1.1":[{"type":"api","map":{"controller\\.controlSprite":"controller.moveSprite","controller\\.controlPlayer":"controller.movePlayer"}}],"0.0.0 - 0.3.23":[{"type":"package","map":{"local-multiplayer":""}}],"0.0.0 - 0.3.24":[{"type":"api","map":{"sprites\\.createEmptySprite\\(([^)]+)\\)":"sprites.create(img`.`, $1)"}},{"type":"blockId","map":{"keysdx":"keydx","keysdy":"keydy"}}],"0.0.0 - 0.11.20":[{"type":"api","map":{"SpriteKind":"SpriteKindLegacy"}}],"0.0.0 - 0.14.57":[{"type":"missingPackage","map":{"scene\\.setTileMap":"color-coded-tilemap","scene\\.setTile":"color-coded-tilemap","scene\\.getTile":"color-coded-tilemap","scene\\.getTilesByType":"color-coded-tilemap","scene\\.placeOnRandomTile":"color-coded-tilemap","scene\\.setTileAt":"color-coded-tilemap","scene\\.onHitTile":"color-coded-tilemap","\\.tileHitFrom":"color-coded-tilemap"}}],"0.0.0 - 0.18.9":[{"type":"api","map":{"tilemap\\s*\\.\\s*createTileSprite":"tiles.createTileSprite","tilemap\\s*\\.\\s*coverAllTiles":"tiles.coverAllTiles","tilemap\\s*\\.\\s*createSpritesOnTiles":"tiles.createSpritesOnTiles","tilemap\\s*\\.\\s*destorySpritesOfKind":"tiles.destroySpritesOfKind","tilemap\\s*\\.\\s*tileIs":"tiles.tileIs","tilemap\\s*\\.\\s*tileIsWall":"tiles.tileIsWall","tilemap\\s*\\.\\s*forEachTileOfKind":"tiles.forEachTileOfKind","tilemap\\s*\\.\\s*forEachTileOfMap":"tiles.forEachTileOfMap","tilemap\\s*\\.\\s*replaceAllTiles":"tiles.replaceAllTiles","tilemap\\s*\\.\\s*columnInDirection":"tiles.columnInDirection","tilemap\\s*\\.\\s*rowInDirection":"tiles.rowInDirection","tilemap\\s*\\.\\s*forEachDirection":"tiles.forEachDirection","tilemap\\s*\\.\\s*centerCameraOnTile":"tiles.centerCameraOnTile","tilemap\\s*\\.\\s*locationOfSprite":"tiles.locationOfSprite","tilemap\\s*\\.\\s*RowCol":"tiles.RowCol","tilemap\\s*\\.\\s*spriteRowCol":"tiles.spriteRowCol","tilemap\\s*\\.\\s*locationColumn":"tiles.locationColumn","tilemap\\s*\\.\\s*locationRow":"tiles.locationRow","tilemap\\s*\\.\\s*XY":"tiles.XY","tilemap\\s*\\.\\s*locationXY":"tiles.locationXY","tilemap\\s*\\.\\s*locationInDirection":"tiles.locationInDirection","tilemap\\s*\\.\\s*_directionEditor":"tiles._directionEditor","tilemap\\s*\\.\\s*tileWidth":"tiles.tileWidth","tilemap\\s*\\.\\s*tilemapColumns":"tiles.tilemapColumns","tilemap\\s*\\.\\s*tilemapRows":"tiles.tilemapRows","tilemap\\s*\\.\\s*screenCoordinateToTile":"tiles.screenCoordinateToTile","tilemap\\s*\\.\\s*tileCoordinateToScreen":"tiles.tileCoordinateToScreen","tilemap\\s*\\.\\s*centeredTileCoordinateToScreen":"tiles.centeredTileCoordinateToScreen","tilemap\\s*\\.\\s*OVERWORLD_MAP_ID":"tiles.OVERWORLD_MAP_ID","tilemap\\s*\\.\\s*MAP_LOADED_EVENT":"tiles.MAP_LOADED_EVENT","tilemap\\s*\\.\\s*WorldMap":"tiles.WorldMap","tilemap\\s*\\.\\s*WorldMapConnection":"tiles.WorldMapConnection","tilemap\\s*\\.\\s*createMap":"tiles.createMap","tilemap\\s*\\.\\s*copyMap":"tiles.copyMap","tilemap\\s*\\.\\s*loadMap":"tiles.loadMap","tilemap\\s*\\.\\s*getLoadedMap":"tiles.getLoadedMap","tilemap\\s*\\.\\s*onMapLoaded":"tiles.onMapLoaded","tilemap\\s*\\.\\s*onMapUnloaded":"tiles.onMapUnloaded","tilemap\\s*\\.\\s*connectMapById":"tiles.connectMapById","tilemap\\s*\\.\\s*loadConnectedMap":"tiles.loadConnectedMap","tilemap\\s*\\.\\s*getConnectedMap":"tiles.getConnectedMap","tilemap\\s*\\.\\s*setWorldLocationToMap":"tiles.setWorldLocationToMap","tilemap\\s*\\.\\s*loadMapAt":"tiles.loadMapAt","tilemap\\s*\\.\\s*getMapAtWorldLocation":"tiles.getMapAtWorldLocation","tilemap\\s*\\.\\s*loadMapInDirection":"tiles.loadMapInDirection","tilemap\\s*\\.\\s*loadedWorldColumn":"tiles.loadedWorldColumn","tilemap\\s*\\.\\s*loadedWorldRow":"tiles.loadedWorldRow"}}],"0.0.0 - 1.9.0":[{"type":"api","map":{"myCorg\\s*\\.\\s*follow":"myCorg.cameraFollow"}}]},"switches":{},"jsRefCounting":false,"utf8":true},"compileService":{"buildEngine":"codal","githubCorePackage":"lancaster-university/codal","gittag":"v0.8.0","dockerImage":"pext/yotta:latest","codalTarget":{"branches":{}}},"variants":{"stm32f401":{"compile":{"hasHex":true,"openocdScript":"source [find interface/stlink-v2.cfg]; source [find target/stm32f4x.cfg]","flashEnd":524288,"uf2Family":"0x57755a57"},"compileService":{"codalTarget":{"name":"codal-big-brainpad","url":"https://github.com/lancaster-university/codal-big-brainpad","branch":"v1.3.1","type":"git"},"codalBinary":"STM32","serviceId":"codal2stm32","dockerImage":"pext/yotta:latest"}},"samd51":{"compile":{"hasHex":true,"openocdScript":"source [find interface/cmsis-dap.cfg]; set CHIPNAME at91samd51g19; source [find target/atsame5x.cfg]","openocdScriptAlt":"source [find interface/stlink-v2.cfg]; set CPUTAPID 0x2ba01477; set CHIPNAME at91samd51g19; source [find target/at91samdXX.cfg]","ramSize":196608,"flashEnd":524288,"uf2Family":"0x55114460"},"compileService":{"codalTarget":{"name":"codal-itsybitsy-m4","url":"https://github.com/lancaster-university/codal-itsybitsy-m4","branch":"v0.2.7","type":"git"},"codalBinary":"ITSYBITSY_M4","serviceId":"codal2samd51","dockerImage":"pext/yotta:latest"}},"nrf52840":{"compile":{"hasHex":true,"openocdScript":"source [find interface/cmsis-dap.cfg]; source [find target/nrf52.cfg]","webUSB":false,"flashEnd":1007616,"uf2Family":"0xada52840"},"compileService":{"codalTarget":{"name":"codal-nrf52840-dk","url":"https://github.com/mmoskal/codal-nrf52840-dk","branch":"v1.1.7","type":"git"},"codalBinary":"NRF52840_DK","serviceId":"codal2nrf52840","dockerImage":"pext/yotta:latest","yottaConfig":{"pxt":{"board":{"id":"BOARD_ID_NRF52840"}}}}},"nrf52833":{"compile":{"hasHex":true,"openocdScript":"source [find interface/cmsis-dap.cfg]; source [find target/nrf52.cfg]","webUSB":false,"useUF2":false,"flashEnd":524288,"deployDrives":".*","deployFileMarker":"DETAILS.TXT"},"compileService":{"codalTarget":{"name":"codal-nrf52833-dk","url":"https://github.com/mmoskal/codal-nrf52833-dk","branch":"v2.0.2","type":"git"},"codalBinary":"NRF52840_DK","serviceId":"codal2nrf52840","dockerImage":"pext/yotta:latest","yottaConfig":{"pxt":{"board":{"id":"BOARD_ID_NRF52833"}}}}},"rp2040":{"compile":{"hasHex":true,"openocdScript":"???","flashChecksumAddr":0,"flashEnd":2097152,"uf2Family":"0xe48bff56"},"compileService":{"codalTarget":{"name":"codal-pi-pico","url":"https://github.com/lancaster-university/codal-pi-pico","branch":"v0.0.13","type":"git"},"gittag":"v0.9.0","codalBinary":"PI-PICO","serviceId":"codal2pico","dockerImage":"pext/arm:gcc9"}},"rpi":{"compile":{"hasHex":true,"useELF":true,"runtimeIsARM":true,"flashCodeAlign":256,"webUSB":false,"stackAlign":2},"compileService":{"buildEngine":"dockermake","dockerImage":"pext/rpi:alsa","serviceId":"rpi"}},"vm":{"compile":{"hasHex":true,"useELF":true,"flashCodeAlign":256,"webUSB":false,"nativeType":"vm","stackAlign":2},"compileService":{"buildEngine":"dockercross","dockerImage":"pext/crossbuild","serviceId":"crossbuild","skipCloudBuild":true}}},"serial":{"useEditor":true,"log":true,"editorTheme":{"graphBackground":"#d9d9d9","lineColors":["#009DDC","#FB48C7","#40bf4a","#8073E5","#d25b33"]}},"runtime":{"mathBlocks":true,"loopsBlocks":true,"logicBlocks":true,"variablesBlocks":true,"textBlocks":true,"functionBlocks":true,"breakBlock":true,"continueBlock":true,"pauseUntilBlock":{"category":"loops"},"functionsOptions":{"useNewFunctions":true,"extraFunctionEditorTypes":[{"typeName":"Sprite","icon":"send","defaultName":"mySprite"},{"typeName":"Image","icon":"image outline","defaultName":"myImage"}]},"listsBlocks":true,"tilesetFieldEditorIdentity":"images._tile","bannedCategories":["pins","control","input","serial","power"]},"simulator":{"autoRun":true,"autoRunLight":false,"emptyRunCode":"pxsim.pxtcore.updateScreen(new pxsim.RefImage(160, 120, 4))","aspectRatio":0.85,"dynamicBoardDefinition":true,"keymap":true,"messageSimulators":{"jacdac":{"url":"https://microsoft.github.io/jacdac-docs/tools/makecode-sim?webusb=0&parentOrigin=$PARENT_ORIGIN$","localHostUrl":"http://localhost:8000/tools/makecode-sim?webusb=0&parentOrigin=$PARENT_ORIGIN$","aspectRatio":"0.89","permanent":true}}},"queryVariants":{"skillsMap=1":{"appTheme":{"embeddedTutorial":true,"allowParentController":true,"shareFinishedTutorials":false}}},"unsupportedBrowsers":[{"id":"ie"}],"uploadDocs":true,"defaultBadges":[{"id":"skillmap-completion-save the forest","type":"skillmap-completion","image":"/static/badges/badge-forest.png","lockedImage":"/static/badges/badge-forest-locked.png","sourceURL":"https://www.makecode.com/api/md/arcade/skillmap/forest","title":"Save the Forest"},{"id":"skillmap-completion-zookeeper","type":"skillmap-completion","image":"/static/badges/badge-zoo.png","lockedImage":"/static/badges/badge-zoo-locked.png","sourceURL":"https://www.makecode.com/api/md/arcade/skillmap/zoo","title":"Zookeeper"},{"id":"skillmap-completion-rockstar","image":"/static/badges/badge-rockstar.png","lockedImage":"/static/badges/badge-rockstar-locked.png","sourceURL":"https://www.makecode.com/api/md/arcade/skillmap/rockstar","type":"skillmap-completion","title":"80's Rockstar"},{"id":"skillmap-completion-build a platformer game!","image":"/static/badges/badge-jungle.png","lockedImage":"/static/badges/badge-jungle-locked.png","sourceURL":"https://www.makecode.com/api/md/arcade/skillmap/jungle","type":"skillmap-completion","title":"Jungle Monkey"},{"id":"skillmap-completion-space","image":"/static/badges/badge-space.png","lockedImage":"/static/badges/badge-space-locked.png","sourceURL":"https://www.makecode.com/api/md/arcade/skillmap/space","type":"skillmap-completion","title":"Space Explorer"},{"id":"skillmap-completion-shark","image":"/static/badges/badge-shark.png","lockedImage":"/static/badges/badge-shark-locked.png","sourceURL":"https://www.makecode.com/api/md/arcade/skillmap/shark","type":"skillmap-completion","title":"Shark Splash"}],"versions":{"branch":"v1.13.13","tag":"v1.13.13","commits":"https://github.com/microsoft/pxt-arcade/commits/9af42a9e2fb290a40fa55e4c9dbf6e516bbb0441","target":"1.13.13","pxt":"8.6.19"},"blocksprj":{"id":"blocksprj","config":{"name":"{0}","dependencies":{"device":"*"},"description":"","files":["main.blocks","main.ts","README.md","assets.json"],"additionalFilePaths":[]},"files":{"README.md":" ","assets.json":"","main.blocks":"<xml xmlns=\"http://www.w3.org/1999/xhtml\">\n <variables></variables>\n <block type=\"pxt-on-start\" x=\"0\" y=\"0\"></block>\n</xml>","main.ts":" "}},"tsprj":{"id":"tsprj","config":{"name":"{0}","dependencies":{"device":"*"},"description":"","files":["main.ts","README.md","assets.json"],"additionalFilePaths":[]},"files":{"README.md":" ","assets.json":"","main.ts":" "}}}
@@ -11,36 +11,68 @@ In this tutorial, you'll add a truck to your game and make it move through a cav
11
11
 
12
12
 
13
13
 
14
- ## {4. Add the Truck}
14
+ ## {2. Add the Truck}
15
15
 
16
- First, let's set up your monster truck. To do this, we'll need to create a [__*sprite*__](#sprote "a 2-D image that moves on the screen").
16
+ Before we can add a truck, we need to create a [__*sprite*__](#sprote "a 2-D image that moves on the screen").
17
+
18
+ ~hint What's a sprite? 💡
17
19
 
18
20
  ---
19
21
 
20
- - :paper plane: From the ``||sprites:Sprites||`` category, drag <br/>
22
+ In Arcade, each character or image that does something is called a **SPRITE**.
23
+
24
+ Sprites have properties that you can use and change -- things like scale, position, and lifespan are all properties of sprites.
25
+
26
+ Our truck will be a sprite, too.
27
+
28
+ hint~
29
+
30
+ - :paper plane: From the ``||sprites:Sprites||`` category, drag<br/>
31
+ ``||variables(sprites):set [truck] to sprite [ ] of kind [Player]||``<br/>
32
+ to **the end** of the empty<br/>
33
+ ``||loops(noclick):on start||`` <br/>
34
+ container in the workspace.
35
+
21
36
 
37
+ ~hint What does that mean? 🤷🏽
38
+
39
+ ---
40
+
41
+ In this tutorial, we'll use formatted text to help you know which blocks you need. For example, when we ask you to look for: <br/>
42
+ ``||variables(sprites):set [truck] to sprite [ ] of kind [Player]||``<br/>
43
+ we're talking about this block:<br/>
22
44
  ```block
23
45
  let truck = sprites.create(img`.`, SpriteKind.Player)
24
46
  ```
25
- to **the end** of the <br/>
26
- ``||loops:on start||`` <br/>
27
- container.
47
+ Need help finding the category? Click on the highlighted text and we'll open the drawer for you.
28
48
 
29
- - :paint brush: To choose a truck, click the empty grey box to display the image editor, then select **My Assets**.
49
+ hint~
30
50
 
31
- ![Choose a truck sprite](/static/skillmap/racer/truck2.png "Choose a truck image from the gallery")
32
51
 
33
- _💡 This image shows the **truck2** sprite, but you can use whichever one you want._
52
+ #### ~ tutorialhint
34
53
 
35
- ---
54
+ ```blocks
55
+ // @highlight
56
+ let truck = sprites.create(img`.`, SpriteKind.Player)
57
+ ```
36
58
 
37
- ~hint Click here to see how 🕵🏽
38
59
 
39
- ![Set your sprite](/static/skillmap/racer/pick-truck.gif "Choose your image from the gallery")
40
60
 
41
- hint~
42
61
 
43
- - :mouse pointer: When you're ready to continue, click **Next**.
62
+ ## {3. Add the Truck}
63
+
64
+ **Choose your truck**
65
+
66
+ - :paint brush: To choose a truck, click the empty box inside<br/>
67
+ ``||variables(noclick):set [truck] to sprite [ ] of kind [Player]||``<br/>
68
+ then switch to **My Assets**
69
+ ![Switch to My Assets](/static/skillmap/assets/my-assets-three.png " ")
70
+ and choose a truck.<br/><br/>
71
+ _💡 This image shows the **truck2** sprite, but you can use whichever truck you want._
72
+ ![Choose a truck sprite](/static/skillmap/racer/truck2.png "Choose a truck image from the gallery")
73
+
74
+
75
+
44
76
 
45
77
  #### ~ tutorialhint
46
78
 
@@ -51,38 +83,39 @@ let truck = sprites.create(assets.image`truck2`, SpriteKind.Player)
51
83
 
52
84
 
53
85
 
86
+
87
+ ## {Step 4}
88
+
89
+ - :binoculars: Take a look at the game window.
90
+
91
+ Do you see the truck hovering in the cave?
92
+
93
+
94
+ ![Look at your game in the game window](/static/skillmap/star/game-window.png )
95
+
96
+
97
+
98
+
54
99
  ## {5. Add Gravity}
55
100
 
56
- To make the game feel more realistic, it needs gravity.
101
+ To get your game going, it needs gravity.
57
102
 
58
103
  ~hint How do I add gravity? 📥
59
104
 
105
+ ---
106
+
60
107
  For gravity, we'll add [__*acceleration*__](#accel "increased speed in a direction")
61
- to "pull down" on the sprite. This is done by setting the sprite's vertical
62
- acceleration, **ay**, value.
108
+ to "pull down" on the sprite. This is done by setting the sprite's **ay** (acceleration in the direction of 'y').
63
109
 
64
110
  hint~
65
111
 
66
- ---
67
112
 
68
113
  - :paper plane: From the ``||sprites:Sprites||`` category, drag <br/>
69
-
70
- ```block
71
- let truck: Sprite = null
72
- truck.ay = 500
73
- ```
114
+ ``||sprites:set [truck] [ay (acceleration y) to [500]||``<br/>
74
115
  to **the end** of the <br/>
75
- ``||loops:on start||`` container.
76
-
77
- ---
116
+ ``||loops(noclick):on start||`` container.
78
117
 
79
- ~hint Click here to see how 🕵🏽
80
118
 
81
- ![Set the gravity](/static/skillmap/racer/acceleration.gif "Choose ay(acceleration y)")
82
-
83
- hint~
84
-
85
- - :mouse pointer: When you're ready to continue, click **Next**.
86
119
 
87
120
  ```blockconfig.local
88
121
  let truck: Sprite = null
@@ -92,8 +125,6 @@ truck.ay = 500
92
125
  #### ~ tutorialhint
93
126
 
94
127
  ```blocks
95
- tiles.setTilemap(tilemap`level1`)
96
- scene.setBackgroundImage(assets.image`background`)
97
128
  let truck = sprites.create(assets.image`truck1`, SpriteKind.Player)
98
129
  // @highlight
99
130
  truck.ay = 500
@@ -101,17 +132,13 @@ truck.ay = 500
101
132
 
102
133
 
103
134
 
104
- ## {6. Take a Look!}
105
135
 
106
- Click back to the game window to see how everything is coming together.
136
+ ## {Step 6}
107
137
 
108
- ---
138
+ - :binoculars: Look at the game window again.
109
139
 
110
- The truck should drop to the ground inside the cave.
140
+ Did the truck fall to the ground?
111
141
 
112
- ---
113
-
114
- - :mouse pointer: When you're ready to continue, click **Next**.
115
142
 
116
143
 
117
144
 
@@ -119,32 +146,21 @@ The truck should drop to the ground inside the cave.
119
146
 
120
147
  In this game, your truck needs to start rolling as soon as the game starts.
121
148
 
122
- ~hint How do I make the truck move? 🚚
123
-
124
- To make the truck move, you need to set its **vx** or _horizontal velocity_ (speed from side to side).
125
-
126
- hint~
149
+ ~hint How do I make it move? 🛻
127
150
 
128
151
  ---
129
152
 
130
- - :paper plane: Drag a new <br/>
153
+ To make the truck move to the right, you need to set its **vx** (velocity in the direction of 'x') to a positive number.
131
154
 
132
- ```block
133
- let truck: Sprite = null
134
- truck.vx = 100
135
- ```
136
- to **the end** of the <br/>
137
- ``||loops:on start||`` container.
138
-
139
- ---
155
+ hint~
140
156
 
141
- - :mouse pointer: When you're ready to continue, click **Next**.
142
157
 
143
- ~hint Click here to see how 🕵🏽
158
+ - :paper plane: From ``||sprites:Sprites||``, drag<br/>
159
+ ``||sprites:set [truck] [vx (velocity x)] to [100]||``<br/>
160
+ to **the end** of the <br/>
161
+ ``||loops(onclick):on start||`` container.
144
162
 
145
- ![Set the speed](/static/skillmap/racer/velocity.gif "Choose vx(velocity x)")
146
163
 
147
- hint~
148
164
 
149
165
  ```blockconfig.local
150
166
  let truck: Sprite = null
@@ -160,37 +176,28 @@ truck.ay = 500
160
176
  truck.vx = 100
161
177
  ```
162
178
 
163
- ## {8. Try It!}
164
179
 
165
- Open the game window again and check out the game you have so far.
166
180
 
167
- Notice that the **arrow** keys and **(A)** button don't work yet.
168
- The game only does what you've coded it to do.
181
+ ## {Step 8}
182
+
183
+ - :binoculars: Look at the game window again and watch your truck mosey.
169
184
 
170
- ---
171
185
 
172
- - :mouse pointer: When you're ready to continue, click **Next**.
173
186
 
174
187
 
175
188
  ## {9. Follow that Sprite}
176
189
 
177
- Did you notice that your truck quickly drives off-screen?
190
+ **Did you notice that your truck drives off-screen?**
178
191
 
179
- Let's make the "camera" follow the sprite so you can always see it.
192
+ Let's make the game "camera" follow the sprite so you can always see it.
180
193
 
181
194
  ---
182
195
 
183
196
  - :tree: To keep the truck in sight, go to ``||scene:Scene||`` and drag <br/>
184
-
185
- ```block
186
- scene.cameraFollowSprite(truck)
187
- ```
197
+ ``||scene:camera follow sprite [truck]||``<br/>
188
198
  to **the end** of the <br/>
189
- ``||loops:on start||`` container.
190
-
191
- ---
199
+ ``||loops(noclick):on start||`` container.
192
200
 
193
- - :mouse pointer: When you're ready to continue, click **Next**.
194
201
 
195
202
 
196
203
  #### ~ tutorialhint
@@ -207,11 +214,13 @@ scene.cameraFollowSprite(truck)
207
214
 
208
215
  ## {Finale}
209
216
 
210
- Well done!
217
+ **✨Woohoo!✨**
218
+
219
+ Take a look at what you've done so far.
211
220
 
212
- Take a look at the experience that you've created so far. Your truck should start rolling as soon as the game loads and keep going until it gets to the end of the first pit!
221
+ Your truck should start rolling as soon as the game loads and keep going until it gets to the end of the first pit!
213
222
 
214
- When you're ready, click **Done** to head back out to the skillmap where you can play the next level to find out how to control your truck with arrows and buttons!
223
+ When you're ready, click **Done** to head back out to the skillmap and keep going to find out how to control your truck with arrows and buttons!
215
224
 
216
225
 
217
226
  ```blockconfig.global
@@ -12,7 +12,7 @@ Now that you have a truck that moves, let's add the ability to jump and navigate
12
12
 
13
13
  ## {2. Remember}
14
14
 
15
- Take a look at the code that's already in your workspace.
15
+ **Take a look at the code that's already in your workspace.**
16
16
 
17
17
  You should see the blocks that add gravity, make your truck start moving, and set the camera to follow you through the cave.
18
18
 
@@ -21,30 +21,20 @@ You should see the blocks that add gravity, make your truck start moving, and se
21
21
 
22
22
  ## {3. Make the Jump}
23
23
 
24
- You'll notice some pits of acid in the road. Help your truck avoid them when you press the (A) button.
24
+ **See the pits of acid in the road?**
25
+
26
+ Make your truck avoid them when you press the (A) button (or space bar).
25
27
 
26
28
  ---
27
29
 
28
30
 
29
- - :game: From ``||controller:Controller||``, drag the <br/>
31
+ - :game: From ``||controller:Controller||``, drag the<br/>
32
+ ``||controller:on [A] button [pressed]||``<br/>
33
+ bundle into an **empty area** of the workspace.
30
34
 
31
- ```block
32
- let truck: Sprite = null
33
35
 
34
- controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
35
- truck.vy = 0
36
- })
37
- ```
38
- container into an empty area of the workspace.
36
+ Now, each time you press the (A) button, the truck will jump until gravity pulls it back down.
39
37
 
40
- - :mouse pointer: Change **0** to **-200** to send the truck upward with each press of the (A) button.
41
-
42
- ```blockconfig.local
43
- let truck: Sprite = null
44
- controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
45
- truck.vy = 0
46
- })
47
- ```
48
38
 
49
39
  #### ~ tutorialhint
50
40
 
@@ -57,41 +47,27 @@ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
57
47
  ```
58
48
 
59
49
 
50
+ ## {Step 4}
60
51
 
61
- ## {4. Play it Again}
62
-
63
- Remember to play your game again each time you make a change.
64
-
65
- Can you see the effects of the code you just wrote?
66
-
52
+ - :binoculars: Remember to keep looking back at the game window to see how your game changes with each bit of code you add.
67
53
 
68
54
 
69
55
 
70
56
  ## {5. The Pits}
71
57
 
72
58
 
73
- Now that you can jump the pits, let's make them dangerous.
59
+ **Now that you can jump the pits, let's make them dangerous.**
74
60
 
75
61
  ---
76
62
 
77
63
  - :tree: From ``||scene:Scene||``, drag the <br/>
64
+ ``||scene:on [sprite] of kind [Player] overlaps [ ] at [location]||``<br/>
65
+ bundle into an **empty area** of the workspace.
78
66
 
79
- ```block
80
- scene.onOverlapTile(SpriteKind.Player, assets.tile`acid`, function (sprite, location) {
81
- game.over(false)
82
- })
83
- ```
84
- container into an empty area of the workspace.
85
-
86
- - :paint brush: Click the checkerboard image and change it to the **acid** tile.<br/>
67
+ - :paint brush: Click the empty tile image and change it to the **acid** tile.<br/>
87
68
  ![Make your truck jump dangerous pits of acid](/static/skillmap/racer/acid.png "Avoid the acid tiles")
88
69
 
89
70
 
90
- ```blockconfig.local
91
- scene.onOverlapTile(SpriteKind.Player, img`.`, function (sprite, location) {
92
- game.over(false)
93
- })
94
- ```
95
71
 
96
72
  #### ~ tutorialhint
97
73
 
@@ -105,21 +81,21 @@ scene.onOverlapTile(SpriteKind.Player, assets.tile`acid`, function (sprite, loca
105
81
 
106
82
  ## {6. The Spikes}
107
83
 
108
- Pressing the **(A)** button more than once might send you into a spike. Let's make the spikes dangerous, too.
84
+ **Don't fly into a spike!**
85
+
86
+ Let's make the spikes dangerous, too.
109
87
 
110
88
 
111
89
  ---
112
90
 
113
- - :mouse pointer: Follow the same steps to end the game when your sprite overlaps the **spikes** as you did for the **acid** tile. <br/>
91
+ - :mouse pointer: Follow the same steps to end the game when your sprite overlaps the **spikes**
114
92
  ![Avoid the spikes!](/static/skillmap/racer/spikes.png "Avoid the spike tiles")
93
+ as you did for the **acid** tile.
94
+
115
95
 
116
96
  _💡 Need a little help figuring out what this step should look like? Click the lightbulb button below for a peek at the blocks we recommend._
117
97
 
118
- ```blockconfig.local
119
- scene.onOverlapTile(SpriteKind.Player, img`.`, function (sprite, location) {
120
- game.over(false)
121
- })
122
- ```
98
+
123
99
 
124
100
  #### ~ tutorialhint
125
101
 
@@ -131,19 +107,17 @@ scene.onOverlapTile(SpriteKind.Player, assets.tile`spikes`, function (sprite, lo
131
107
 
132
108
 
133
109
 
134
- ## {7. Take a Look!}
110
+ ## {Step 7}
135
111
 
136
- Click back to the game window to see how everything is coming together.
112
+ - :binoculars: Take a look at the game window.
137
113
 
138
- ---
139
-
140
- You should be able to jump the acid pits by pressing the (A) button and the game should end when you hit the acid or a spike.
114
+ You should be able to jump the acid pits by pressing the (A) button (or space bar) and the game should end when you hit the acid or a spike.
141
115
 
142
116
 
143
117
 
144
118
  ## {8. End of the Tunnel}
145
119
 
146
- We have a way to lose, now we need a way to win.
120
+ **We have a way to lose, now we need a way to win.**
147
121
 
148
122
  At the end of the cave, there is a set of pure black **empty cave** tiles.
149
123
 
@@ -155,6 +129,13 @@ an **empty cave** tile as you did for the **acid** tile.
155
129
  ![Get to the cave](/static/skillmap/racer/cave.png "Choose the cave tile")
156
130
 
157
131
 
132
+ - :mouse pointer: This time, make sure the switch inside of the<br/>
133
+ ``||game:game over < >||`` block is set to **`<WIN>`**.
134
+
135
+
136
+ _💡 Need a little help figuring out what this step should look like? Click the lightbulb button below for a peek at the blocks we recommend._
137
+
138
+
158
139
  ```blockconfig.local
159
140
  scene.onOverlapTile(SpriteKind.Player, img`.`, function (sprite, location) {
160
141
  game.over(true)
@@ -169,22 +150,36 @@ scene.onOverlapTile(SpriteKind.Player, assets.tile`empty cave`, function (sprite
169
150
  })
170
151
  ```
171
152
 
153
+ ## {Step 7}
154
+
155
+ - :binoculars: Play your game!
156
+
157
+ Can you make it all the way to the end and win?
158
+
159
+
172
160
 
173
161
  ## {Finale}
174
162
 
175
163
  Congratulations!
176
164
 
177
- You've created your own Monster Racer game!
165
+ You've created a Monster Racer game!
166
+
167
+ Once you're finished playing,
168
+ click **Done** to head back out to the skillmap, then keep going to add
169
+ fun customizations to your game.
178
170
 
179
- Race to the end of the cave and once you're finished playing,
180
- click **Done** to head back out to the skillmap where you can
181
- play the next level and add customizations to your game.
182
171
 
183
172
 
184
173
  ```blockconfig.global
185
174
  let truck = sprites.create(img`.`, SpriteKind.Player)
186
175
  truck.x = 0
187
176
  scene.cameraFollowSprite(truck)
177
+ controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
178
+ truck.vy = -200
179
+ })
180
+ scene.onOverlapTile(SpriteKind.Player, assets.tile`acid`, function (sprite, location) {
181
+ game.over(false)
182
+ })
188
183
  ```
189
184
 
190
185
  ```template