Compare commits
5 Commits
dependabot
...
v4.0.19
Author | SHA1 | Date | |
---|---|---|---|
ec378c5b09 | |||
d4214c65f2 | |||
4ad5c2d4a0 | |||
b86010f1e6 | |||
3e0c9b43a2 |
8
.github/lock.yml
vendored
@ -30,13 +30,7 @@ lockLabel: false
|
||||
|
||||
# Comment to post before locking. Set to `false` to disable
|
||||
|
||||
lockComment: >
|
||||
|
||||
This thread has been automatically locked since there has not been
|
||||
|
||||
any recent activity after it was closed. Please open a new issue for
|
||||
|
||||
related bugs.
|
||||
lockComment: false
|
||||
|
||||
|
||||
|
||||
|
51
.github/workflows/codeql.yml
vendored
Normal file
@ -0,0 +1,51 @@
|
||||
name: "Code scanning - action"
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: '0 19 * * 0'
|
||||
|
||||
jobs:
|
||||
CodeQL-Build:
|
||||
|
||||
# CodeQL runs on ubuntu-latest and windows-latest
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
# We must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head.
|
||||
fetch-depth: 2
|
||||
|
||||
# If this run was triggered by a pull request event, then checkout
|
||||
# the head of the pull request instead of the merge commit.
|
||||
- run: git checkout HEAD^2
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: javascript
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
@ -1,12 +0,0 @@
|
||||
name: Compress images
|
||||
on: pull_request
|
||||
jobs:
|
||||
build:
|
||||
name: calibreapp/image-actions
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- name: calibreapp/image-actions
|
||||
uses: calibreapp/image-actions@master
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
@ -1,9 +1,10 @@
|
||||
name: pxt-buildtarget
|
||||
name: pxt-buildmain
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
branches:
|
||||
- 'master'
|
||||
- 'main'
|
||||
create:
|
||||
|
||||
jobs:
|
31
.github/workflows/pxt-buildpr.yml
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
name: pxt-buildpr
|
||||
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [8.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: npm install
|
||||
run: |
|
||||
sudo apt-get install xvfb
|
||||
sudo npm install -g pxt
|
||||
npm install
|
||||
- name: pxt ci
|
||||
run: |
|
||||
pxt ci
|
||||
env:
|
||||
CHROME_BIN: chromium-browser
|
||||
DISPLAY: :99.0
|
||||
CI: true
|
39
.github/workflows/pxt-buildpush.yml
vendored
Normal file
@ -0,0 +1,39 @@
|
||||
name: pxt-buildpush
|
||||
|
||||
on:
|
||||
push:
|
||||
# main/master has its own build that includes the crowdin key
|
||||
branches-ignore:
|
||||
- 'main'
|
||||
- 'master'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [8.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: npm install
|
||||
run: |
|
||||
sudo apt-get install xvfb
|
||||
sudo npm install -g pxt
|
||||
npm install
|
||||
- name: pxt ci
|
||||
run: |
|
||||
pxt ci
|
||||
env:
|
||||
PXT_ACCESS_TOKEN: ${{ secrets.PXT_ACCESS_TOKEN }}
|
||||
PXT_RELEASE_REPO: ${{ secrets.PXT_RELEASE_REPO }}
|
||||
NPM_ACCESS_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}
|
||||
CHROME_BIN: chromium-browser
|
||||
DISPLAY: :99.0
|
||||
CI: true
|
7
.github/workflows/testghpkgs.yml
vendored
@ -11,9 +11,12 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [8.x]
|
||||
branch: [stable3.0]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
ref: ${{ matrix.branch }}
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v1
|
||||
with:
|
||||
@ -45,5 +48,5 @@ jobs:
|
||||
uses: actions/upload-artifact@v2
|
||||
if: ${{ always() }}
|
||||
with:
|
||||
name: logs
|
||||
name: logs-${{ matrix.branch }}
|
||||
path: temp/ghpkgs/*.txt
|
||||
|
27
.travis.yml
@ -1,27 +0,0 @@
|
||||
language: node_js
|
||||
os: linux
|
||||
dist: trusty
|
||||
node_js:
|
||||
- "8.9.4"
|
||||
before_install:
|
||||
- export CHROME_BIN=chromium-browser
|
||||
- export DISPLAY=:99.0
|
||||
- sh -e /etc/init.d/xvfb start
|
||||
script:
|
||||
- "node node_modules/pxt-core/built/pxt.js travis"
|
||||
# - "(cd libs/lang-test0; node ../../node_modules/pxt-core/built/pxt.js run)"
|
||||
# - "(cd libs/lang-test1; node ../../node_modules/pxt-core/built/pxt.js run)"
|
||||
# - "(cd libs/lang-test0; node ../../node_modules/pxt-core/built/pxt.js test)"
|
||||
# - "(cd libs/lang-test1; node ../../node_modules/pxt-core/built/pxt.js test)"
|
||||
# - "node node_modules/pxt-core/built/pxt.js testdir tests"
|
||||
# - "(cd libs/hello; node ../../node_modules/pxt-core/built/pxt.js testconv http://az851932.vo.msecnd.net/files/td-converter-tests-v1.json)"
|
||||
sudo: false
|
||||
notifications:
|
||||
email:
|
||||
- touchdevelop-build@microsoft.com
|
||||
cache:
|
||||
directories:
|
||||
- node_modules
|
||||
- built/cache
|
||||
- libs/hello/built/cache
|
||||
|
1
.vscode/settings.json
vendored
@ -1,6 +1,5 @@
|
||||
// Place your settings in this file to overwrite default and user settings.
|
||||
{
|
||||
"files.autoSave": "afterDelay",
|
||||
"files.watcherExclude": {
|
||||
"**/.git/objects/**": true,
|
||||
"**/built/**": true,
|
||||
|
19
.vscode/tasks.json
vendored
@ -1,20 +1,19 @@
|
||||
{
|
||||
"version": "0.1.0",
|
||||
"version": "2.0.0",
|
||||
// Task runner is jake
|
||||
"command": "pxt",
|
||||
// Need to be executed in shell / cmd
|
||||
"isShellCommand": true,
|
||||
"showOutput": "always",
|
||||
"tasks": [
|
||||
{
|
||||
// TS build command is local.
|
||||
"taskName": "serve",
|
||||
// Make this the default build command.
|
||||
"isBuildCommand": true,
|
||||
// Use the redefined Typescript output problem matcher.
|
||||
"label": "serve",
|
||||
"type": "shell",
|
||||
"command": "pxt",
|
||||
"args": [
|
||||
"serve"
|
||||
],
|
||||
"problemMatcher": [
|
||||
"$tsc"
|
||||
]
|
||||
],
|
||||
"group": "build"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1,13 +0,0 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"path": "../pxt"
|
||||
},
|
||||
{
|
||||
"path": "../pxt-common-packages"
|
||||
},
|
||||
{
|
||||
"path": "."
|
||||
}
|
||||
]
|
||||
}
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 520 B After Width: | Height: | Size: 574 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 136 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 6.8 KiB |
131
compiler/combiner.ts
Normal file
@ -0,0 +1,131 @@
|
||||
/// <reference path="../node_modules/pxt-core/built/pxtcompiler.d.ts"/>
|
||||
|
||||
namespace ts.pxtc.extension {
|
||||
pxtc.compilerHooks.postBinary = (program: ts.Program, opts: CompileOptions, res: CompileResult) => {
|
||||
if (!opts.target.isNative)
|
||||
return
|
||||
const mbdal = res.outfiles["mbdal-binary.hex"]
|
||||
const mbcodal = res.outfiles["mbcodal-binary.hex"]
|
||||
if (!mbdal || !mbcodal)
|
||||
return
|
||||
|
||||
let outp = ""
|
||||
|
||||
wrapHex(mbdal, 0x00, [0x99, 0x01, 0xc0, 0xde])
|
||||
wrapHex(mbcodal, 0x0D, [0x99, 0x03, 0xc0, 0xde], true)
|
||||
|
||||
outp += ":00000001FF\n"
|
||||
|
||||
res.outfiles["binary.hex"] = outp
|
||||
|
||||
function hex2str(bytes: number[]) {
|
||||
return ts.pxtc.hexfile.hexBytes([bytes.length - 3].concat(bytes)) + "\n"
|
||||
}
|
||||
|
||||
function paddingString(len: number) {
|
||||
let r = ""
|
||||
const len0 = len
|
||||
while (len >= 44) {
|
||||
r += hex2str([0x00, 0x00, 0x0C,
|
||||
0x42, 0x42, 0x42, 0x42,
|
||||
0x42, 0x42, 0x42, 0x42,
|
||||
0x42, 0x42, 0x42, 0x42,
|
||||
0x42, 0x42, 0x42, 0x42])
|
||||
len -= 44
|
||||
}
|
||||
if (len >= 12) {
|
||||
const numBytes = (len - 11) >> 1
|
||||
const bytes = [0x00, 0x00, 0x0C]
|
||||
for (let i = 0; i < numBytes; ++i) bytes.push(0x42)
|
||||
const add = hex2str(bytes)
|
||||
r += add
|
||||
len -= add.length
|
||||
}
|
||||
while (len--)
|
||||
r += "\n"
|
||||
|
||||
U.assert(r.length == len0)
|
||||
|
||||
return r
|
||||
}
|
||||
|
||||
function addBlock(blk: string) {
|
||||
const leftoff = blk.length & 511
|
||||
outp += blk + paddingString(512 - leftoff)
|
||||
}
|
||||
|
||||
function wrapHex(inpHex: string, dataType: number, deviceType: number[], keepSrc = false) {
|
||||
let blk =
|
||||
hex2str([0x00, 0x00, 0x04, 0x00, 0x00])
|
||||
+ hex2str([0x00, 0x00, 0x0A].concat(deviceType))
|
||||
let upperAddr = 0
|
||||
const lines = inpHex.split(/\r?\n/)
|
||||
for (let i = 0; i < lines.length; ++i) {
|
||||
const line = lines[i]
|
||||
if (!line)
|
||||
continue
|
||||
const parsed = ts.pxtc.hexfile.parseHexRecord(line)
|
||||
|
||||
switch (parsed.type) {
|
||||
case 0x00:
|
||||
/*
|
||||
const parsed2 = parsed.len <= 16 && lines[i + 1] ?
|
||||
ts.pxtc.hexfile.parseHexRecord(lines[i + 1])
|
||||
: null
|
||||
// if this and next line can fit in 32 bytes, concat them
|
||||
if (parsed2 && parsed2.type == 0x00 &&
|
||||
parsed2.addr == parsed.addr + parsed.len &&
|
||||
parsed.len + parsed2.len <= 32) {
|
||||
parsed.data = parsed.data.concat(parsed2.data)
|
||||
parsed.len += parsed2.len
|
||||
i++
|
||||
}
|
||||
*/
|
||||
addData([parsed.addr >> 8, parsed.addr & 0xff, dataType]
|
||||
.concat(parsed.data))
|
||||
break
|
||||
|
||||
case 0x01:
|
||||
flush()
|
||||
if (keepSrc) break
|
||||
else return
|
||||
|
||||
case 0x04:
|
||||
const newUpper = ((parsed.data[0] << 8) | parsed.data[1]) << 16
|
||||
if (upperAddr != newUpper) {
|
||||
upperAddr = newUpper
|
||||
addData([0, 0, 0x04, parsed.data[0], parsed.data[1]])
|
||||
}
|
||||
break
|
||||
|
||||
case 0x03:
|
||||
case 0x05:
|
||||
// ignore
|
||||
break
|
||||
|
||||
case 0x0E:
|
||||
// src record
|
||||
addData([parsed.addr >> 8, parsed.addr & 0xff, 0x0E]
|
||||
.concat(parsed.data))
|
||||
break
|
||||
|
||||
default:
|
||||
U.oops(`unknown hex record type: ${line}`)
|
||||
break
|
||||
}
|
||||
}
|
||||
flush()
|
||||
|
||||
function addData(bytes: number[]) {
|
||||
const newData = hex2str(bytes)
|
||||
blk += newData
|
||||
}
|
||||
|
||||
function flush() {
|
||||
if (blk)
|
||||
addBlock(blk)
|
||||
blk = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
23
compiler/tsconfig.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es2017",
|
||||
"noImplicitAny": true,
|
||||
"noImplicitReturns": true,
|
||||
"noImplicitThis": true,
|
||||
"declaration": true,
|
||||
"moduleResolution": "node",
|
||||
"isolatedModules": false,
|
||||
"out": "../built/compiler.js",
|
||||
"rootDir": ".",
|
||||
"newLine": "LF",
|
||||
"sourceMap": false,
|
||||
"typeRoots": ["../node_modules/@types"],
|
||||
"lib": [
|
||||
"dom",
|
||||
"dom.iterable",
|
||||
"scripthost",
|
||||
"es2017",
|
||||
"ES2018.Promise"
|
||||
]
|
||||
}
|
||||
}
|
2
docfiles/offline-app-trademarks.html
Normal file
@ -0,0 +1,2 @@
|
||||
Micro:bit and micro:bit logo are trademarks and/ or copyrights of the Micro:bit
|
||||
Educational Foundation. © Micro:bit Educational Foundation. All rights reserved.
|
@ -78,6 +78,13 @@ input.onButtonPressed(Button.B, () => {
|
||||
|
||||
We have tons of [projects](/projects), [examples](/examples) and [courses](/courses) to get your started!
|
||||
|
||||
## C++ Runtime
|
||||
|
||||
The [C++ micro:bit runtime](http://lancaster-university.github.io/microbit-docs/), created at [Lancaster University](http://www.lancaster.ac.uk/), provides access to the hardware functions of the micro:bit,
|
||||
as well as a set of helper functions (such as displaying a number/image/string on the LED screen).
|
||||
|
||||
The [micro:bit library](/reference) mirrors the functions of the C++ library.
|
||||
When code is compiled to ARM machine code, the calls to JavaScript micro:bit functions are replaced with calls to the corresponding C++ functions.
|
||||
|
||||
## [Command Line Tools](/cli)
|
||||
|
||||
|
BIN
docs/calliope/02_Hero_CalliopEO.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
docs/calliope/03_Hero_KidsLab.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
docs/calliope/calliopeo-header.png
Normal file
After Width: | Height: | Size: 220 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 122 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 123 KiB |
21
docs/hero-banner.md
Normal file
@ -0,0 +1,21 @@
|
||||
# Hero Banner
|
||||
|
||||
Here are some cool activities to get you started with your @boardname@!
|
||||
|
||||
## Intro Content
|
||||
|
||||
### ~ codecard
|
||||
* name: CalliopEO
|
||||
* description: CALLIOPEO – Taking the Calliope mini to the ISS.
|
||||
* imageUrl: /calliope/02_Hero_CalliopEO.png
|
||||
* url: https://calliope.cc/calliopeo
|
||||
* buttonLabel: Participate!
|
||||
* cardType: link
|
||||
---
|
||||
* name: The 5x5 LED matrix
|
||||
* description: KIDS LAB – play, learn and hack!
|
||||
* imageUrl: /calliope/03_Hero_KidsLab.png
|
||||
* url: https://calliope.cc/programmieren/kidslab
|
||||
* buttonLabel: Explore!
|
||||
* cardType: link
|
||||
### ~
|
@ -6,7 +6,7 @@ Tell everyone who you are. Show you name on the LEDs.
|
||||
|
||||

|
||||
|
||||
## Step 1 @fullscreen
|
||||
## Step 1
|
||||
|
||||
Place the ``||basic:show string||`` block in the ``||basic:forever||`` block to repeat it. Change the text to your name.
|
||||
|
||||
@ -16,13 +16,12 @@ basic.forever(() => {
|
||||
});
|
||||
```
|
||||
|
||||
## Step 2 @fullscreen
|
||||
## Step 2
|
||||
|
||||
Look at the simulator and make sure it shows your name on the screen.
|
||||
|
||||

|
||||
|
||||
## Step 3 @fullscreen
|
||||
|
||||
Place more ``||basic:show string||`` blocks to create your own story.
|
||||
|
||||
@ -33,6 +32,6 @@ basic.forever(() => {
|
||||
})
|
||||
```
|
||||
|
||||
## Step 4 @unplugged
|
||||
## Step 4
|
||||
|
||||
If you have a @boardname@ connected, click ``|Download|`` to transfer your code and watch your name scroll!
|
||||
|
BIN
docs/skillmap/img/space.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
docs/skillmap/img/spacet4.gif
Normal file
After Width: | Height: | Size: 84 KiB |
37
docs/skillmap/mini.md
Normal file
@ -0,0 +1,37 @@
|
||||
# Build a mini Explorer
|
||||
* name: Build a mini Explorer
|
||||
* description: Learn to make a Galga-style game by following this short series of tutorials.
|
||||
* bannerUrl: /skillmap/img/spacet4.gif
|
||||
* backgroundurl: /skillmap/img/space.png
|
||||
* primarycolor: #2EA9B0
|
||||
* secondarycolor: #d6f7fa
|
||||
* tertiarycolor: #5d416b
|
||||
* highlightcolor: #FFFFFF
|
||||
* completednodecolor: #504c52
|
||||
* tags: beginner, mini, first steps
|
||||
|
||||
|
||||
## mini
|
||||
* name: Design a mini Explorer
|
||||
* description: Let's explore the depths of mini! We'll add a vessel for mini travel, create some enemies, and make sure we have plenty of fuel for the journey.
|
||||
* completionUrl: /skillmap/img/spacet4.gif
|
||||
|
||||
### mini-activity1
|
||||
* allowcodecarryover: false
|
||||
|
||||
|
||||
* name: Prepare Your Ship
|
||||
* type: tutorial
|
||||
* description: Get your miniship ready for an adventure!
|
||||
* tags: easy, sprites, scroller
|
||||
|
||||
* url: /calliope/firststeps/firstSteps
|
||||
* imageUrl: /skillmap/img/spacet4.gif
|
||||
|
||||
|
||||
### mini-cert-1
|
||||
* name: Congrats!
|
||||
* kind: completion
|
||||
* type: certificate
|
||||
* imageUrl: /skillmap/img/spacet4.gif
|
||||
* url: /skillmap/img/spacet4.gif
|
81
docs/skillmap/space.md
Normal file
@ -0,0 +1,81 @@
|
||||
# Build a Space Explorer
|
||||
* name: Build a Space Explorer
|
||||
* description: Learn to make a Galga-style game by following this short series of tutorials.
|
||||
* infoUrl: skillmap/educator-info/int-map-info
|
||||
* bannerUrl: /static/skillmap/space/spacet4.gif
|
||||
* backgroundurl: /static/skillmap/backgrounds/space-comp.png
|
||||
* primarycolor: #2EA9B0
|
||||
* secondarycolor: #d6f7fa
|
||||
* tertiarycolor: #5d416b
|
||||
* highlightcolor: #FFFFFF
|
||||
* completednodecolor: #504c52
|
||||
* tags: intermediate, space, projectiles
|
||||
* alternatesources: github:https://github.com/microsoft/pxt-skillmap-sample/skillmap.md
|
||||
|
||||
|
||||
## space
|
||||
* name: Design a Space Explorer
|
||||
* description: Let's explore the depths of space! We'll add a vessel for space travel, create some enemies, and make sure we have plenty of fuel for the journey.
|
||||
* completionUrl: /static/skillmap/certificates/design-a-space-explorer.pdf
|
||||
|
||||
### space-activity1
|
||||
* allowcodecarryover: false
|
||||
|
||||
|
||||
* name: Prepare Your Ship
|
||||
* type: tutorial
|
||||
* description: Get your spaceship ready for an adventure!
|
||||
* tags: easy, sprites, scroller
|
||||
* next: space-activity2, pusher1
|
||||
|
||||
* url: /skillmap/space/space1
|
||||
* imageUrl: /static/skillmap/space/spacet1.gif
|
||||
|
||||
### space-activity2
|
||||
|
||||
* name: Ready, aim, fire!
|
||||
* type: tutorial
|
||||
* description: Equip your ship with projectiles and special effects.
|
||||
* tags: easy, projectiles, kinds
|
||||
* next: pusher2, space-activity3
|
||||
|
||||
* url: /skillmap/space/space2
|
||||
* imageUrl: /static/skillmap/space/spacet2.gif
|
||||
|
||||
### space-activity3
|
||||
|
||||
* name: Here comes trouble!
|
||||
* description: Watch out for danger! Add enemies and countdown lives in your game.
|
||||
* type: tutorial
|
||||
* tags: intermediate, enemies, kinds
|
||||
* next: space-activity4
|
||||
|
||||
* url: /skillmap/space/space3
|
||||
* imageUrl: /static/skillmap/space/spacet3.gif
|
||||
|
||||
### space-activity4
|
||||
|
||||
* name: Fuel Up!
|
||||
* type: tutorial
|
||||
* description: Use an extension to add a fuel gauge to your ship. Make sure to refuel often!
|
||||
* tags: intermediate, extensions
|
||||
* next: space-cert-1
|
||||
|
||||
* url: /skillmap/space/space4
|
||||
* imageUrl: /static/skillmap/space/spacet4.gif
|
||||
|
||||
### space-cert-1
|
||||
* name: Congrats!
|
||||
* kind: completion
|
||||
* type: certificate
|
||||
* imageUrl: /static/skillmap/certificates/space-cert.png
|
||||
* url: /static/skillmap/certificates/design-a-space-explorer.pdf
|
||||
|
||||
|
||||
### pusher1
|
||||
* name: Blank node
|
||||
* kind: layout
|
||||
|
||||
### pusher2
|
||||
* name: Blank node
|
||||
* kind: layout
|
172
docs/skillmap/space/activity1.md
Normal file
@ -0,0 +1,172 @@
|
||||
# Space Explorer
|
||||
|
||||
|
||||
## Introduction @showdialog
|
||||
|
||||
** Let's explore the depths of space! **
|
||||
|
||||
In this tutorial, you'll design a spaceship for your journey.
|
||||
|
||||

|
||||
|
||||
## Set the scene
|
||||
**Give 'em something to look at** 🔭
|
||||
|
||||
---
|
||||
|
||||
|
||||
► Drag the ``||scene:start screen [confetti] effect ⊕||`` from the ``||scene:Scene||`` category and
|
||||
into the ``||loops:on start||`` block that's already in the workspace.
|
||||
|
||||
► Next, select ``||scene:star field||`` (instead of ``||scene:confetti||``) from the dropdown
|
||||
and watch as you blast into space! 🚀
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
```blocks
|
||||
// @highlight
|
||||
effects.starField.startScreenEffect()
|
||||
```
|
||||
|
||||
|
||||
|
||||
## Draw your ship
|
||||
**🧑🏿🚀 Time to choose our ship! 👩🏾🚀**
|
||||
|
||||
---
|
||||
|
||||
► From the ``||sprites:Sprites||`` category, drag the ``||variables:set [mySprite] to sprite [ ] of kind [Player]||``
|
||||
block and place it at the end of the ``||loops:on start||`` container.
|
||||
|
||||
► Click on the grey box in the middle of your
|
||||
``||variables:set [mySprite] to sprite [ ] of kind [Player]||`` block
|
||||
to design a ship of your own! Are you a rusty pile of scraps or a sleek, futuristic rocket?
|
||||
|
||||
---
|
||||
|
||||
**Tip:** Don't feel like drawing your ship? Once you're in the sprite editor,
|
||||
flip to the gallery and choose from premade images.
|
||||
|
||||
```blocks
|
||||
effects.starField.startScreenEffect()
|
||||
// @highlight
|
||||
let mySprite = sprites.create(img`
|
||||
. . . . . . . 9 9 . . . . . . .
|
||||
. . . . . . 9 . . 9 . . . . . .
|
||||
. . . . . . 9 . . 9 . . . . . .
|
||||
. . . . . 9 . 9 9 . 9 . . . . .
|
||||
. . . . . 9 . 9 9 . 9 . . . . .
|
||||
. . . . 9 . 9 9 9 9 . 9 . . . .
|
||||
. . . . 9 . 9 9 9 9 . 9 . . . .
|
||||
. . . 9 . 9 9 9 9 9 9 . 9 . . .
|
||||
. . . 9 . 9 . . . . 9 . 9 . . .
|
||||
. . 9 . 9 9 . 9 9 . 9 9 . 9 . .
|
||||
. . 9 . 9 9 . . . . 9 9 . 9 . .
|
||||
. 9 . 9 9 9 . 9 9 9 9 9 9 . 9 .
|
||||
. 9 . 9 9 9 . 9 9 9 9 9 9 . 9 .
|
||||
9 . 9 9 9 9 9 9 9 9 9 9 9 9 . 9
|
||||
9 . . . . . . . . . . . . . . 9
|
||||
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
|
||||
`, SpriteKind.Player)
|
||||
```
|
||||
|
||||
## Control your ship
|
||||
|
||||
🌟 Let's get your ship moving 🌟
|
||||
|
||||
---
|
||||
|
||||
► Find the ``||controller:move [mySprite] with buttons ⊕||`` block
|
||||
and drag it into the bottom of the ``||loops:on start||`` container.
|
||||
|
||||
** Now try moving your ship around on the game screen! **
|
||||
Your ship will move with the joystick, arrow keys, or **W A S D** keys.
|
||||
|
||||
|
||||
|
||||
```blocks
|
||||
effects.starField.startScreenEffect()
|
||||
let mySprite = sprites.create(img`
|
||||
. . . . . . . 9 9 . . . . . . .
|
||||
. . . . . . 9 . . 9 . . . . . .
|
||||
. . . . . . 9 . . 9 . . . . . .
|
||||
. . . . . 9 . 9 9 . 9 . . . . .
|
||||
. . . . . 9 . 9 9 . 9 . . . . .
|
||||
. . . . 9 . 9 9 9 9 . 9 . . . .
|
||||
. . . . 9 . 9 9 9 9 . 9 . . . .
|
||||
. . . 9 . 9 9 9 9 9 9 . 9 . . .
|
||||
. . . 9 . 9 . . . . 9 . 9 . . .
|
||||
. . 9 . 9 9 . 9 9 . 9 9 . 9 . .
|
||||
. . 9 . 9 9 . . . . 9 9 . 9 . .
|
||||
. 9 . 9 9 9 . 9 9 9 9 9 9 . 9 .
|
||||
. 9 . 9 9 9 . 9 9 9 9 9 9 . 9 .
|
||||
9 . 9 9 9 9 9 9 9 9 9 9 9 9 . 9
|
||||
9 . . . . . . . . . . . . . . 9
|
||||
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
|
||||
`, SpriteKind.Player)
|
||||
// @highlight
|
||||
controller.moveSprite(mySprite)
|
||||
```
|
||||
|
||||
## Stay in screen
|
||||
|
||||
**Uh-oh, if you move off screen, your ship disappears!**
|
||||
|
||||
---
|
||||
|
||||
► To keep your ship from exploring beyond the edges, find
|
||||
the ``||sprites:set [mySprite] stay in screen <on>||`` block and
|
||||
snap it in at the end of the program.
|
||||
|
||||
|
||||
|
||||
```blocks
|
||||
effects.starField.startScreenEffect()
|
||||
let mySprite = sprites.create(img`
|
||||
. . . . . . . 9 9 . . . . . . .
|
||||
. . . . . . 9 . . 9 . . . . . .
|
||||
. . . . . . 9 . . 9 . . . . . .
|
||||
. . . . . 9 . 9 9 . 9 . . . . .
|
||||
. . . . . 9 . 9 9 . 9 . . . . .
|
||||
. . . . 9 . 9 9 9 9 . 9 . . . .
|
||||
. . . . 9 . 9 9 9 9 . 9 . . . .
|
||||
. . . 9 . 9 9 9 9 9 9 . 9 . . .
|
||||
. . . 9 . 9 . . . . 9 . 9 . . .
|
||||
. . 9 . 9 9 . 9 9 . 9 9 . 9 . .
|
||||
. . 9 . 9 9 . . . . 9 9 . 9 . .
|
||||
. 9 . 9 9 9 . 9 9 9 9 9 9 . 9 .
|
||||
. 9 . 9 9 9 . 9 9 9 9 9 9 . 9 .
|
||||
9 . 9 9 9 9 9 9 9 9 9 9 9 9 . 9
|
||||
9 . . . . . . . . . . . . . . 9
|
||||
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
|
||||
`, SpriteKind.Player)
|
||||
controller.moveSprite(mySprite)
|
||||
// @highlight
|
||||
mySprite.setStayInScreen(true)
|
||||
|
||||
```
|
||||
|
||||
|
||||
## Finale @showdialog
|
||||
|
||||
**Great Job!**
|
||||
|
||||
---
|
||||
|
||||
**Try your project on the game screen
|
||||
before you click finish on the tutorial.**
|
||||
|
||||
Is everything how you want it? You can always go back and edit steps if you discover you'd like them to work differently.
|
||||
|
||||
|
||||
|
||||
## Byeeee
|
||||
|
||||
** 🚀 That's it! 🚀**
|
||||
|
||||
You're all set to travel the universe!
|
||||
|
||||
Click **Finish** to return to the main page where you can share your game
|
||||
with family and friends!
|
BIN
docs/skillmap/space/img/space.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
docs/skillmap/space/img/spacet4.gif
Normal file
After Width: | Height: | Size: 84 KiB |
19
docs/skillmaps.md
Normal file
@ -0,0 +1,19 @@
|
||||
# Skillmaps
|
||||
|
||||
|
||||
## Getting started
|
||||
|
||||
```codecard
|
||||
[
|
||||
{
|
||||
"name": "Beginner Skillmap",
|
||||
"cardType": "link",
|
||||
"description": "Learn to make exciting and shareable arcade games by following a few quick tutorials!",
|
||||
"imageUrl": "/static/skillmap/backgrounds/beginner.png",
|
||||
"url": "http://localhost:3232--skillmap#mini",
|
||||
"label": "New? Try This!",
|
||||
"labelClass": "orange ribbon large",
|
||||
"directOpen": true
|
||||
}
|
||||
]
|
||||
```
|
BIN
docs/static/Microsoft-logo_rgb_c-gray-square.png
vendored
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.8 KiB |
BIN
docs/static/Microsoft-logo_rgb_c-gray.png
vendored
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 20 KiB |
BIN
docs/static/bluetooth/Bluetooth_SIG.png
vendored
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 4.0 KiB |
BIN
docs/static/bluetooth/gatt_hierarchy.png
vendored
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
BIN
docs/static/bluetooth/services_and_GATT.png
vendored
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 22 KiB |
BIN
docs/static/coding-cards/balance-card.jpg
vendored
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 60 KiB |
BIN
docs/static/coding-cards/dice-card.jpg
vendored
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 60 KiB |
BIN
docs/static/coding-cards/games-nervous.jpg
vendored
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 62 KiB |
BIN
docs/static/coding-cards/games-reaction.jpg
vendored
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 61 KiB |
BIN
docs/static/coding-cards/games-shake.jpg
vendored
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 56 KiB |
BIN
docs/static/coding-cards/games-sprite.jpg
vendored
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 60 KiB |
BIN
docs/static/coding-cards/games-zen.jpg
vendored
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 55 KiB |
BIN
docs/static/coding-cards/trundlewheel-card.jpg
vendored
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 64 KiB |
BIN
docs/static/configurations/chrome-version.png
vendored
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 14 KiB |
BIN
docs/static/configurations/edge-version.png
vendored
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 4.8 KiB |
BIN
docs/static/configurations/ie-version.png
vendored
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 17 KiB |
BIN
docs/static/configurations/osx-version.png
vendored
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 128 KiB |
BIN
docs/static/configurations/safari-version.png
vendored
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 44 KiB |
BIN
docs/static/configurations/windows-version.png
vendored
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 82 KiB |
BIN
docs/static/courses/logic-lab.png
vendored
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 9.2 KiB |
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 3.9 KiB |
BIN
docs/static/courses/logic-lab/logic-lab-header.jpg
vendored
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 43 KiB |
BIN
docs/static/courses/logic-lab/pld/and-gate-pins.png
vendored
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 3.0 KiB |
BIN
docs/static/courses/logic-lab/pld/and-gate-pld.png
vendored
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 66 KiB |
BIN
docs/static/courses/logic-lab/pld/generic-pld.png
vendored
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 2.2 KiB |
BIN
docs/static/courses/logic-lab/pld/mbit-pld.png
vendored
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 87 KiB |
BIN
docs/static/courses/logic-lab/pld/not-and-or-pld.png
vendored
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 5.5 KiB |
BIN
docs/static/courses/logic-lab/pld/not-and-or.png
vendored
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 14 KiB |
BIN
docs/static/courses/logic-lab/pld/not-gate-pins.png
vendored
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.3 KiB |
BIN
docs/static/courses/logic-lab/pld/not-gate-pld.png
vendored
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 65 KiB |
BIN
docs/static/courses/logic-lab/pld/or-gate-pins.png
vendored
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 3.2 KiB |
BIN
docs/static/courses/logic-lab/pld/or-gate-pld.png
vendored
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 66 KiB |
BIN
docs/static/courses/logic-lab/pld/xor-gate-pld.png
vendored
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 66 KiB |
BIN
docs/static/courses/logic-lab/pld/xor-mbit.png
vendored
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 9.4 KiB |
BIN
docs/static/electron-dmg.png
vendored
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 3.3 KiB |
BIN
docs/static/electron-dmg@2x.png
vendored
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 7.8 KiB |
BIN
docs/static/hero.jpg
vendored
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 243 KiB |
BIN
docs/static/icons/android-chrome-192x192.png
vendored
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
BIN
docs/static/icons/apple-touch-icon.png
vendored
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 7.3 KiB |
BIN
docs/static/icons/favicon-16x16.png
vendored
Before Width: | Height: | Size: 789 B After Width: | Height: | Size: 1.2 KiB |
BIN
docs/static/icons/favicon-32x32.png
vendored
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.8 KiB |
BIN
docs/static/icons/mstile-150x150.png
vendored
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 6.8 KiB |
BIN
docs/static/libs/radio.png
vendored
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 39 KiB |
BIN
docs/static/live-coding/live.jpg
vendored
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 18 KiB |
BIN
docs/static/live-coding/live.png
vendored
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 87 KiB |
BIN
docs/static/live-coding/playlist.png
vendored
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 42 KiB |
BIN
docs/static/logo_texture2.png
vendored
Before Width: | Height: | Size: 779 B After Width: | Height: | Size: 2.7 KiB |
BIN
docs/static/logo_texture3.png
vendored
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 7.0 KiB |