Compare commits

...

27 Commits

Author SHA1 Message Date
a92236b3d8 0.2.5 2016-03-31 19:54:00 -07:00
832bb77987 Bump kindscript to 0.2.7 2016-03-31 19:53:58 -07:00
46713ef6c3 udpate pacman 2016-03-31 18:41:54 -07:00
f9b17a844a hero updates 2016-03-31 18:37:55 -07:00
c5e3f2c673 hero 6 2016-03-31 18:27:46 -07:00
3a12314332 hero 5 2016-03-31 18:27:20 -07:00
3c9c30e489 hero 4 2016-03-31 18:24:09 -07:00
dd28c6318e hero 3 2016-03-31 18:17:36 -07:00
d43c0f6e23 hero 2 2016-03-31 18:16:45 -07:00
e0da743cb4 updated hero 2016-03-31 18:16:03 -07:00
3774b705a2 updated headbands 2016-03-31 17:50:12 -07:00
c1f6e45e36 headband update 2016-03-31 17:47:36 -07:00
7c6d3a0509 updated quizzes 2016-03-31 17:42:40 -07:00
25e83b52f3 Merge branch 'master' of https://github.com/Microsoft/kindscript-microbit 2016-03-31 17:39:25 -07:00
3640ddbd0e udpate quiz ans 2016-03-31 17:39:17 -07:00
7f3b07e43f update speed lesson 2016-03-31 17:38:43 -07:00
dd6e937472 updated docs 2016-03-31 17:35:44 -07:00
1b9dfd1622 updated maker 2016-03-31 17:32:26 -07:00
58ac6429df updated maker 2016-03-31 17:31:08 -07:00
75461512f7 0.2.4 2016-03-31 17:27:20 -07:00
a7a91459ff Packages published 2016-03-31 17:27:11 -07:00
4bd5b556a6 Bump kindscript to 0.2.6 2016-03-31 17:26:25 -07:00
cf32012d4e updated wifi lesson 2016-03-31 17:25:22 -07:00
19e49652f8 charting lesson 2016-03-31 17:18:16 -07:00
691da3605f charting lesson 2016-03-31 17:17:22 -07:00
34c5a5e216 update wifi quiz ans 2016-03-31 17:01:28 -07:00
2ab7175283 update wifi quiz 2016-03-31 16:57:48 -07:00
19 changed files with 263 additions and 59 deletions

View File

@ -81,3 +81,9 @@ Your banana keyboard is ready!
Connect your micro:bit to your computer using your USB cable and run the [banana keyboard](/microbit/lhpkbr) script on it. Tap your banana instrument to play sound against... the fruit!
### ~avatar boothing
Excellent, you're ready to continue with the [challenges](/microbit/lessons/banana-keyboard/challenges)!
### ~

View File

