Giter Site home page Giter Site logo

examination-3-pre-2017's Introduction

HT15 HT16

Tjugoett

VIKTIGT! Innan du börjar arbeta med examinationsuppgiften är det viktigt att du lägger till examinationsuppgiftens repo till ditt repo för examinationsuppgiften.


OBS! OBS! OBS!

  • Detta är en obligatorisk och examinerande uppgift som du ska lösa helt på egen hand.
  • Du måste göra regelbundna "commits" och "pushes" av koden till ditt repo för uppgiften för att kursledningen ska kunna följa ditt arbetet med uppgiften.
  • Du ska kunna förklara alla konstruktioner och satser som din lösning av uppgiften innehåller.

Introduktion

I denna examinationsuppgift ska du simulera kortspelet Tjugoett enligt givna regler.

Du kommer att ha stor frihet välja hur du vill lösa uppgiften; vilka konstruktioner att använda. Hur representeras lämpligen en kortlek om 52 kort? Behöver data kapslas in så att "getters" och "setter" behövs? Hur många egendefinierade typer behöver skapas? Är arv lämpligt att använda i något sammanhang? Vilka prototypmetoder behövs? Ska metoderna tillhöra prototypobjektet eller inte? Överskuggning?

Regler

Kort

En vanlig kortlek om 52 kort används. Esset är värt 1 eller 14 poäng, en kung är värd 13, en dam 12, en knekt 11 och övriga kort sin valör.

Spelet idé

I Tjugoett gäller det att komma till, eller så nära som möjligt, summan 21 på två eller flera kort.

Exempel

Given ger alla spelare ett kort var från draghögen. Given tar inte själv något kort. Spelarna spelar nu mot given en i taget i turordning. När det är en spelares tur begär spelaren ett kort av given. För de följande korten spelaren begär kan något av följande inträffa:

  1. Spelaren har fått 21 och vinner.
  2. Spelaren har spruckit, d.v.s. fått en summa större än 21, och förlorar.
  3. Spelaren begär ytterligare kort tills summan är 21, större än 21 eller förklarar sig nöjd.
  4. Spelaren har efter fem kort fortfarande en summa mindre än 21 och vinner.

Då en spelare förklarat sig nöjd är det givens tur att försöka straffa spelaren. Given drar kort från draghögen, ett efter ett, och något av följande kan inträffa:

  1. Given får 21 och vinner.
  2. Given spricker och spelaren vinner.
  3. Given förklarar sig nöjd om summorna är lika eller om givens summa är högre. Given vinner då.

Given fortsätter sedan att spela mot näste spelare på samma sätt. Tar korten i draghögen slut, det understa kortet används aldrig, tar given alla dittills avverkad kort, blandar om dem och använder dem som en ny draghög.

Uppgift

Du ska skriva en Javascriptapplikation som simulerar kortspelet Tjugoett enligt givna regler. Inget hasardmoment, d.v.s. ingen satsning av pengar, behöver förekomma. Du väljer själv om det ska vara en eller flera spelare utöver given. Ingen interaktion med användare ska finnas utan både spelare och giv ska dra kort från draghögen enligt en förutbestämd algoritm utformad enligt ditt eget tycke. Exempelvis kan du välja att en spelare är nöjd då summan uppgår till 15.

Startpunkten för applikationen ska vara i filen app.js, placerad i roten av Javascript-applikationen. Övriga Javascript-filer ska vara placerade i underkatalogen src.

Din applikation måste innefatta minst tre egendefinierade typer, som objekt instansieras utifrån. Samtliga typer ska vara placerade i olika moduler. Du väljer själv vad typerna ska representera. Kanske skapar du typer för spelbord, draghög, giv, spelare, hand, spelkort, färg, valör, ...?

Efter varje spelomgång ska resultatet presenteras. Det ska framgå vilka kort spelare och giv dragit, respektive hands summa och vem som vunnit. Bilderna nedan är förslag på presentation av resultatet av olika spelomgångar.

Bedömning

Bedömning av examinationsuppgiften görs enligt skalan U/G/VG. För att få VG i slutbetyg krävs VG på denna examinationsuppgift, samt G på examinationsuppgift 1 och 2.

Samtliga åtta mål i kursplanen examineras, men framför allt det åttonde och sista målet, "analysera problem för att därefter värdera och välja lämplig design samt konstruera lösning i form av program i programspråket Javascript (8)".

Betygsgraden bestäms utifrån hur väl du kan visa att du tillgodogjort dig kursens samtliga moment och den praktiska tillämpning av dessa. Utökningar av uppgiften kan premieras.

Tips

Ett vanligt sätt att representera en kortlek är att använda en array. För att blanda arrayen brukar algoritmen Fisher-Yates Shuffle användas i en eller annan form.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.