slagskip_battleship
Forskjeller
Her vises forskjeller mellom den valgte versjonen og den nåværende versjonen av dokumentet.
| Begge sider forrige revisjonForrige revisjonNeste revisjon | Forrige revisjon | ||
| slagskip_battleship [2020/04/01 12:45] – [Lage flyttbar brikke (sprite)] royeven | slagskip_battleship [2022/11/30 08:09] (nåværende versjon) – ekstern redigering 127.0.0.1 | ||
|---|---|---|---|
| Linje 15: | Linje 15: | ||
| ===== Lage flyttbar brikke (sprite) ===== | ===== Lage flyttbar brikke (sprite) ===== | ||
| En figur i et spill kalles ofte en sprite, og på norsk kan vi oversette det med brikke. Nå skal du lage en brikke som du kan flytte rundt på skjermen ved å bruke knappene A og B. Når knapp A trykkes skal brikken flytte seg bortover og når knapp B trykkes skal brikken flyttes nedover. Når brikken kommer til kanten av brettet må du selv bestemme hvordan du vil få den til å skifte retning. | En figur i et spill kalles ofte en sprite, og på norsk kan vi oversette det med brikke. Nå skal du lage en brikke som du kan flytte rundt på skjermen ved å bruke knappene A og B. Når knapp A trykkes skal brikken flytte seg bortover og når knapp B trykkes skal brikken flyttes nedover. Når brikken kommer til kanten av brettet må du selv bestemme hvordan du vil få den til å skifte retning. | ||
| - | <hidden Tips 1>Du trenger en variabel å lagre brikken i. Denne variabelen kan du kalle // | + | <hidden Tips 1>Du trenger en variabel å lagre brikken i. Denne variabelen kan du kalle //sprite//. Du finner alle kommandoer du trenger til dette i menyen **Variabler**.</ |
| - | <hidden Tips 2>Du finner funksjonen for å lage en brikke i menyen for **Spill**. Der finnes det en rund blokk som lager en brikke på en bestemt X- og Y-koordinat.</ | + | <hidden Tips 2>Du finner funksjonen for å lage en brikke i menyen for **Spill**. Der finnes det en rund blokk som lager en brikke på en bestemt X- og Y-koordinat. Det er mulig du først må trykke på **Avansert** for å finne **Spill**-menyen.</ |
| <hidden Tips 3> | <hidden Tips 3> | ||
| <hidden Tips 4>Du kan gjerne bruke funksjonen for " | <hidden Tips 4>Du kan gjerne bruke funksjonen for " | ||
| <hidden Tips 5>For å flytte brikken ved å trykke på knappene trenger du blokkene "Når knapp A trykkes" | <hidden Tips 5>For å flytte brikken ved å trykke på knappene trenger du blokkene "Når knapp A trykkes" | ||
| - | <hidden Tips 6>I menyen for **Spill** finner du kommandoer for å angi brikkens posisjon til noe (altså flytte den til en bestemt posisjon) eller å endre brikkens posisjon i x- eller y-retning.</ | + | <hidden Tips 6>I menyen for **Spill** finner du kommandoer for å angi brikkens posisjon til noe (altså flytte den til en bestemt posisjon) eller å endre brikkens posisjon i X- eller Y-retning.</ |
| I løsningsforslaget er det vist to forskjellige måter å flytte brikken på, og det finnes sikkert enda flere måter å gjøre det på. Du kan selv velge hvilken måte du foretrekker. Så lenge du kan styre //sprite// dit du vil har du gjort det riktig. | I løsningsforslaget er det vist to forskjellige måter å flytte brikken på, og det finnes sikkert enda flere måter å gjøre det på. Du kan selv velge hvilken måte du foretrekker. Så lenge du kan styre //sprite// dit du vil har du gjort det riktig. | ||
| {{url> | {{url> | ||
| Linje 35: | Linje 35: | ||
| I Slagskip er det vanligvis spilleren som selv plasserer skipene der man vil. Ettersom du spiller på en datamaskin (micro:bit) kan datamaskinen plassere skipene på tilfeldige plasser for deg. Utplassering av skip skal bare gjøres én gang, og dette er gunstigst å gjøre på starten. Du bør bruke en " | I Slagskip er det vanligvis spilleren som selv plasserer skipene der man vil. Ettersom du spiller på en datamaskin (micro:bit) kan datamaskinen plassere skipene på tilfeldige plasser for deg. Utplassering av skip skal bare gjøres én gang, og dette er gunstigst å gjøre på starten. Du bør bruke en " | ||
| - | Ettersom antallet skip kan variere kan vi ikke lagre skipene på samme måte som vi lagrer variabelen //sprite//. //sprite// skal det bare finnes én av, men antall skip kan variere, og vi kan ikke ha et variabelt antall variabler. Derfor skal vi bruke den ene variabelen // | + | Ettersom antallet skip kan variere kan vi ikke lagre skipene på samme måte som vi lagrer variabelen //sprite//. //sprite// skal det bare finnes én av, men antall skip kan variere, og vi kan ikke ha et variabelt antall variabler. Derfor skal vi bruke den ene variabelen // |
| <hidden Tips 1>Du kan legge til et skip i tabellen // | <hidden Tips 1>Du kan legge til et skip i tabellen // | ||
| - | <hidden Tips 2>Ved å kombinere variabelen // | + | <hidden Tips 2>Ved å kombinere variabelen // |
| <hidden Tips 3>Gjenta følgende oppskrift antall_skip ganger: | <hidden Tips 3>Gjenta følgende oppskrift antall_skip ganger: | ||
| - Lag en ny variabel kalt // | - Lag en ny variabel kalt // | ||
| Linje 61: | Linje 61: | ||
| ===== Markere det bombede feltet som bombet ===== | ===== Markere det bombede feltet som bombet ===== | ||
| Dette trinnet er valgfritt. Mange pleier å krysse ut felt man har bombet for å gjøre det lettere å huske hvilke felt man allerede har bombet og hvilke som må bombes. Dersom du ønsker å farge felt du allerede har bombet kan du opprette en ny brikke på den X- og Y-koordinaten du har bombet og angi en lav lysstyrke på denne brikken. Da vil de bombede feltene gløde svakt. | Dette trinnet er valgfritt. Mange pleier å krysse ut felt man har bombet for å gjøre det lettere å huske hvilke felt man allerede har bombet og hvilke som må bombes. Dersom du ønsker å farge felt du allerede har bombet kan du opprette en ny brikke på den X- og Y-koordinaten du har bombet og angi en lav lysstyrke på denne brikken. Da vil de bombede feltene gløde svakt. | ||
| - | <hidden Tips 1>Etter at du har sendt X- og Y-koordinaten til det bombede feltet til fienden kan du lage en ny variabel (kall den gjerne //bombet//) og bruk denne til å lage en ny brikke på samme X- og Y-koordinat som sprite. Angi //bombet// sin lysstyrke til f.eks. 10</ | + | <hidden Tips 1>Etter at du har sendt X- og Y-koordinaten til det bombede feltet til fienden kan du lage en ny variabel (kall den gjerne //bombet//) og bruk denne til å lage en ny brikke på samme X- og Y-koordinat som //sprite//. Angi //bombet// sin lysstyrke til f.eks. 10</ |
| {{url> | {{url> | ||
| ===== Motta bomber fra den andre spilleren ===== | ===== Motta bomber fra den andre spilleren ===== | ||
| - | For at dette skal bli rettferdig må du også sjekke om de koordinatene den andre spilleren bomber treffer dine skip. Ettersom spillet er symmetrisk vil motspilleren din sende deg sammensatte tekster med samme format som du sendte til ham. Du må altså utvide spillet ditt med en "Når radio mottar tekst" | + | For at dette skal bli rettferdig må du også sjekke om de koordinatene den andre spilleren bomber treffer dine skip. Ettersom spillet er symmetrisk vil motspilleren din sende deg sammensatte tekster med samme format som du sendte til ham. Du må altså utvide spillet ditt med en "Når radio mottar tekst" |
| - | <hidden Tips 1>Når radio mottar tekst må denne teksten | + | |
| - | <hidden Tips 2>Du må bruke kommandoen "del av received string fra posisjon 0 med lengde 1" for å få ut den første koordinaten (altså X-koordinaten og "del av received string fra posisjon 2 med lengde 1" for å få den andre koordinaten (altså Y-koordinaten). De ulike delene av teksten på gjøres om til tall (du finner funksjoner for dette i **Tekst**-menyen i **Avansert**) og lagres i variablene | + | Du trenger to variabler til å lagre X- og Y-koordinaten |
| + | |||
| + | Løsningsforslaget legger opp til at informasjonen om hvor en spiller bomber skal sendes på formatet | ||
| + | | X-koordinat | ||
| + | Teksten består altså av tre deler og hver del består av ett tegn. De tre delene er satt sammen til en tekst på totalt tre tegn, f.eks. " | ||
| + | | Posisjon | 0 | 1 | 2 | | ||
| + | | Tegnet på den aktuelle posisjonen | X-koordinat | ||
| + | Du kan bruke kommandoen "del av tekst ved posisjon" | ||
| + | {{url> | ||
| + | |||
| + | Om ønskelig kan du slå sammen de to delene ovenfor til følgende: | ||
| + | {{url> | ||
| + | |||
| + | <hidden Tips 1>Når radio mottar tekst vil denne teksten | ||
| + | <hidden Tips 2>Du må bruke kommandoen "del av received string fra posisjon 0 med lengde 1" for å få ut den første koordinaten (altså X-koordinaten og "del av received string fra posisjon 2 med lengde 1" for å få den andre koordinaten (altså Y-koordinaten). De ulike delene av teksten på gjøres om til tall (du finner funksjoner for dette i **Tekst**-menyen i **Avansert**) og lagres i variablene | ||
| {{url> | {{url> | ||
| - | <hidden Tips 3>Du bør bruke en "for element verdi av // | + | |
| - | <hidden Tips 4>Hvis fienden traff ett av dine skip må du fjerne ett av livene dine (du finner kommando for dette i **Spill**-menyen) samt bruke radioen til å sende et tall (f.eks. 1) til fienden for å fortelle fienden at han traff.</ | + | |
| + | ===== Sjekke om du har et skip der motspilleren bomber ===== | ||
| + | Hvis du har et skip på den X- og Y-koordinaten fienden bomber må du fjerne dette skipet fra tabellen // | ||
| + | |||
| + | Du kan bruke en "for element | ||
| + | |||
| + | {{url> | ||
| + | |||
| + | <hidden Tips 1>I en slik løkke vil //verdi// tilsvare ett skip, og du kan behandle //verdi// som en vanlig brikke. Bl.a. kan du angi koordinater og lysstyrke til //verdi//, du kan hente ut //verdi// sine koordinater og du kan gjøre alt du kan gjøre med andre brikker. Hvis du har tre skip vil denne løkken bli gjentatt tre ganger: første gang vil //verdi// være det første skipet i tabellen // | ||
| + | <hidden Tips 2>Hvis fienden traff ett av dine skip må du fjerne ett av livene dine (du finner kommando for dette i **Spill**-menyen) samt bruke radioen til å sende et tall (f.eks. 1) til fienden for å fortelle fienden at han traff.</ | ||
| {{url> | {{url> | ||
| Linje 86: | Linje 109: | ||
| * Slik spillet er nå er det fullt mulig for deg å bombe mange felt etter hverandre uten å la medspilleren bombe tilbake. For at spillet skal være rettferdig må man sørge for at de to spillerne bomber hverandre annenhver gang. Kan du legge inn kontrollmekanismer i spillet slik at når spiller 1 har bombet ett felt ikke kan bombe et annet før spiller 2 har bombet ett felt? | * Slik spillet er nå er det fullt mulig for deg å bombe mange felt etter hverandre uten å la medspilleren bombe tilbake. For at spillet skal være rettferdig må man sørge for at de to spillerne bomber hverandre annenhver gang. Kan du legge inn kontrollmekanismer i spillet slik at når spiller 1 har bombet ett felt ikke kan bombe et annet før spiller 2 har bombet ett felt? | ||
| * I spillet slik det er gjennomført i denne oppskriften vil skipene bli plassert helt tilfeldig. Dersom du lager mange skip pr. spiller er det stor sannsynlighet for at to skip vil bli plassert oppå hverandre. Hvordan kan man best unngå dette? | * I spillet slik det er gjennomført i denne oppskriften vil skipene bli plassert helt tilfeldig. Dersom du lager mange skip pr. spiller er det stor sannsynlighet for at to skip vil bli plassert oppå hverandre. Hvordan kan man best unngå dette? | ||
| - | * Hvis man ikke har en medspiller, kan man endre programmet slik at man spiller mot micro: | + | * Hvis du ikke har en medspiller |
| + | * I den versjonen av spillet som du har programmert kan du bombe så mye du vil. Greier du å endre spillet slik at du har et begrenset antall | ||
slagskip_battleship.1585745114.txt.gz · Sist endret: (ekstern redigering)