@ -56,9 +56,9 @@ basic.forever(() => {
}
if (eggY1 == 4) {
if (basketX1 == eggX1) {
game.addScore(1) // ***
game.addScore(1)
} else {
game.removeLife(1) // ***
game.removeLife(1)
}
}
basic.pause(300)
@ -142,7 +142,7 @@ basic.forever(() => {
game.removeLife(1)
}
}
basic.pause(fallingPause1) // ***
basic.pause(fallingPause1)
})
```

View File

@ -13,15 +13,17 @@ Welcome! This activity will teach how to use the 1st micro:bit to chart the seco
Let's measure `acceleration (mg)` and then `send number`. `Acceleration` is measured in **milli-gravities**, so a value of -1000 is equivalent to -1g or -9.81m/s^2. We will be able to get the acceleration value (g-force), in the specified "x" dimension. `Send number` will broadcast a number data packet to other micro:bits connected via radio.
```blocks
radio.sendNumber(input.acceleration(Dimension.X))
radio.sendNumber(input.acceleration(Dimension.X));
```
We want to display the acceleration forever. In order to do so, we need a `forever` loop. A forever loop will repeat code in the background forever.
```blocks
basic.forever(() => {
radio.sendNumber(input.acceleration(Dimension.X))
})
radio.sendNumber(input.acceleration(Dimension.X));
});
```
We want to register code to run when a packet is received over radio. We can implement this code by adding `on data received`.

View File

@ -54,3 +54,8 @@ You hacked your headphones!
Connect your micro:bit to your computer using your USB cable and program [light beatbox](/microbit/lessons/light-beatbox/activity) music on it. Press the reset button to restart your music player!
### ~avatar avatar
Excellent, you're ready to continue with the [challenges](/microbit/lessons/light-beatbox/activity)!
### ~

View File

@ -8,10 +8,10 @@ Collection
## Quick Links
* [tutorial](/microbit/lessons/headbands/tutorial)
* [activity](/microbit/lessons/headbands/activity)
* [quiz](/microbit/lessons/headbands/quiz)
* [quiz answers](/microbit/lessons/headbands/quiz-answers)
* [challenges](/microbit/lessons/headbands/challenges)
## Class

View File

@ -1,6 +1,4 @@
# headbands challenges
These challenges will teach you how to create a fun charades game to play with your friends. #docs
# headbands activity
## Before we get started

View File

@ -6,7 +6,7 @@ create a charades game with a collection of strings #offset #screen #variables
## Directions
Use this activity document to guide your work in the [headbands tutorial](/microbit/lessons/headbands/tutorial).
Use this activity document to guide your work in the [headbands tutorial](/microbit/lessons/headbands/activity).
Answer the questions while completing the tutorial. Pay attention to the dialogues!

View File

@ -6,7 +6,7 @@ create a charades game with a collection of strings #offset #screen #variables
## Directions
Use this activity document to guide your work in the [headbands tutorial](/microbit/lessons/headbands/tutorial).
Use this activity document to guide your work in the [headbands tutorial](/microbit/lessons/headbands/activity).
Answer the questions while completing the tutorial. Pay attention to the dialogues!

View File

@ -39,8 +39,14 @@ ghost.change(LedSpriteProperty.Blink, 100);
We want to identify the food so the player moves towards the food. We need to set the `brightness` of the `variable` food to 8. The brightness of the LED screen is expressed as a number between 0 and 255.
![](/static/mb/blocks/lessons/hero-3.png)
```blocks
let hero = game.createSprite(2, 2);
let food = game.createSprite(4, 4);
let ghost = game.createSprite(0, 0);
ghost.change(LedSpriteProperty.Blink, 100);
food = led.brightness() == 8;
```
We want to include a block from the Loops drawer called `While`. Then set the `While` loop to `true`. This code will be important for repeating code of the game logic of the game. The game will continue to run using `While` loop while the Boolean condition is true. Finally, include a `pause` of 400 milliseconds before the logic of the game begins.
@ -50,52 +56,223 @@ let hero = game.createSprite(2, 2);
let food = game.createSprite(4, 4);
let ghost = game.createSprite(0, 0);
ghost.change(LedSpriteProperty.Blink, 100);
food = led.brightness() == 8;
while (true) {
basic.pause(400)
basic.pause(400);
}
```
Let's create a function that will take care of keep the ghost pursuing the hero. We will need to a conditional statement that checks the position of the ghost and hero. The first condition will check if the horizontal coordinates of the ghost is less than the horizontal coordinates of the hero. We create a function from the Game drawer that will check the coordinates of the hero and the ghost. Finally, change the x-direction of the ghost by 1.
Then create another function that will take care of keep the ghost pursuing the hero. We will need to a conditional statement that checks the position of the ghost and hero. The second condition will check if the horizontal coordinates of the ghost is greater than the x-direction of hero. We create a function from the Game drawer that will check the x-direction of hero and ghost. Finally, change the x-direction of the ghost by -1.
![](/static/mb/blocks/lessons/hero-5.png)
```blocks
let hero = game.createSprite(2, 2);
let food = game.createSprite(4, 4);
let ghost = game.createSprite(0, 0);
ghost.change(LedSpriteProperty.Blink, 100);
food = led.brightness() == 8;
while (true) {
basic.pause(400);
if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
ghost.change(LedSpriteProperty.X, 1);
}
else if (ghost.get(LedSpriteProperty.X) > hero.get(LedSpriteProperty.X)) {
ghost.change(LedSpriteProperty.X, -1 );
}
else if (false) {
}
else if (false) {
}
}
```
Let's create the third function and forth function that continues the same logic in the y-direction of pacman and ghost. We create a function from the Game drawer that will check the y-direction of pacman and ghost. Finally, change the y-direction of the ghost to continue following pacman.
![](/static/mb/blocks/lessons/hero-6.png)
```blocks
let hero = game.createSprite(2, 2);
let food = game.createSprite(4, 4);
let ghost = game.createSprite(0, 0);
ghost.change(LedSpriteProperty.Blink, 100);
food = led.brightness() == 8;
while (true) {
basic.pause(400);
if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
ghost.change(LedSpriteProperty.X, 1);
}
else if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
ghost.change(LedSpriteProperty.X, -1 );
}
else if (ghost.get(LedSpriteProperty.Y) < hero.get(LedSpriteProperty.Y)) {
ghost.change(LedSpriteProperty.Y, 1);
}
else if (ghost.get(LedSpriteProperty.Y) > hero.get(LedSpriteProperty.Y)) {
ghost.change(LedSpriteProperty.Y, -1 );
}
}
```
Let's enable pacman to move in the x-direction and move in the y-direction with acceleration using the micor:bit sensor
![](/static/mb/blocks/lessons/hero-7.png)
**Do not disconnect the blocks for the conditional statements. We are focusing on this section of the code and are not showing the entire code**
```blocks
let hero = game.createSprite(2, 2);
let food = game.createSprite(4, 4);
let ghost = game.createSprite(0, 0);
ghost.change(LedSpriteProperty.Blink, 100);
food = led.brightness() == 8;
while (true) {
basic.pause(400);
if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
ghost.change(LedSpriteProperty.X, 1);
}
else if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
ghost.change(LedSpriteProperty.X, -1 );
}
else if (ghost.get(LedSpriteProperty.Y) < hero.get(LedSpriteProperty.Y)) {
ghost.change(LedSpriteProperty.Y, 1);
}
else if (ghost.get(LedSpriteProperty.Y) > hero.get(LedSpriteProperty.Y)) {
ghost.change(LedSpriteProperty.Y, -1 );
}
if (input.acceleration(Dimension.X) > 200) {
hero.change(LedSpriteProperty.X, 1);
}
else if (input.acceleration(Dimension.X) < -200 ) {
hero.change(LedSpriteProperty.X, -1 );
}
if (input.acceleration(Dimension.Y) > 200) {
hero.change(LedSpriteProperty.Y, 1);
}
else if (input.acceleration(Dimension.Y) > -200 ) {
hero.change(LedSpriteProperty.Y, -1 );
}
}
```
Let's setup the logic for the food. If hero is `touching` "food", increase the score of the game by 1 and `set` ``x`` -direction of food randomly randomly from 0 to 4 and `set` ``y``-direction of food randomly from 0 to 4.
![](/static/mb/blocks/lessons/hero-8.jpg)
```blocks
let hero = game.createSprite(2, 2);
let food = game.createSprite(4, 4);
let ghost = game.createSprite(0, 0);
ghost.change(LedSpriteProperty.Blink, 100);
food = led.brightness() == 8;
while (true) {
basic.pause(400);
if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
ghost.change(LedSpriteProperty.X, 1);
}
else if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
ghost.change(LedSpriteProperty.X, -1 );
}
else if (ghost.get(LedSpriteProperty.Y) < hero.get(LedSpriteProperty.Y)) {
ghost.change(LedSpriteProperty.Y, 1);
}
else if (ghost.get(LedSpriteProperty.Y) > hero.get(LedSpriteProperty.Y)) {
ghost.change(LedSpriteProperty.Y, -1 );
}
if (input.acceleration(Dimension.X) > 200) {
hero.change(LedSpriteProperty.X, 1);
}
else if (input.acceleration(Dimension.X) < -200 ) {
hero.change(LedSpriteProperty.X, -1 );
}
if (input.acceleration(Dimension.Y) > 200) {
hero.change(LedSpriteProperty.Y, 1);
}
else if (input.acceleration(Dimension.Y) > -200 ) {
hero.change(LedSpriteProperty.Y, -1 );
}
if (hero.isTouching(food)) {
game.addScore(1);
food.set(LedSpriteProperty.X, Math.random(5));
food.set(LedSpriteProperty.Y, Math.random(5));
}
**Do not disconnect the blocks from the conditional statements. We are focusing on this section of the code and are not showing the entire code**
}
Let's setup the logic for the food and the ghost to be in different quadrants.
![](/static/mb/blocks/lessons/hero-9.jpg)
```
**Do not disconnect the blocks for the conditional statements. We are focusing on this section of the code and are not showing the entire code**
The game over component is now upon the game. If the hero is `touching` the ghost, let's display `game over`
![](/static/mb/blocks/lessons/hero-10.jpg)
Let's setup the logic for the food and the ghost to be in different quadrants. Finally, the game over component is now upon the game. If the hero is `touching` the ghost, let's display `game over`
**Do not disconnect the conditional statements blocks from the remaining blocks. We are focusing on this section of the code and are not showing the entire code**
```blocks
The game can also use the buttons. Let's create a `while` loop for button A is pressed. If button A is pressed, the micro:bit will display the word Hero. Let's use a `while` loop for button B is pressed. If button B is pressed, the micro:bit will display image of the hero.
let hero = game.createSprite(2, 2);
let food = game.createSprite(4, 4);
let ghost = game.createSprite(0, 0);
let ghost.change(LedSpriteProperty.Blink, 100);
food = led.brightness() == 8;
while (true) {
basic.pause(400);
if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
ghost.change(LedSpriteProperty.X, 1);
}
else if (ghost.get(LedSpriteProperty.X) < hero.get(LedSpriteProperty.X)) {
ghost.change(LedSpriteProperty.X, -1 );
}
else if (ghost.get(LedSpriteProperty.Y) < hero.get(LedSpriteProperty.Y)) {
ghost.change(LedSpriteProperty.Y, 1);
}
else if (ghost.get(LedSpriteProperty.Y) > hero.get(LedSpriteProperty.Y)) {
ghost.change(LedSpriteProperty.Y, -1 );
}
if (input.acceleration(Dimension.X) > 200) {
hero.change(LedSpriteProperty.X, 1);
}
else if (input.acceleration(Dimension.X) < -200 ) {
hero.change(LedSpriteProperty.X, -1 );
}
if (input.acceleration(Dimension.Y) > 200) {
hero.change(LedSpriteProperty.Y, 1);
}
else if (input.acceleration(Dimension.Y) > -200 ) {
hero.change(LedSpriteProperty.Y, -1 );
}
if (hero.isTouching(food)) {
game.addScore(1);
food.set(LedSpriteProperty.X, Math.random(5));
food.set(LedSpriteProperty.Y, Math.random(5));
if (food.get(LedSpriteProperty.X) < 2 && food.get(LedSpriteProperty.Y) < 2) {
ghost.set(LedSpriteProperty.X, 4);
ghost.set(LedSpriteProperty.Y, 4);
}
else if (food.get(LedSpriteProperty.X) > 2 && food.get(LedSpriteProperty.Y) < 2) {
ghost.set(LedSpriteProperty.X, 0);
ghost.set(LedSpriteProperty.Y, 4);
}
else if (food.get(LedSpriteProperty.X) < 2 && food.get(LedSpriteProperty.Y) > 2) {
ghost.set(LedSpriteProperty.X, 4);
ghost.set(LedSpriteProperty.Y, 0);
}
else {
ghost.set(LedSpriteProperty.X, 0);
ghost.set(LedSpriteProperty.Y, 0);
}
}
if (hero.isTouching(ghost)) {
game.gameOver();
}
![](/static/mb/blocks/lessons/hero-11.jpg)
}
0.set(LedSpriteProperty.X, 4);
```
### ~avatar avatar
You can review the final code for [hero](/microbit/numraj)
Congratulations! You have a homemade hero game based on the classic version of PacMan
### ~

