Migrate docs from the other repo
This commit is contained in:
@ -0,0 +1,235 @@
|
||||
# rock paper scissors teacher guide
|
||||
|
||||
My script. #docs
|
||||
|
||||
Welcome! This guide will show you how to complete the challenges for the game of rock, paper, scissors!
|
||||
|
||||
## Challenge 1
|
||||
|
||||
### Step 16
|
||||
|
||||
Awesome! You have just created your game of rock paper scissors. However, why don't we add a little more to it? We can keep track of your score against the micro:bit using global variables. Create a global variable to keep track of the wins against the micro:bit. To do so, click on `add new`, then `Data`, and then `Number`.
|
||||
|
||||
```
|
||||
var wins: number = 0
|
||||
```
|
||||
|
||||
### Step 17
|
||||
|
||||
At the beginning of the game, you don't have any wins against the micro:bit. As a result, let's set the `data->wins` variable to 0 at the top of your main function.
|
||||
|
||||
```
|
||||
wins = 0 // ***
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
let img = images.createImage(`
|
||||
. . . . . # # # # # . . . . #
|
||||
. # # # . # . . . # # # . # .
|
||||
. # # # . # . . . # . # # . .
|
||||
. # # # . # . . . # # # . # .
|
||||
. . . . . # # # # # . . . . #
|
||||
`)
|
||||
let offset = 5 * Math.random(3)
|
||||
img.showImage(offset)
|
||||
})
|
||||
```
|
||||
|
||||
### Step 18
|
||||
|
||||
Now let's keep track of wins by using button `A`. Every time button `A` is pressed, we want to increment `data->wins` by 1. We can begin by adding a condition `input->on button pressed("A")`.
|
||||
|
||||
```
|
||||
wins = 0
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
let img1 = images.createImage(`
|
||||
. . . . . # # # # # . . . . #
|
||||
. # # # . # . . . # # # . # .
|
||||
. # # # . # . . . # . # # . .
|
||||
. # # # . # . . . # # # . # .
|
||||
. . . . . # # # # # . . . . #
|
||||
`)
|
||||
let offset1 = 5 * Math.random(3)
|
||||
img1.showImage(offset1)
|
||||
})
|
||||
input.onButtonPressed("A", () => {
|
||||
}) // ***
|
||||
```
|
||||
|
||||
### Step 19
|
||||
|
||||
Nice! Now that we added the condition for when button `A` is pressed, we can increment `data->wins` by 1. Add the following statement in the condition.
|
||||
|
||||
```
|
||||
wins = 0
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
let img2 = images.createImage(`
|
||||
. . . . . # # # # # . . . . #
|
||||
. # # # . # . . . # # # . # .
|
||||
. # # # . # . . . # . # # . .
|
||||
. # # # . # . . . # # # . # .
|
||||
. . . . . # # # # # . . . . #
|
||||
`)
|
||||
let offset2 = 5 * Math.random(3)
|
||||
img2.showImage(offset2)
|
||||
})
|
||||
input.onButtonPressed("A", () => {
|
||||
wins = wins + 1 // ***
|
||||
})
|
||||
```
|
||||
|
||||
### Step 20
|
||||
|
||||
You have tracked the number of wins you have against the micro:bit. However, how will you ever know how many wins you have? After we increment `data->wins`, let's display the total number of wins you have.
|
||||
|
||||
```
|
||||
wins = 0
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
let img3 = images.createImage(`
|
||||
. . . . . # # # # # . . . . #
|
||||
. # # # . # . . . # # # . # .
|
||||
. # # # . # . . . # . # # . .
|
||||
. # # # . # . . . # # # . # .
|
||||
. . . . . # # # # # . . . . #
|
||||
`)
|
||||
let offset3 = 5 * Math.random(3)
|
||||
img3.showImage(offset3)
|
||||
})
|
||||
input.onButtonPressed("A", () => {
|
||||
wins = wins + 1
|
||||
basic.showString("WINS:", 150) // ***
|
||||
basic.showNumber(wins, 150) // ***
|
||||
})
|
||||
```
|
||||
|
||||
* Tap `run` to run the program on the simulator. Notice the number of wins you have against the micro:bit.
|
||||
|
||||
## Challenge 2
|
||||
|
||||
### Step 21
|
||||
|
||||
You have managed to keep score of the number of wins you have against the micro:bit. However, what about losses? Let's begin by creating another global variable to keep track of losses.
|
||||
|
||||
```
|
||||
var losses: number = 0
|
||||
```
|
||||
|
||||
### Step 22
|
||||
|
||||
Add a condition for when button `B` is pressed. When this occurs, we will increment your losses against the micro:bit by 1. Let's hope that this button will not be pressed too often!
|
||||
|
||||
```
|
||||
wins = 0
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
let img4 = images.createImage(`
|
||||
. . . . . # # # # # . . . . #
|
||||
. # # # . # . . . # # # . # .
|
||||
. # # # . # . . . # . # # . .
|
||||
. # # # . # . . . # # # . # .
|
||||
. . . . . # # # # # . . . . #
|
||||
`)
|
||||
let offset4 = 5 * Math.random(3)
|
||||
img4.showImage(offset4)
|
||||
})
|
||||
input.onButtonPressed("A", () => {
|
||||
wins = wins + 1
|
||||
basic.showString("WINS:", 150)
|
||||
basic.showNumber(wins, 150)
|
||||
})
|
||||
input.onButtonPressed("B", () => {
|
||||
}) // ***
|
||||
```
|
||||
|
||||
### Step 23
|
||||
|
||||
Now let's continue where we left off. Just as we did for `data->wins` when button `A` is pressed, we need to increment `losses` by 1 when button `B` is pressed.
|
||||
|
||||
```
|
||||
wins = 0
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
let img5 = images.createImage(`
|
||||
. . . . . # # # # # . . . . #
|
||||
. # # # . # . . . # # # . # .
|
||||
. # # # . # . . . # . # # . .
|
||||
. # # # . # . . . # # # . # .
|
||||
. . . . . # # # # # . . . . #
|
||||
`)
|
||||
let offset5 = 5 * Math.random(3)
|
||||
img5.showImage(offset5)
|
||||
})
|
||||
input.onButtonPressed("A", () => {
|
||||
wins = wins + 1
|
||||
basic.showString("WINS:", 150)
|
||||
basic.showNumber(wins, 150)
|
||||
})
|
||||
input.onButtonPressed("B", () => {
|
||||
losses = losses + 1 // ***
|
||||
})
|
||||
```
|
||||
|
||||
### Step 24
|
||||
|
||||
Let's also display the score when button `B` is pressed, just as we have done for button `A`. This will help us keep track of the number of wins and losses you have against the micro:bit.
|
||||
|
||||
```
|
||||
wins = 0
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
let img6 = images.createImage(`
|
||||
. . . . . # # # # # . . . . #
|
||||
. # # # . # . . . # # # . # .
|
||||
. # # # . # . . . # . # # . .
|
||||
. # # # . # . . . # # # . # .
|
||||
. . . . . # # # # # . . . . #
|
||||
`)
|
||||
let offset6 = 5 * Math.random(3)
|
||||
img6.showImage(offset6)
|
||||
})
|
||||
input.onButtonPressed("A", () => {
|
||||
wins = wins + 1
|
||||
basic.showString("WINS:", 150)
|
||||
basic.showNumber(wins, 150)
|
||||
})
|
||||
input.onButtonPressed("B", () => {
|
||||
losses = losses + 1
|
||||
basic.showString("WINS", 150) // ***
|
||||
basic.showNumber(wins, 150) // ***
|
||||
basic.showString("LOSSES:", 150) // ***
|
||||
basic.showNumber(losses, 150) // ***
|
||||
})
|
||||
```
|
||||
|
||||
### Step 25
|
||||
|
||||
You have managed to keep track of both the wins and losses you have against the micro:bit! But did you notice that you haven't updated something? Take a look at condition of `input->on button pressed("A")`.
|
||||
|
||||
```
|
||||
wins = 0
|
||||
input.onGesture(Gesture.Shake, () => {
|
||||
let img7 = images.createImage(`
|
||||
. . . . . # # # # # . . . . #
|
||||
. # # # . # . . . # # # . # .
|
||||
. # # # . # . . . # . # # . .
|
||||
. # # # . # . . . # # # . # .
|
||||
. . . . . # # # # # . . . . #
|
||||
`)
|
||||
let offset7 = 5 * Math.random(3)
|
||||
img7.showImage(offset7)
|
||||
})
|
||||
input.onButtonPressed("A", () => {
|
||||
wins = wins + 1
|
||||
basic.showString("WINS:", 150)
|
||||
basic.showNumber(wins, 150)
|
||||
basic.showString("LOSSES:", 150) // ***
|
||||
basic.showNumber(losses, 150) // ***
|
||||
})
|
||||
input.onButtonPressed("B", () => {
|
||||
losses = losses + 1
|
||||
basic.showString("WINS", 150)
|
||||
basic.showNumber(wins, 150)
|
||||
basic.showString("LOSSES:", 150)
|
||||
basic.showNumber(losses, 150)
|
||||
})
|
||||
```
|
||||
|
||||
* Tap the `run` button to run your game on the simulator. See if you can get more wins than the micro:bit can!
|
||||
|
||||
Congratulations! You have successfully created a fully functional game of rock, paper, scissors against the micro:bit. Challenge your friends to see who can get a better score against the micro:bit.
|
||||
|
Reference in New Issue
Block a user