Det ska endast finnas två bilder av samma typ på spelplanen.

Relevanta dokument
Laboration 4. Laboration 4, Formulärvalidering. Inledning. Observera. Mål. Genomförande

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

Laboration 2. Webbproduktion En stiligare webbsida HT2015

Fönsterhanterare i JavaScript PWD, Personal Web Desktop

En stiligare portal Laboration 3

Struktur och innehåll Laboration 2

Presentera dig själv Laboration 1

Copy Cat Laboration 4

Laborationsanvisning. HTML5 Laboration 6. Författare: Johan Leitet Version: 1 Datum:

Laboration 1 XML, XPath, XSLT och JSON

Laboration 1. Webbprodution Struktur & innehåll HT2015

HexaFlip. Kravspecifikation

E07 "Greased Lightning"

E13 "Behind the Wild"

Webbteknik för ingenjörer

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Gissa det hemliga talet

Tor Sterner-Johansson Thomas Johansson Daniel Henriksson

E09 - Totally Tool Time

Laboration 1: Figurer i hierarki

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Webbutveckling Laboration 1: HTML5 och CSS3.

7,5 högskolepoäng. Objektorienterad systemutveckling I Provmoment: Ladokkod: 21OS1B Tentamen ges för: Lycka till! /Peter & Petter

MATLAB-modulen Programmering i MATLAB. Höstterminen hp. Vad är MATLAB

Widgetguiden Vad är Publits widgetshop?

Grundläggande Ordbehandling Microsoft Word

Kursplanering Utveckling av webbapplikationer

JavaScript del 9 Dynamik och animeringar

Objektorienterad Programkonstruktion

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Programmeringsteknik II

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

System.out.println("Jaså du har "+ antaldollar + " stycken.");

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Spelprogrammering med JavaScript och HTML5

INNEHÅLL ALLMÄNT... 2

Laboration: SQL Server

Avancerade Webbteknologier

I den här labben ska vi använda oss av en trevlig nyhet i HTML5: Local Storage, för att implementera en sorts lokal gästbok.

Laboration 1 Introduktion till Visual Basic 6.0

Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Tentamen i Grundläggande programmering STS, åk 1 lördag

Det är fullt tillåtet att göra laborationen innan laborationstillfället.

HI1024 Programmering, grundkurs TEN

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Labora&on 7 Syfte med laborationen:

Laboration i datateknik

Tentamen i Grundläggande programmering STS, åk

Laboration 1, Datamodellering. Observera. Tips. Förberedelse. Genomförande

Tentamen på kursen Webbdesign, 7,5 hp

Fyrverkerier. Introduktion. Nivå. I det här projektet ska vi skapa ett fyrverkeri över en stad. Activity Checklist.

Designspecifikation den 13 december 2007

C++ Slumptalsfunktioner + switch-satsen

3. Välj den sprajt (bild) ni vill ha som fallande objekt, t ex en tårta, Cake. Klicka därefter på OK.

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Att styla webbsidor. Nivå. Uppgiften

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Tentamen *:58/ID100V Programmering i C Exempel 3

KOMMA ÖVERENS. Ett spel om att hitta nya samarbeten

TENTAMEN OOP

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Frekvenstabell över tärningskast med C#

Objektorienterad Programmering (TDDC77)

Tentamen TEN1 HI

Planering Programmering grundkurs HI1024 HT data

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Whack-a-Witch. Introduktion. Nivå

Frontermanual för Rektorsprogrammet

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Objektorienterad programmering i Java I

Inkapsling (encapsulation)

Statistik över heltal

GRUNDKURS I C-PROGRAMMERING

SAFE WORK. Instruktioner till Företagets egen sida - för dig som är chef/kontaktperson på ett entreprenadföretag

MMA132: Laboration 2 Matriser i MATLAB

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Kravspecifikation. Sammanfattning. Fyra i rad Javaprojekt inom TDDC32. Version 2.0. Datum Dokumentnummer

Webbteknik II - 1DV449 Laboration 3

Projektanvisning. Webbsideprojekt. Författare: Johan Leitet Version: 2 Datum:

JAVASCRIPT. Beteende

E-posthantering med Novell Groupwise WebAccess

- LATHUND MED Tips och exempel för dig som ska skriva en källförteckning

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Tangentbord. Mike McBride Anne-Marie Mahfouf Översättare: Stefan Asserhäll