View File

@ -6,4 +6,4 @@ create a fake wifi app to trick your friends
* [activity](/microbit/lessons/prank-wifi/activity)
* [quiz](/microbit/lessons/prank-wifi/quiz)
* [quiz answers](/microbit/lessons/prank-wifi/quiz-answers)

View File

@ -130,7 +130,7 @@ basic.forever(() => {
. . # # #
. # # # #
# # # # #
`) // ***
`)
}
})
```

View File

@ -15,9 +15,9 @@ Answer the questions while completing the tutorial. Pay attention to the dialogu
<br/>
```blocks
let xAccel = math.abs(input.acceleration("x"))
let yAccel = math.abs(input.acceleration("y"))
let zAccel = math.abs(input.acceleration("z"))
let xAccel = Math.abs(input.acceleration(Dimension.X))
let yAccel = Math.abs(input.acceleration(Dimension.Y))
let zAccel = Math.abs(input.acceleration(Dimension.Z))
```
<br/>
@ -29,6 +29,9 @@ let zAccel = math.abs(input.acceleration("z"))
<br/>
```blocks
let xAccel = Math.abs(input.acceleration(Dimension.X))
let yAccel = Math.abs(input.acceleration(Dimension.Y))
let zAccel = Math.abs(input.acceleration(Dimension.Z))
let sum = xAccel + yAccel + zAccel
```
@ -39,8 +42,12 @@ let sum = xAccel + yAccel + zAccel
<br/>
```blocks
let xAccel = Math.abs(input.acceleration(Dimension.X))
let yAccel = Math.abs(input.acceleration(Dimension.Y))
let zAccel = Math.abs(input.acceleration(Dimension.Z))
let sum = xAccel + yAccel + zAccel
if (sum < 1400) {
basic.showleds(`
basic.showLeds(`
. . . . .
. . . . .
. . # . .
@ -59,8 +66,12 @@ if (sum < 1400) {
<br/>
```blocks
let xAccel = Math.abs(input.acceleration(Dimension.X))
let yAccel = Math.abs(input.acceleration(Dimension.Y))
let zAccel = Math.abs(input.acceleration(Dimension.Z))
let sum = xAccel + yAccel + zAccel
if (sum >= 1400 && sum < 1680) {
basic.showleds(`
basic.showLeds(`
. . . . .
. . . # .
. . # # .
@ -70,7 +81,7 @@ if (sum >= 1400 && sum < 1680) {
}
```
## 5. Write the 'if statement' needed to display this specific plot image on the device
## 5. Write the code to display this specific image on the device
![](/static/mb/lessons/prank-wifi-0.png)
@ -78,9 +89,13 @@ if (sum >= 1400 && sum < 1680) {
<br/>
```
```blocks
let xAccel = Math.abs(input.acceleration(Dimension.X))
let yAccel = Math.abs(input.acceleration(Dimension.Y))
let zAccel = Math.abs(input.acceleration(Dimension.Z))
let sum = xAccel + yAccel + zAccel
if (sum >= 1680) {
basic.showleds(`
basic.showLeds(`
. . . . .
. . . . .
. . . . .

View File

@ -6,7 +6,7 @@ create a fake wifi app to trick your friends #string #forever #abs #var #plot #i
## Directions
Use this activity document to guide your work in the [prank WiFi tutorial](/microbit/lessons/prank-wifi/tutorial)
Use this activity document to guide your work in the [prank WiFi tutorial](/microbit/lessons/prank-wifi/activity)
Answer the questions while completing the tutorial. Pay attention to the dialogues!

View File

@ -37,7 +37,7 @@ After two button presses, **count** will be equal to 2.
## 5. If the rectangle below represents the BBC micro:bit, shade the areas that will be displayed after five button presses on Button A. Explain why that particular area is shaded.
```blocks
count_ = 0
let count_ = 0
input.onButtonPressed(Button.A, () => {
count_ = count_ + 1
basic.showNumber(count_, 100)

View File

@ -6,7 +6,7 @@ counter that keeps track of how many times button "A" has been pressed #LED #scr
## Directions
Use this activity document to guide your work in the [speed button tutorial](/microbit/lessons/speed-button/tutorial).
Use this activity document to guide your work in the [speed button tutorial](/microbit/lessons/speed-button/activity).
Answer the questions while completing the tutorial. Pay attention to the dialogues!
@ -37,7 +37,7 @@ input.onButtonPressed(Button.A, () => {
## 4. Draw which LED is ON after running this code and pressing Button A five times. Explain why you chose to draw that number.
```blocks
count_ = 0
let count_ = 0
input.onButtonPressed(Button.A, () => {
count_ = count_ + 1
basic.showNumber(count_, 100)

View File

@ -150,9 +150,11 @@ Trim any leftover fabric, threads or tape.
Your watch is ready!
### Step 22
### ~avatar avatar
Connect your micro:bit to your computer using your USB cable and upload the [rock paper scissors](/microbit/rrwupw) script on it. Shake your watch to play against... the micro:bit!
Excellent, you're ready to continue with the [challenges](/microbit/lessons/rock-paper-scissors/activity)!
### ~
### Acknowledgements

View File

@ -9,5 +9,5 @@
"dependencies": {
"microbit": "file:../microbit"
},
"installedVersion": "barvfb"
"installedVersion": "rlfgis"
}

View File

@ -1,7 +1,7 @@
{
"name": "microbit",
"description": "The microbit core library",
"installedVersion": "dnarsa",
"installedVersion": "tsmdvf",
"files": [
"README.md",
"core.d.ts",
@ -23,7 +23,10 @@
"id": "microbit",
"name": "BBC micro:bit",
"title": "JavaScript for BBC micro:bit",
"cloud": false,
"cloud": {
"workspace": false,
"packages": true
},
"blocksprj": {
"id": "blocksprj",
"config": {
@ -68,13 +71,9 @@
"isNative": false,
"hasHex": true
},
"serial" : {
"serial": {
"manufacturerFilter": "^mbed$",
"log": true
},
"cloud" : {
"workspace": false,
"packages": true
}
"log": true
}
}
}

View File

@ -1,6 +1,6 @@
{
"name": "kindscript-microbit",
"version": "0.2.3",
"version": "0.2.5",
"description": "BBC micro:bit target for KindScript",
"keywords": [
"JavaScript",
@ -30,6 +30,6 @@
"typescript": "^1.8.7"
},
"dependencies": {
"kindscript": "0.2.5"
"kindscript": "0.2.7"
}
}