JS: Trykkomania Nybegynner Web Lærerveiledning

Like dokumenter
JS: Trykkomania. Introduksjon. Skrevet av: Arve Seljebu

Løpende strekmann Erfaren Videregående Python PDF

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

JS: Grunnleggende JavaScript Nybegynner

Sprettende ball Introduksjon Processing PDF

JS: Grunnleggende JavaScript

JS: Partikkel-animasjon Nybegynner

Sprettende ball. Introduksjon: Steg 1: Vindu. Sjekkliste. Skrevet av: Sigmund Hansen

Klask-en-Muldvarp. Introduksjon. Skrevet av: Basert på MITs "MoleMash for App Inventor 2"-guide (

Pong. Oversikt over prosjektet. Steg 1: En sprettende ball. Plan. Sjekkliste. Introduksjon

Steg 1: Hvordan styre figurer med piltastene

Tryll bort heksa. Introduksjon. Sjekkliste Følg instruksjonene på lista. Huk av etter hvert. Test. Lagre 2/8

Steg 1: Canvas-elementet

Soloball. Introduksjon. Steg 1: En roterende katt. Sjekkliste. Skrevet av: Geir Arne Hjelle

Steg 1: Streken. Steg 2: En hoppende helt. Sjekkliste. Sjekkliste. Introduksjon. Hei der! Hoppehelt

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon:

Spøkelsesjakten. Steg 1: Lag et flyvende spøkelse. Sjekkliste. Introduksjon

Klask-en-Muldvarp. Steg 1: Gjøre klart spillbrettet. Sjekkliste. Introduksjon

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Soloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere.

King Kong Erfaren Scratch PDF

Sprettball Erfaren ComputerCraft PDF

Steg 2: La løvinnen og papegøyen bevege seg

Felix og Herbert Introduksjon Scratch PDF

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den.

Om du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

CSS: Animasjon Nybegynner

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

Hoppehelt. Introduksjon. Steg 1: Streken. Sjekkliste. Skrevet av: Geir Arne Hjelle

Flaksefugl Nybegynner Scratch Lærerveiledning

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Steg 1: Lag et flyvende spøkelse

Steg 1: Hente grafikk fra nettet

Tegneprogram Journeyman Scratch PDF

Halloweenimasjon Introduksjon Scratch PDF

Steg 1: JafseFisk følger musepekeren

PXT: Det regner mat! Introduksjon. Steg 1: Grunnlag. Sjekkliste. Skrevet av: Helene Isnes

Steg 1: Bli kjent med spillet

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

PXT: Hermegåsa. Steg 1: Sjekk at du har riktig utstyr. Sjekkliste. Introduksjon

Kanter, kanter, mange mangekanter

Snøballkrig Ekspert Scratch Lærerveiledning

Start et nytt Scratch-prosjekt. Slett kattefiguren, for eksempel ved å høyreklikke på den og velge slett.

Verden - Del 2. Steg 0: Oppsummering fra introduksjonsoppgaven. Intro

I denne oppgaven forventer vi at du har vært gjennom HTML- og CSS-oppgavene så langt og/eller er kjent med <div> - og HTML5-taggene.

og bevegelse funksjoner som blir aktivert av hendelser Keyboard Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

Steg 1: Felix følger musepekeren

Steg 1: Piler og knappetrykk

Felix og Herbert. Felix og Herbert. Introduksjon

Steg 1: Vi starter fra toppen

Donkey Kong. Introduksjon. Oversikt over prosjektet. Skrevet av: Geir Arne Hjelle

JafseFisk. Introduksjon. Steg 1: JafseFisk følger musepekeren. Skrevet av: Oversatt fra Code Club UK (//codeclub.org.uk)

Bygge en kube. Steg 1: Lage en ny mod. Sjekkliste. Introduksjon

Steg 1: Animasjons-attributtet

Steg 0: Installere Pygame Zero

Norgestur. Introduksjon. Steg 1: Et norgeskart. Sjekkliste. Scratch. Skrevet av: Geir Arne Hjelle

I denne oppgaven skal du lære hvordan du kan flytte rundt på elementer og gjemme elementene bak andre elementer ved hjelp av CSS.

Labyrint Introduksjon Scratch Lærerveiledning. Steg 1: Hvordan styre figurer med piltastene

Hva er det? Steg 1: Få flere ting til å vise seg på tavlen. Sjekkliste. Test prosjektet. Introduksjon

Mattespill Nybegynner Python PDF

Steg 1: Få Flakse til å falle

Steg 1: En første animasjon

Bursdag i Antarktis Nybegynner Scratch PDF

Bygge en kube. Introduksjon. Steg 1: Lage en ny mod. Skrevet av: Pål G. Solheim

Norgestur. Introduksjon. Steg 1: Et norgeskart. Sjekkliste. Skrevet av: Geir Arne Hjelle

Skilpaddetekst. Steg 1: Tekst på flere linjer. Sjekkliste. Introduksjon

Kan micro:biten vår brukes som en terning? Ja, det er faktisk ganske enkelt!

Forberedelser: Last ned bildefiler

Verden. Steg 1: Vinduet. Introduksjon

Snurrige figurer. Steg 1: En snurrig figur. Sjekkliste. Introduksjon

PXT: Hermegåsa. Introduksjon. Skrevet av: Felix Bjerke og Tjerand Silde

Steg 1: Katten og fotballbanen

Straffespark Introduksjon Scratch Lærerveiledning

PXT: Himmelfall. Introduksjon. Skrevet av: Helene Isnes og Julie Revdahl

Breakout. Introduksjon. Oversikt over prosjektet. Skrevet av: Geir Arne Hjelle og Martin Lie

Bygge en pyramide. Introduksjon. Steg 1: Lage en ny mod. Sjekkliste. Skrevet av: Pål G. Solheim

Steg 1: Opprette spillskjerm

Hvor i All Verden? Del 3 Erfaren Scratch PDF

Bygge en pyramide. Steg 1: Lage en ny mod. Sjekkliste. Introduksjon

Snøballkrig. Introduksjon. Steg 1: En snøballkaster. Skrevet av: Geir Arne Hjelle

Steg 1: Lag en scene og legg til figurer

Start et nytt Scratch-prosjekt. Slett kattefiguren, for eksempel ved å høyreklikke på den og velge slett.

Steg 1: Tekst på flere linjer

Ping pong. Steg 1: Sprettende ball. Sjekkliste. Introdusjon:

Spøkelsesjakten. Introduksjon

3D-Flakser, Del 1 Ekspert Scratch PDF

"Dette skjer når jeg trykker på denne knappen" "Når jeg skriver i dette feltet, ser jeg at det andre forandrer seg"

Hei verden Introduksjon Swift PDF

Hvor i All Verden? Del 3. Introduksjon. Steg 0: Forrige gang. Sjekkliste. Skrevet av: Geir Arne Hjelle

Hvor i All Verden? Del 2 Erfaren Scratch PDF

Gå til Drawing and Animation i Palette-menyen og legg til Canvas og Ball. OBS! Ball må slippes inni Canvas på skjermen for at den skal bli lagt til.

PGZ - Hangman Ekspert Python Lærerveiledning

Steg 1: Få flere ting til å vise seg på tavlen

Verdens korteste grunnkurs i Excel (2007-versjonen)

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Asteroids. Oversikt over prosjektet. Steg 1: Enda et flyvende romskip. Plan. Sjekkliste. Introduksjon

Transkript:

JS: Trykkomania Nybegynner Web Lærerveiledning Introduksjon Denne oppgaven viser deg hvordan du kan lage et spill med JavaScript og dele det med vennene dine. Spillet kalles Trykkomania fordi det handler om å trykke på en ball flest mulig ganger før tiden renner ut. Før du starter på denne oppgaven bør du har endel erfaring med variabler, funksjoner og eventlisteners i JavaScript. Dersom du ikke har det, så anbefaler vi å gjøre noen av de enklere oppgavene først. Steg 1: Åpne JS Bin Vi skal bruke JS Bin (http://jsbin.com) for å lage spillet. Hvis du aldri har brukt JS Bin før, ta en titt på oppgaven Hei JavaScript. Dersom du heller vil lage spillet i en egen fil på PCen din, så er det bare å åpne din favoritt teksteditor og hoppe til steg 2. Åpne adressen jsbin.com i ett eget vindu. Velg å vise JavaScript og Output. Skjul de andre fanene ved å trykke på de.

I JavaScript skriver vi koden. I Output vises websiden. Når du starter er begge fanene tomme. Steg 2: Lage en ball Vi skal bruke JavaScript til å lage innholdet på websiden. Dette betyr at vi skal bruke JavaScript til å lage HTML. Du trenger ikke kunne noe spesielt om HTML, men om du ønsker lære om HTML, se oppgaven Introduksjon til web. Vi begynner med å lage en funksjon som heter Ball : function Ball() { Inni funksjonen lager vi ett nytt div -element: function Ball() { var el = document.createelement('div'); var el betyr at elementet får navn el. Vi kan nå gi elementet en stil: function Ball() { var el = document.createelement('div'); el.style.backgroundcolor = 'black'; el.style.width = '60px'; el.style.height = '60px'; el.style.backgroundcolor = 'black' gjør ballen svart. el.style.width = '60px' gjør ballen 60 piksler bred. el.style.height = '60px' gjør ballen 60 piksler høy. La oss legge ballen til siden: function Ball() { var el = document.createelement('div'); el.style.backgroundcolor = 'black'; el.style.width = '60px'; el.style.height = '60px'; document.body.appendchild(el); For at ballen skal vises, må vi kjøre funksjonen ved hjelp av denne koden: Ball(); Vises en "ball" i Output?

Ok, så den var ikke akkurat rund. Vi kan bruke el.style.borderradius for å runde av hjørnene. Siden ballen er 60px bred og høy, så avrunder vi kantene med 30px, altså halvparten av 60. Legg koden under de andre el.style -setningene: el.style.borderradius = '30px'; Fikk du en rund ball? Utforsk Om du ønsker en annen form, prøv andre verdier enn 30px for avrundingen. Hvordan ser 5px ut? Tips Om du sitter fast, kan du se på fasiten så langt. Steg 3: Flytte ballen Akkurat nå vises ballen helt øverst til venstre i Output. La oss flytte den rundt omkring. Vi bruker el.style.position = 'fixed' for å fortelle at vi ønsker plassere ballen i forhold til kantene i vinduet. 50% fra toppen blir da el.style.top = '50%'. Legg til en posisjon for ballen: el.style.position = 'fixed'; el.style.top = '80%'; Flyttet ballen seg ned? Flytt ballen ut fra venstre kant: el.style.left = '30%';

Prøv andre verdier mellom 0% og 100%. Klarer du å finne ut når ballen forsvinner ut av vinduet? Tips Om du sitter fast, kan du se på fasiten så langt. Steg 4: Flytte ballen med en funksjon Ettersom vi ønsker at ballen skal flytte seg underveis i spillet, skal vi lage en funksjon som flytter ballen. Inni Ball, lag en funksjon som heter el.posisjon. Denne funksjonen skal ta inn en x- og en y-verdi, plassere elementet og returnere elementet. function Ball() { el.posisjon = function (x, y) { ; Funksjonen skal bestemme el.style.top og el.style.left. el.posisjon = function (x, y) { el.style.left = x; el.style.top = y; ; Returner el, slik at vi kan bruke funksjonene til ballen. Når elementet el returneres så vil el oppdateres med ny plassering. function Ball() { el.posisjon = function (x, y) { el.style.left = x; el.style.top = y; ; return el; Du kan nå flytte ballen slik som dette: var ball = Ball(); // lager ballen ball.posisjon('10%', '20%'); // flytter til x = 10% og y = 20% Tips Om du sitter fast, kan du se på fasiten så langt.

Steg 5: Velg en tilfeldig plassering I JavaScript kan vi bruke Math.random() for å få en tilfeldig verdi mellom 0 og 1. La oss bruke denne slik at ballen blir plassert på et tilfeldig sted. Trykk på fanen Console. Skriv inn Math.random() og trykk enter. Fikk du et tall mellom 0 og 1? Vi kan gjøre dette tallet om til prosent ved å gange med 100, prøv det ut: Vi kan legge til prosenttegnet med + '%' :

Legg merke til at hver gang kommandoen kjøres, får vi nye tall. Det er dette som kalles tilfeldig. Lukk Console ved å trykke på den. La oss bruke Math.random til å plassere ballen: var x = Math.random() * 100 + '%'; var y = Math.random() * 100 + '%'; ball.posisjon(x, y); Her har vi laget 2 variabler x og y som begge holder på hvert sitt tilfeldige tall. Dette tallet sendes inn i funksjonen posisjon(x,y) som vi lagde i sted. Hvis du trykker på knappen Run with JS, flytter ballen på seg? Hvis du har haket av Auto-run JS vil også koden kjøres hver gang du endrer koden. Trykker du nok antall ganger, legger du merke til at ballen noen ganger kommer utenfor bunnen og høyre side. For å unngå dette kan vi begrense forflytningen til 80%: var x = Math.random() * 80 + '%'; var y = Math.random() * 80 + '%'; Siden Math.random() maksimalt er 1 og vi ganger med 80, vil aldri ballen flytte seg lenger ut fra toppen eller venstre side enn 80%. Tips Om du sitter fast, kan du se på fasiten så langt. Steg 6: Flytte ballen hvert andre sekund

Vi ønsker at ballen hele tiden skal flytte seg. Nå skal vi bruke setinterval til å flytte ballen hvert andre sekund. setinterval(function(){ //koden som skal kjøres i intervall, antall_millisekunder); // Hvor ofte den skal kjøre Bruk setinterval til å flytte ballen hvert andre sekund: setinterval(function () { var x = Math.random() * 80 + '%'; var y = Math.random() * 80 + '%'; ball.posisjon(x, y);, 2000); setinterval(function, 2000) betyr kjør function hvert 2000 millisekund. 2000 millisekund er 2 sekunder, altså tegnes ballen på et nytt sted hvert andre sekund. Tips Om du sitter fast, kan du se på fasiten så langt. Steg 7: Poeng Nå har du en ball som spretter rundt. La oss legge til poeng. Vi har laget en poeng-komponent som du kan bruke, så kommer du raskere i gang. Poeng er bygd opp likt som Ball, så du må gjerne lese gjennom og se om du forstår den. Legg til koden for komponenten Poeng :

/** * Poeng - viser poengsum nede i venstre hjørne. * * Bruk: * var poeng = Poeng(); // viser poengsummen * poeng.øk(); // øker poengsummen med 100 * poeng.nullstill(); // setter poengsummen til 0 * */ function Poeng() { var el = document.createelement('div'); // CSS til "el" el.style.position = 'fixed'; el.style.bottom = '5px'; el.style.left = '8px'; el.style.padding = '5px'; el.style.backgroundcolor = 'black'; el.style.color = 'white'; // Viser poengsum på skjermen, samt lager variabelen "_poeng" var _poeng = 0; el.innerhtml = _poeng + ' poeng'; document.body.appendchild(el); // To funksjoner som øker eller nullstiller poengene el.øk = function () { _poeng += 100; el.innerhtml = _poeng + ' poeng'; ; el.nullstill = function () { _poeng = 0; el.innerhtml = _poeng + ' poeng'; ; return el; For at poengsummen skal vises, må vi kjøre Poeng() en gang, slik vi også gjorde med Ball(). Legg denne linjen over Ball() : var poeng = Poeng(); var ball = Ball(); Vises "Poeng 0"? For å holde orden på programmet er det lurt å ha det som skjer i toppen. Funksjoner kan brukes likevel om de ikke står først, så flytt function Ball og function Poeng ned til bunnen. var poeng = Poeng(); var ball = Ball(); setinterval(function () {, 2000); function Ball() { function Poeng() {

Nå står det som skjer i toppen: Vis poengene: var poeng = Poeng() Vis ballen: var ball = Ball() Flytt ballen hvert andre sekund: setinterval(, 2000) Vi velger nå å kjøre funksjonen poeng.øk hver gang ballen trykkes. ball.onclick = poeng.øk; Obs: Det skal ikke være () på slutten av poeng.øk. Dette er fordi funksjonen ikke kjøres her, men hver gang noen klikker på ballen. ball.onclick = poeng.øk; betyr at funksjonen poeng.øk() kjøres når noen klikker på ballen. Sjekk at du får poeng når du treffer ballen med et klikk. Tips Om du sitter fast, kan du se på fasiten så langt. Teste spillet Du er nå kommet så langt at det kan være kult å teste spillet. Ettersom spillet handler om å trykke flest mulig ganger på ballen, egner det seg for å prøve på mobiltelefonen. Noen mobiltelefoner zoomer når en dobbeltklikker på skjermen, derfor skal vi slå av zooming.

Åpne fanen HTML ved å trykke på den. Finn linjen med <meta name="viewport". Endre linjen til: <meta name="viewport" content="width=device-width, user-scalable=no"> Lukk fanen HTML ved å trykke på den. Øverst i nettleseren din står adressen til siden. Adressen du trenger å taste inn på mobilen er det før /edit?js,output. I eksempelet over er adressen jsbin.com/dutebe. Tast din adresse inn på mobiltelefonen. Spill! Steg 8: Begrense tiden Akkurat nå er det ubegrenset tid i spillet. La oss legge til en nedtelling av tid, slik at man kan konkurrere om hvem som klarer flest klikk på 10 sekunder. Legg til koden for nedtelling i bunnen av programmet.

/** * Nedtelling - En linje som viser at tiden renner ut. * * Bruk: * var nedtelling = Nedtelling(slutt); // funksjonen `slutt` kjøres når tiden er utløpt * nedtelling.tellned(10); // teller ned 10 sekunder * */ function Nedtelling (ferdig) { var el = document.createelement('div'); // CSSen til elementet "el" el.style.position = 'fixed'; el.style.left = '0'; el.style.bottom = '0'; el.style.height = '100%'; el.style.width = '3px'; el.style.backgroundcolor = 'red'; document.body.appendchild(el); // Regner ut prosenten av hvor lang tid det er igjen function prosent (slutt, tid) { return (slutt - Date.now()) / tid / 10; // Funksjon som teller ned og stopper når den har kommet til null el.tellned = function (tid) { var slutt = Date.now() + tid * 1000; var intervall = setinterval(tegn, 20); // Tegner streken på venstre side til tiden er ute function tegn () { var p = prosent(slutt, tid); if (p < 0) { el.style.height = '0%'; clearinterval(intervall); ferdig(); el.style.height = p + '%'; return el; I toppen starter vi nedtellingen. var nedtelling = Nedtelling(); nedtelling.tellned(10); Dette lager en nedtelling på 10 sekunder. Hvis du trykker på Run with JS ser du nedtellingen, men ingenting skjer når tiden er ute. Lag funksjonen stopp som forteller hva som skal skje når tiden er ute. function stopp() { ball.skjul(); Vi har ikke laget funksjonen ball.skjul enda. Vi trenger ball.vis også. Lag ball.skjul og ball.vis inni function Ball.

function Ball() { el.skjul = function () { el.style.display = 'none'; ; el.vis = function () { el.style.display = ''; ; return el; Nå kan vi fortelle nedtellingen at den skal kjøre stopp() når tiden er ute. var nedtelling = Nedtelling(stopp); Forsvinner ballen når tiden er ute? Hvor mange poeng klarer du på mobiltelefonen innen tiden? Tips Om du sitter fast, kan du se på fasiten så langt. Steg 9: Omstarte spillet Så langt kan spillet omstartes ved å oppdatere nettleseren. Er det ikke stiligere med en knapp som starter spillet? Lag en funksjon start. function start() { Funksjonen skal bestemme hva som skjer når spillet skal starte. Vi må nullstille poengsummen, vise nedtellingen og vise ballen. function start() { poeng.nullstill(); nedtelling.tellned(10); ball.vis(); start skal kjøres hver gang en knapp klikkes, så vi trenger en knapp. Legg til koden for knappen i bunnen av programmet.

/** * En knapp som ligger midt på siden. * * Bruk: * var knapp = Knapp('trykk på meg'); // lager en knapp som ligger midt på siden * knapp.vis(); // viser knappen * knapp.skjul(); // skjuler knappen */ function Knapp(tekst) { var el = document.createelement('button'); el.style.display = 'none'; el.innertext = tekst; el.style.position = 'fixed'; el.style.top = '50%'; el.style.left = '50%'; el.style.padding = '20px'; el.style.border = 'solid 1px'; document.body.appendchild(el); el.skjul = function () { el.style.display = 'none'; ; el.vis = function () { el.style.display = ''; // plasser akkurat på midten // midten av skjermen er 50% minus halvparten av størrelsen til knappen var w = el.offsetwidth / 2; var h = el.offsetheight / 2; el.style.marginleft = '-' + w + 'px'; el.style.margintop = '-' + h + 'px'; ; return el; I toppen legger vi til knappen. var knapp = Knapp('Prøv en gang til'); knapp.onclick = start; knapp.onclick bestemmer hva som skal skje når knappen klikkes. Knappen vises ikke, så vi må bestemme at den skal vises når spillet er slutt. function stopp() { knapp.vis(); Vises knappen når spillet er ferdig? Du legger kanskje merke til at vi har en bug nå? Vi må jo skjule knappen når spillet startes også! Skjul knappen når spillet startes. function start() { knapp.skjul(); Spillet er nå ferdig! Del adressen med dine venner og se hvem som klarer flest poeng.

Tips Om du sitter fast, kan du se på fasiten. Utfordringer Her er noen utfordringer: Endre størrelsen på ballen, slik at spillet blir vanskeligere. Endre hvor lang tid man har på seg. Endre fargen på ballen. Øk poengsummen med 1000 istedenfor 100. Klarer du å få ballen til å endre til forskjellig størrelse hver gang den kommer til syne? Klarer du å få frem flere enn én ball? Lisens: CC BY-SA 4.0 Forfatter: Arve Seljebu