Tentamen Datastrukturer, DAT037 (DAT036)

2D1387 Programsystemkonstruktion med C++

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

GUIDE REGISTRERA ETT EVENEMANG PÅ EVENEMANGSGUIDEN Gå in på och klicka på knappen Registrera ett evenemang.

Elisabeth Bejefalk IT-Assistent Avesta kommun

Chapter 4: Writing Classes/ Att skriva egna klasser.

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Sammanfattning av hantering av redovisning av uppgift U1

Vanliga frågor för VoiceXpress

Laboration: Grunderna i MATLAB

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Transkript:

Laboration 3 Laboration 3, Memory Observera För att bli godkänd på laborationen ska din källkod följa den standard vad det gäller kommentering, val av variabelnamn m.m. som gåtts igenom på föreläsning. Ditt Javascript måste även fungera enligt de krav som finns beskrivna i denna laborationshandledning. För att kunna genomföra denna laboration måste du vara förberedd innan du går på handledningstillfället, det är inte förbjudet, utan rekommenderat, att göra laborationen i förväg. Vid fuskmisstanke lämnas misstankar samt berörda dokument över till universitetets disciplinnämnd. Läs igenom hela laborationshandledningen innan du påbörjar laborationen. Laborationen ska lösas enskilt. Läsanvisning Föreläsningssanteckningar som behandlar DOM, CSS och event samt dess tillhörande kapitel i kurslitteraturen. Inledning Denna laboration ställer ganska höga krav på dig som laborant. Du kommer till stor del vara tvungen att leta upp information själv och fundera ut egna lösningar på problem som ställs. I denna laboration kommer du att skriva ett enklare Memoryspel. Glöm inte att läsa spelets krav på sista sidan. Mål Efter du genomfört och blivit godkänd på denna laboration har du tillräckliga kunskaper att konstruera ett enklare Memoryspel. Du kommer att kunna skifta en bild till en annan med hjälp av händelsehantering. Du kommer att ha en god förståelse för loopar och villkorssatser efter genomförd laboration. Vidare kommer du även ha viss insikt i dokumentobjektmodellen samt händelsehanterare. Genomförande Utför laborationens uppgifter och moment samt dokumentera vad du kommer fram till på de olika delarna. Vid redovisning av laborationen ska du kunna besvara frågor om hur du har löst de olika delarna och varför de är lösta på det sätt du löst dem på. När du anser dig vara klar med laborationen, kontrollera att din källkod uppfyller laborationens samtliga krav.

Uppgift 1 Memory Denna laboration består endast av en uppgift, nämligen att skriva ett Memoryspel i JavaScript. Det går att skriva ett Memoryspel på flera olika sätt i JavaScript, i denna laboration ska du skriva ett relativt enkelt Memoryspel och de riktigt avancerade funktionerna kommer att utelämnas. Lös uppgiftens samtliga moment (anrop till funktioner) i ett och samma XHTML-dokument. Skriv dina funktioner i en eller flera separata scriptfil (.js). Moment I Fundera över hur ett Memoryspel fungerar. Fundera också över vilka funktioner du tror att du kommer att behöva i ditt Javascript. Följande krav ställs på ditt Memoryspel: Det ska gå generera fram spelplanen. Antal rader och kolumner ska på ett enkelt sätt kunna ändras. Det är dock tillåtet att göra denna enkla ändring i koden via t.ex. två variabler. Du behöver alltså inte läsa in spelplanens storlek från användaren. Nedan visas några exempel på hur en spelplan kan se ut. Bilderna visar en spelplan med 4x4 bilder (8 par) och en med 4x2 (4 par). Det ska endast finnas två bilder av samma typ på spelplanen. Bildernas position på spelplanen ska slumpas fram. Till din hjälp har du metoden RandomGenerator.getPictureArray(rows, cols) som du hittar bifogat laborationen. Du behöver inte använda denna funktion utan är fri att skriva en egen. En utslumpad array med 3*4 element kommer att se ut så här: (exempelvis) [5, 3, 2, 5, 6, 6, 1, 3, 2, 4, 4, 1] Spelplanen ska skrivas ut på ett till ändamålet tillfredställande sätt. Det är godkänt att ha spelet i en tabell. För att vända på en bild ska användaren klicka med musknappen på aktuell bild. Det ska inte hända något om användaren klickar på en bild som redan visas (ej frågetecken). Utvecklad av Petter Miller 2004 (uppdaterad 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 av Johan Leitet), Sidan 2 av 6

