Duckhunt (kmom06)
I den här uppgiften ska vi skapa en variant av det gamla spelet Duckhunt. Många av er har säkert spelat det. Det går ut att pricka ankor som rör sig över skärmen. Vi kommer jobba med positionering, events, randomisering, fetch med mera för att få ihop det. Det finns gott om utrymme för att göra lite extra i uppgiften. Om du inte vill använda ankan kan du skapa en egen bild eller form istället.
Förutsättning
Det förutsätts att du gått igenom artiklarna för kursmomentet samt är det en fördel om du gjort tidigare kursmoment. De ger dig koll på hur vi börjar jobba med JavaScript och webbläsaren.
Krav
Generell struktur
Du jobbar i mappen public/.
-
Skapa filen
public/duckhunt.htmloch lägg till menyvalet i navbaren likt tidigare. -
Skapa filen
public/js/duckhunt.jsoch läs in den iduckhunt.html. Det är “startfilen” för din JavaScript. -
Skapa filen
public/css/duckhunt.csssom sköter stylen för uppgiften.
När du är klar bör du ha följande filer, tillsammans med dina tidigare:
Directorypublic
Directoryjs
- duckhunt.js
Directorycss
- duckhunt.css
- duckhunt.html
1. Setup (Innan spelet startar)
-
Använd input element för att välja vilken bakgrundsbild man vill ha samt ha möjlighet att slumpa fram en. Det finns 5 bilder (1-5) så 0 kan användas för att slumpa.
-
Använd input element för att välja hur länge spelet håller på: 10, 20 eller 30 sekunder.
-
Använd input element för att välja i vilken hastighet ankan ska förflytta sig: 1, 2 eller 3 sekunders intervall.
-
Se till att spärra möjligheterna att välja något annat.
-
Visa att datan laddas medan bilderna hämtas. Här kan du välja själv hur du vill att det ska se ut.
-
Utfrån valen man gör ska det skapas ett globalt objekt som håller informationen spelet behöver för att starta och fungera. Sätt alla värden via funktionen
setupGame(). -
Använd fetch för att hämta ankan och den valda bakgrundsbilden.
- Ankan (Den bilden kommer från rawpixel.com)
- Bakgrundsbilderna
För att använda länkarna med fetch behöver vi “raw” content från GitHub. Du kan se URL:en här. Bara byt siffran i slutet. Detsamma gäller för ankan.
2. Spelet
-
Starta spelet via en knapp och funktionen
startGame(). -
Placera rimlig logik i ditt objekt. Fundera på vad som passar där och vad som passar ligga utanför.
-
Ankans position ska slumpas fram med det valda intervallet. Hela ankan ska alltid vara innanför skärmens fönster.
-
Om man klickar på ankan får man 1 poäng.
-
När tiden är slut presenteras poängen via funktionen
endGame()och spelet är över. Man ska få möjlighet att starta ett nytt spel.
Extra uppgifter (optionellt)
- Se till så man kan välja svårighetsgrad som påverkar till exempel:
- ankans storlek
- poängen
- Kan man få ankan att röra sig i olika riktningar och inte slumpas fram?
Hur kan det bli när du är klar?
Exempel på hur det kan se ut när du är klar.
Validering
-
Dina webbsidor skall validera i W3C HTML validator.
-
Dina webbsidor skall validera i W3C CSS validator.
-
Din webbplats skall passera
npx eslint public. -
Din webbplats skall gå att starta via
npx http-server.
Krav inlämning
-
Skriv all din kod i din branch
main. -
Dina webbsidor skall validera i W3C HTML validator.
-
Dina webbsidor skall validera i W3C CSS validator (när det är rimligt).
-
Din webbplats skall passera
npx eslint. -
Din webbplats skall gå att starta via
npx http-server. -
När du är klar så taggar du ditt repo och pushar till GitHub.
-
Din webbplats skall vara tillgänglig via en privat länk på GitHub Pages.
-
När allt är klart och fungerar så gör du en pullrequest (PR) mot branchen
bth/submit/kmom06. Läs om hur du gör en PR för kmom06”.
Avslutningsvis
Lycka till och hör av dig om du kör fast eller har några funderingar.