Inhoudsopgave:
- Stap 1: Voordat u aan de slag gaat…
- Stap 2: Regels van het raadspel
- Stap 3: Het blokkenprogramma: variabelen
- Stap 4: De functies
- Stap 5: Het opstarten van het programma en de Shake Events & Event Handlers
- Stap 6: Het opstartbericht en de uitdagingsfuncties
- Stap 7: The Button a Click Event - Reageer op de BITs Challenge
- Stap 8: Het Button B Click-evenement - Dien een reactie in op de BITs-uitdaging
- Stap 9: Win/verlies en rest van de functies
- Stap 10: De simulator en code
Video: Wat denkt de Bit? Maak een eenvoudig raadspel met de BBC Microbit!: 10 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Ik pakte een paar BBC Microbits na het lezen van positieve recensies over hen in verschillende online artikelen.
In een poging om vertrouwd te raken met de BIT, speelde ik een paar uur met de online Microsoft Blocks Editor en bedacht een eenvoudig raadspel.
In deze IBLE zullen we het hebben over de regels van het spel en navigeren door de functies die in verschillende codeblokken in de Blocks Editor zijn verzameld.
Ten slotte kan het opgewonden publiek naar de online simulator navigeren en dit eenvoudige spel een kans geven.
Laten we beginnen.
Stap 1: Voordat u aan de slag gaat…
de hardware
Het BBC Microbit-bord is gemakkelijk te leren kennen. Voor deze IBLE hoef je alleen maar te weten dat het een klein bord is met 2 drukknoppen, een reeks kleine LED's en een micro-USB-aansluiting die fungeert als voeding en een middel om een programma op het bord te laden.
De reeks kleine LED's kan worden geprogrammeerd om in verschillende patronen op te lichten.
Opmerking:
Je hebt het fysieke bord niet nodig voor deze IBLE! De BBC Microbit-site heeft een online simulator om de code die u online ontwikkelt te testen.
De software
Deze IBLE gaat niet in detail over het aan de slag gaan met de BBC Microbit en/of de Online Blocks Editor.
Het publiek wordt aangemoedigd om deze BBC Micorbit-bron te verkennen voordat ze verder gaan met de volgende stappen.
BBC Microbit is ontworpen om programmeren te onderwijzen met een zeer gebruiksvriendelijke benadering en daarom is bekendheid met een andere programmeertaal leuk om te hebben, maar niet vereist, vooral als je de Microsoft Blocks Editor gaat gebruiken om te leren programmeren.
Desalniettemin ben ik nog geen product tegengekomen dat zo gemakkelijk is om mee aan de slag te gaan dan de BBC Microbit, aangezien ik verschillende andere programmeerplatforms voor microcontrollers bezit en ermee speel.
Stap 2: Regels van het raadspel
De spelregels zijn als volgt:
- Bij het opstarten denkt de BIT aan een nummer en daagt de menselijke speler uit om te raden wat dat nummer is door een bericht op het LED-paneel af te drukken, en wacht op een antwoord
- De speler doet een gok en drukt net zo vaak op de linker drukknop (A) als het antwoord - Voorbeeld, als de speler 5 heeft geraden, wordt de knop 5 keer ingedrukt
- Om het antwoord naar de BIT te sturen, drukt de speler één keer op de Rechter Drukknop (B)!
- Als de spelers het goed raden, dan scoort de speler een punt, zo niet krijgt de BIT een punt
- Als een speler een getal buiten het bereik heeft geraden, scoort de andere speler een punt - de BIT geeft een grote X weer op zijn led-display en gaat verder met het raden van een nieuw getal en herhaalt de uitdaging; Voorbeeld: Als de BIT je heeft uitgedaagd om een getal tussen 1 en 5 te raden, en je hebt 6 geraden, of als je NUL hebt geraden (door simpelweg op knop B te drukken voordat je op knop A drukt), is die ronde ongeldig
- De uitdaging-reactie gaat door totdat een van de spelers de maximaal toegestane punten scoort
Een nieuw spel starten:
Om op elk moment een nieuw spel te starten, schud je gewoon de BIT! Of koppel gewoon de stroom los en sluit deze weer aan.
Stap 3: Het blokkenprogramma: variabelen
Het programma gebruikt een aantal variabelen met de naam om overeen te komen met hun functies die hieronder worden vermeld. Deze variabelen kunnen worden aangemaakt door te klikken op het tabblad Variabelen programmeren in de Blokkeneditor
BIT_SCORE - Houdt de door de BIT. gescoorde punten bij
bitGuessed - Deze variabele bevat de willekeurige waarde geraden door de BIT
CHECK - indien ingesteld op True, controleert de BIT of de gok van de speler gelijk is aan de gok van de BIT
GAME_RANGE - Dit aantal beperkt hoe hoog de BIT of een speler kan raden
Voorbeeld: Indien ingesteld op 6, kunnen beide spelers raden van 1 tot 6
MSG - Een tekenreeks die is gewijzigd om verschillende berichten weer te geven op basis van de context van het spel
PLAYER_SCORE - houdt de door de speler gescoorde punten bij
playerGuess - Het aantal geraden door de speler wordt vastgelegd in deze variabele
OPMERKING
De allereerste variabele met de naam item is een algemene en standaardvariabele en kan worden genegeerd
Stap 4: De functies
Als onderdeel van het leerproces en voor een betere organisatie, was de code georganiseerd in een aantal functies die in het hoofdprogramma konden worden aangeroepen of aangeroepen. Net als variabelen kunnen de functies worden gemaakt en geopend door op het tabblad Geavanceerd > Functies programmeren te klikken.
Hieronder volgt een korte beschrijving van de functies:
aankondigingWinner - Deze functie drukt het winnende bericht af dat is geadresseerd aan de winnende speler
doChallenge - De functie die de BIT aanroept om een getal te raden en de speler uit te dagen
showBadGuess - Geeft een bericht weer met een enorme X op het LED-paneel als een van de spelers buiten het toegestane bereik heeft geraden
showLose - wordt aangeroepen als de BIT een uitdaging over de speler wint
showMessage - presenteert een bericht om de speler uit te dagen een nummer binnen een bepaald bereik te raden
showWin - wordt opgeroepen wanneer de speler de gokronde wint over de BIT
Stap 5: Het opstarten van het programma en de Shake Events & Event Handlers
De "on start" en "on shake" zijn event handlers die respectievelijk worden aangeroepen wanneer de "start" event en "shake" events plaatsvinden. Zoals blijkt uit de Blocks-code, is wat er gebeurt als deze twee gebeurtenishandlers worden aangeroepen bijna hetzelfde als in:
- De functie showMessage() wordt aangeroepen om het bericht weer te geven wanneer het spel begint
- Er is een korte pauze van 650 milliseconden nadat het bericht is weergegeven
- De functie doChallenge() wordt aangeroepen waarbij de BIT een getal raadt en wacht tot de menselijke speler een gok doet
We zullen de twee functies in de volgende stap behandelen.
Dat gezegd hebbende, zijn er fundamentele verschillen tussen de "on start" en "on shake" event handlers:
- De "on start"-gebeurtenisafhandeling wordt uitgevoerd telkens wanneer de BIT wordt opgestart - zoals bij het loskoppelen en opnieuw aansluiten van de stroom naar de BIT
- Bepaalde dingen die slechts één keer mogen gebeuren wanneer het programma opstart, zijn gedefinieerd in "bij start" en nergens anders in het hele programma
- Een voorbeeld hiervan is het initialiseren van de variabele GAME_RANGE - in dit geval wordt het geïnitialiseerd op 6, wat betekent dat de spelers een getal tussen 1 en 6 kunnen raden
- Aangezien de "aan start" een basis BIT-functie is, is het geen wonder dat deze toegankelijk is vanaf het tabblad Basisprogrammering van de Blocks Editor
- De "on shake" aan de andere kant is een gebeurtenishandler die wordt aangeroepen wanneer de gebruiker invoer geeft aan de BIT in de vorm van een snelle shake
- Daarom is de "on shake" event handler te vinden in het Input programmering tabblad van de Blocks Editor
Stap 6: Het opstartbericht en de uitdagingsfuncties
De showMessage() Startup Message-functie is een eenvoudige functie die het BITs-LED-palet wist met een opdracht voor het wissen van het scherm en een scrollend bericht weergeeft dat de speler uitdaagt een nummer te raden.
Zoals te zien is in het functieblok showMessage, worden een paar vaste stukjes string aan de variabele GAME_RANGE toegevoegd om een eenvoudig bericht weer te geven dat zegt:
Raad eens 0 - 6!
De functie doChallenge() wordt aan het begin van elke uitdagingsronde aangeroepen en doet daarom het volgende, gezien vanuit het functieblok doChallenge:
- Initialiseert de playerGuess-variabele naar nul voordat een nieuwe invoer van de menselijke speler wordt geaccepteerd
- Initialiseert de CHECK-variabele naar false - wat betekent dat de ronde op het punt staat te beginnen en dat het nog geen tijd is om de getallen te vergelijken die door beide spelers zijn geraden
- Vervolgens, en het belangrijkste, kiest de BIT een willekeurig getal binnen het bereik gedefinieerd door GAME_RANGE en neemt het op in de bitGuessed-variabele
- Ten slotte wordt het LED-palet verlicht met een vraagtekensymbool dat de menselijke speler vraagt om een input in reactie op de BITs-uitdaging!
Opmerking
Als de waarde van de variabele GAME_RANGE wordt gewijzigd zoals besproken in de vorige stap, kan uw spel er iets anders uitzien en zich gedragen.
De samenvoegfunctie is een tekenreeksfunctie en is toegankelijk via het tabblad Tekstprogrammering van de Blokkeneditor
Stap 7: The Button a Click Event - Reageer op de BITs Challenge
Zodra het grote vraagteken op het LED-scherm van BITs verschijnt, is de uitdaging voor de menselijke speler om simpelweg het volgende te doen:
- Raad eens welk getal de BIT denkt tussen 0 en 6
- Druk zo vaak op knop A als je antwoord is - Voorbeeld als je antwoord 3 is, druk dan 3x op knop A
Het is duidelijk dat het indrukken van de knop een gebruikersinvoer is en daarom is de gebeurtenisafhandelaar "aan knop" toegankelijk via het tabblad Invoerprogrammering van de Blokkeneditor. Elke keer dat de gebruiker op knop A drukt, doet deze gebeurtenishandler het volgende:
- Verhoog de waarde van de playerGuess variabele met 1 zolang deze binnen de GAME_RANGE limiet is (6 in dit geval)
- Als de speler 7 of hoger indient, wordt de gok ongeldig en wordt de spelerGuess teruggezet naar nul, waardoor de gok van de speler in wezen ongeldig wordt
De volgende actie is het indienen van de reactie op de uitdaging, die we in de volgende stap zullen doorlopen.
Stap 8: Het Button B Click-evenement - Dien een reactie in op de BITs-uitdaging
De menselijke speler verzendt het antwoord naar de BIT door eenmaal op knop B te drukken. Een aantal stappen vindt plaats in de gebeurtenishandler van Button B "on click" zodra de BIT het antwoord van de speler ontvangt, zoals aangegeven door de codemarkeringen in de afbeelding:
- De CHECK-vlag is ingesteld op True - een signaal voor de BIT om zijn gok te vergelijken met die van de spelers
- Het scoren gaat alleen verder als beide spelers getallen hebben geraden die groter zijn dan nul en binnen de GAME_RANGE-limiet (van 6) vallen en als dat niet het geval is, wordt de showBadGuess()-functie aangeroepen - de speler die goed gokt wint een punt en de speler die slecht gokt verliest er een!
- Als de gok van de speler overeenkomt met die van de BIT's, wordt de functie showWin() aangeroepen - de speler wint deze ronde!
- Zo niet, dan wordt de functie showLose() aangeroepen - de BIT wint deze ronde!
- Aan het einde van elke ronde wordt er gecontroleerd door de aankondigingWinner() functie om te zien of een van de twee spelers heeft gewonnen door 3 punten te scoren - als dat het geval is, wordt het spel beëindigd en wordt de uiteindelijke winnaar bekend gemaakt en alle scores en berichten worden resetten
- De BIT herstart het spel door een uitdaging uit te voeren door de functie doChallenge() aan te roepen en wacht tot de speler reageert en het proces wordt herhaald
We zullen de nieuwe functies in de volgende stappen bespreken.
Wacht! Hoe raad je NUL?
- Als je naar de wiskundige functie random() kijkt, kun je zien dat de beginwaarde is ingesteld op nul en niet kan worden gewijzigd.
- De BIT is daarom vrij om een nul te raden en de speler uit te dagen als gevolg van deze beperking
- Op dezelfde manier kan de menselijke speler een nul-gissing indienen door simpelweg op knop B te klikken zonder eerst op knop A te klikken!
- Als dit is toegestaan, hoeft de menselijke speler geen enkele moeite te doen om te spelen en dat heeft geen zin!
- Daarom is deze beperking gecompenseerd door Bullet #2. hierboven besproken
Stap 9: Win/verlies en rest van de functies
Al deze functies worden aangeroepen door de Button B "on click" event handler zoals gezien in de vorige stap.
Deze functies zijn vrij eenvoudig en tegen die tijd zou je bekend moeten raken met de intuïtieve en verhalende aard van de code die is gemaakt door een combinatie van toepasselijk benoemde variabelen en de visuele kenmerken van de Blocks Editor.
- De functie showWin() geeft een bericht weer dat aangeeft dat de speler deze uitdagingsronde heeft gewonnen en verhoogt de variabele PLAYER_SCORE met 1
- Evenzo toont de functie showLose() de speler die een verkeerde gok heeft gemaakt en kent een punt toe aan de BIT door de variabele BIT_SCORE met 1 te verhogen
- De functie showBadGuess() toont een grote X op het scherm om aan te geven dat een van de spelers een verkeerde gok heeft gedaan (van 0 of groter dan 6) - de slechte speler verliest in dit geval een punt en de andere scoort een punt!
En tot slot voert de functie aankondigingWinner() de taak uit om aan te kondigen wie de hoofdwinnaar is na 3 ronden van uitdaging/reactie, gevolgd door:
- De scorevariabelen PLAYER_SCORE en BIT_SCORE opnieuw instellen
- Even pauzeren en een nieuw spel starten door de opstartfunctie showMessage () aan te roepen die is besproken in de vorige stap (6) van deze IBLE
Eindelijk, op naar de simulator en de code!
Stap 10: De simulator en code
De code wordt uitgevoerd in de online simulator die zich hier bevindt
- De simulator bevindt zich linksonder op de pagina
- Als alternatief kan de Download-knop worden gebruikt om de code te downloaden voor het geval je een BBC Microbit bij de hand hebt
- Zoals vermeld aan het begin van de IBLE, heb je geen BBC Microbit nodig om de code in de Blocks Editor te bouwen of om je code te simuleren en te testen, hoewel dat niet werkt voor nieuwsgierige individuen zoals ik!
Een opmerking over de knop Bewerken
- Als je het hebt gezien, bevindt de code zich in het publieke domein en is er een manier om deze te bewerken door de knop Bewerken in de rechterbovenhoek te gebruiken
- Ik zou u echter oprecht willen verzoeken een kopie van deze code te maken en deze aan uw behoeften aan te passen, zodat de originele versie behouden blijft in het belang van deze IBLE
Bedankt! En gelukkig coderen!!!:-)
Aanbevolen:
Een eenvoudig raadspel - Python + XBees + Arduino - Ajarnpa
Een eenvoudig raadspel - Python + XBees + Arduino: zo werkt het spel: je hebt 4 pogingen om een letter te raden tussen 'a' - 'h'-> Raad de juiste letter: Jij wint! ?-> Raad de verkeerde letter: Game over ?-> Raad een ander personage buiten 'a' - 'h': Game over? Je Arduino laat je
Wat is een CPU, wat doet het en hoe los je het op: 5 stappen
Wat is een CPU, wat doet het en hoe los je het op: elke dag zie je hier de termen "CPU" of "Verwerker" wordt rondgegooid, maar weet je echt wat het betekent? Ik zal bespreken wat een CPU is en wat het doet, dan zal ik veelvoorkomende CPU-problemen bespreken en hoe ik ze eventueel kan oplossen
Network Rivalry: een spel met lage latentie voor de BBC Micro:bit: 10 stappen (met afbeeldingen)
Netwerkrivaliteit: een spel met lage latentie voor de BBC Micro:bit: In deze tutorial leg ik uit hoe je een basisspel voor meerdere spelers op de BBC micro:bit implementeert met de volgende kenmerken: Een eenvoudige interface Lage latentie tussen het indrukken van knoppen en schermupdates Een flexibel aantal deelnemers Gemakkelijk co
Eenvoudig Python-nummer raadspel - Ajarnpa
Eenvoudig Python-nummer raadspel: in deze tutorial zullen we leren hoe je een eenvoudig Python-nummer raadspel kunt maken in de Pycharm-applicatie. Python is een scripttaal die geweldig is voor zowel beginners als experts. De codeerstijl in Python is gemakkelijk te lezen en te volgen
Een eenvoudig te maken, goedkoop en eenvoudig LED-blinky circuit met CMOS 74C14 - Ajarnpa
Een eenvoudig te maken, goedkoop en eenvoudig LED-blinky circuit met CMOS 74C14: Soms heb je gewoon wat knipperende LED's nodig, voor kerstversiering, knipperende kunstwerken of gewoon om plezier te hebben met blink blink. Ik zal je laten zien hoe je een goedkope en eenvoudige schakeling maakt met maximaal 6 knipperende LED's. Opmerking: dit is mijn eerste instuceerbare en