9. Spel: Karel de Led.

Onderaan deze pagina treft u in het blauw de programmeercode van het ‘Spel: Karel de Led’. Voor het programmeren van dit spel is gebruik gemaakt van de programmeer-taal JavaScript.
Hieronder staat stap-voor-stap beschreven hoe u de code kunt invoeren (knippen/ plakken) in de JAVA-omgeving van de Java Script Blocks Editor en hoe u die op de Micro:bit kunt plaatsen.
Onder de blauwe programmeercode staan de spelregels en staat vermeld hoe u het spel kunt spelen op de Micro:bit.


Programmacode invoeren in JAVA-omgeving van Java Script Blocks Editor.
1. Selecteer de blauwe programmeercode onder deze tekst door er met ingedrukte linker muisknop over heen slepen.
2. Geef een rechter muisklik in de blauw geselecteerde tekst en klik op ‘Kopiëren’.
3. Surf nu naar http://microbit.org/
4. Selecteer rechts bovenin bij ‘Language’ de taal ‘Nederlands’.
5. Klik op de knop ‘Aan de slag’.
6. Klik bij ‘Java Script Blocks Editor (PXT)’ op de knop ‘Aan de slag’.
7. Klik links boven op de knop ‘Projecten’ en daarna op de knop ‘Nieuw Project’.
8. Klik onderaan de pagina, links van het icoontje van de diskette, op de tekst ‘Zonder
titel’ en voer daar als titel in ‘Spel: Karel de Led’.
7. Klik nu bovenaan de pagina op de knop JavaScript’.
8. Verwijder alle programmacode die op de geopende pagina staat.
9. Druk nu op uw toetsenbord tegelijkertijd op de toetsen CTRL en V (= plakken) en de programmacode van het spel verschijnt op de pagina.

NB. Desgewenst kunt u de code hier ook rechtstreeks downloaden en wegschrijven naar de Micro:bit. Wilt u dat, klik dan op de knop ‘Download’ hieronder en in het volgende scherm nogmaals op de knop ‘Download’. Sluit de Micro:bit met USB-kabel aan op uw PC en versleep het bestand naar de map Micro:bit die inde Verkenner verschijnt.
download-155424_960_720

Programma uploaden naar de Micro:bit
1. Sluit de Micro:bit m.b.v. de USB-kabel aan op de pc.
2. Wacht even en de Verkenner met daarin de Micro:bit-drive wordt geopend.
3. Laat de Verkenner open staan.
4. Keer terug naar de programmeeromgeving en klik linksonder op de knop ‘Downloaden’.
5. Wacht tot het downloaden is voltooid en klik daarna  op de groene knop ‘Klaar’.
6. Versleep het gedownloade bestand naar het icoontje van de Verkenner in de taakbalk. Wacht tot de Micro:bit drive zichtbaar wordt en sleep het bestand daar naar toe. Het bestand wordt nu weggeschreven op de Micro:bit.
7. Is het programma op de Micro:bit geplaatst koppel dan de USB-kabel los en verbindt de Micro:bit met de accu.
8. Het spel staat  nu op de Micro:bit en kan gespeeld worden.


/**
* Karel the LED
*
* Copy this code into the JavaScript editor and program the board.
* Use the instructions above to complete the challenges.
*/
basic.forever(() => {
if (board.isKarelActive) {
led.toggle(board.karelX, board.karelY)
basic.pause(500)
}
})
input.onButtonPressed(Button.A, () => {
board.pressedA();
updateLeds();
})
input.onButtonPressed(Button.B, () => {
board.pressedB();
updateLeds();
})
input.onGesture(Gesture.Shake, () => {
board.shake();
updateLeds();
})
input.onButtonPressed(Button.AB, () => {
board.pressedAB();
updateLeds();
})
function updateLeds() {
for (let j = 0; j < 5; j++) {
for (let k = 0; k < 5; k++) {
if (board.ledState[j][k]) {
led.plot(k, j);
} else {
led.unplot(k, j);
}
}
}
}
const board = new Board();
enum Direction {
UP = 0,
LEFT,
DOWN,
RIGHT
}
class Board {
public isKarelActive: boolean;
public karelX: number;
public karelY: number;

public ledState: Array < Array < boolean >>;
private karelDirection: Direction;

constructor() {
this.isKarelActive = true;
this.karelX = 2;
this.karelY = 2;
this.karelDirection = Direction.UP;
this.ledState =[];
for (let i = 0; i < 5; i++) {
this.ledState.push([false, false, false, false, false]);
}
}

pressedA() {
if (!this.isKarelActive) {
return;
}
this.karelDirection = (this.karelDirection + 1) % 4;
}

pressedB() {
if (!this.isKarelActive) {
return;
}
this.ledState[this.karelY][this.karelX] = true;
this.moveKarel()
}

shake() {
if (!this.isKarelActive) {
return;
}
this.moveKarel()
}

private moveKarel() {
if (!this.isKarelActive) {
return;
}
switch (this.karelDirection) {
case Direction.UP:
if (this.karelY > 0) {
this.karelY -= 1;
}
break;
case Direction.LEFT:
if (this.karelX > 0) {
this.karelX -= 1;
}
break;
case Direction.DOWN:
if (this.karelY < 4) {
this.karelY += 1;
}
break;
case Direction.RIGHT:
if (this.karelX < 4) {
this.karelX += 1;
}
break;
}
}

pressedAB() {
this.isKarelActive = !this.isKarelActive;
}

}


Spelregels.
Op de voorzijde van de Micro:bit bevinden zich 25 ledlampjes.
Teken op een velletje papier een raster van 5 bij 5 vakjes, waarbij ieder vakje staat voor een ledlampje.
Teken in dit raster met kruisjes een willekeurig patroon.
Bij het ‘Spel Karel de Led’ is het de bedoeling dat de ledlampjes op de Micro:bit volgens dit patroon aan het branden worden gebracht.

Als het spel begint brandt het middelste ledje.
*  A-knop – linksom draaien
Door op de A-knop te drukken verandert u van richting. Er gebeurt niets zichtbaars maar u verandert er de richting waarmee u zo meteen uw weg gaat vervolgen.
*  B-knop – een stap voorwaarts 
U gaat nu een stap voorwaarts (er begint een ledje te branden) in de richting die u hebt gekozen met de A-knop.
*  Schudden met de Micro:bit
Door met de Micro:bit te schudden wordt er een vakje overgeslagen (dit vakje gaat niet branden).
*  A+B knop tegelijkertijd indrukken – resultaat tonen.
Als u de A en B knop tegelijkertijd indrukt verschijnt het patroon (m.u.v. het knipperende ledje) dat u op dat moment hebt getekend.
Drukt u weer op de A en B knop dan keert mu weer terug in de omgeving waar u het spel verder kunt spelen.
*  Resetknop
Drukt u op de resetknop aan de achterzijde van de Micro:bit dan begint het spel van voor af aan.

Bouw m.b.v. de knoppen A, B, A+B en het schudden van de Micro:bit een patroon van brandende led-lichtjes dat overeenkomt met het patroon op het velletje papier.
Tip!!!   Laat anderen een patroon tekenen en bouw dat zelf na.