När användaren tryckt fram ett par (två kort) som inte överensstämmer med varandra ska bild-paret visas maximalt 1 sekund för att sedan döljas igen. När spelet är slut ska användaren upplysas om att spelet är slut samt hur många försök som krävdes för att klara spelet. Detta kan göras med t.ex. en meddelanderuta. Moment II Implementera Memoryspelet i JavasScript. Testa och verifiera att spelet fungerar. Tänk på att dela upp en uppgift av denna storlek i små deluppgifter. På nästa sida har du ett förslag till uppdelning men du kan göra precis som du vill. Utvecklad av Petter Miller 2004 (uppdaterad 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 av Johan Leitet), Sidan 3 av 6

Tips När det nu gäller att lösa uppgifter som är lite mer är det viktigt att dela upp uppgiften i små steg som man kan testa av efterhand. Ett möjligt upplägg kan vara detta: 1) Skapa ett HTML-dokument och länka in det bifogade skriptet random.js 2) Skapa en egen.js-fil (T.ex. memory.js) och skapa ett statiskt objekt i detta, t.ex. Memory. 3) Skapa en init-metod i objektet Memory och koppla denna till sidans onloadevent. (Testa!) 4) Skapa en egenskap på ditt objekt som senare kommer att referera till den utslumpade arrayen. (jmfr. messages-arrayen i Laboration 2) 5) I init-metoden anropar du arrayslumpsmetoden och sparar resultatet i egenskapen du skapade i 4an. 6) Testa att skriv ut arrayen. Verkar det fungera? 7) Generera upp tabellen som kommer att innehålla bilderna. Bry dig i detta läge inte om att göra bilderna klickbara. (Testa, och nu är du van vid att testa hela tiden ;)) 8) Modifiera koden du precis skrev så att varje bild kapslas in i en a-länk och koppla ett onclick-event till a-taggen. 9) Skapa metoden som onclickeventet anropar och se där till att vända brickan. 10) Gör så att det enbart går att vända upp två brickor samtidigt och koppla en timer så att brickorna vänds ned efter cirka en sekund. 11) Gör ett test så att om brickorna är lika så stannar de uppvända och en räknare räknas upp med ett. 12) Kontrollera räknaren så att du vet när spelaren vunnit. 13) Klart! Ovanstående är bara ett lösningsförslag och du är helt fri att lösa uppgiften som du vill, men tycker du det är knepigt kan texten ovan underlätta. För dig som satsar på högre betyg. Se nedan ;) Utvecklad av Petter Miller 2004 (uppdaterad 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 av Johan Leitet), Sidan 4 av 6

För en större utmaning (Detta steg ger inte högre betyg på denna laboration som enbart bedöms med U/G men kommer att hjälpa dig vid projektet) På denna stjärnuppgift ska du likt, Labby Mezzsage, göra så att flera instanser av spelet kan köras samtidigt på samma HTML-sida: memoryapp.js: index.html: I fallet ovan så skapas spelen genom att ett nytt objekt av klassen Memory instansieras. 3 och 4 är givetvis rader och kolumner medan game1 och game2 är IDt på de noder i DOMen som spelen ska skapas i. När väl spelet är startat så sköter detta sig helt och hållet självt. Vill man kan man klara sig på enbart en klass som sköter hela spelet, men man kan också tänka sig att man skapar ytterligare en klass, brick, som representerar en spelbricka, även om dessa nog är enklare att hantera i en array som är en egenskap på din Memory-klass. Lycka till! Utvecklad av Petter Miller 2004 (uppdaterad 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 av Johan Leitet), Sidan 5 av 6

Kontrollera uppgiftens krav (bocka av) (X)HTML-dokumentet är validerat och godkänt enligt valfri W3Cs rekommendation Memoryspelet fungerar enligt de beskrivna kraven i Uppgift 1. Du har ingen javascript-kod i HTML-koden, varken i HTML-dokumentet eller i den genererade html-koden. Spelet fungerar att spela enbart med hjälp av tangentbordet. (a-taggar runt bilderna) Utvecklad av Petter Miller 2004 (uppdaterad 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 av Johan Leitet), Sidan 6 av 6