Øvelse – udfør listehandlinger
Dit team er tilfreds med den kode, du har skrevet indtil videre til kortspillet. Teamet ønsker, at du udvikler koden yderligere og begynder at implementere spilregelspecifik logik, f.eks. beregning af værdien af en hånd.
I denne øvelse skal du bruge nogle af funktionerne i listemodulet.
Beregn en hånd til spillet 31
I kortspillet "31" får hver af to eller flere spillere en hånd bestående af tre kort. Spilleren vinder, hvis kortpointtotal er tættest på 31. Hvert kort har sin egen pålydende værdi, bortset fra at jackstik, dronning og konge er 10 point værd hver, og esser er 11 point værd. En spiller, der f.eks. har 10, et jackstik og et es, ville have 31 point, og den hånd ville være vinderen.
I et tidligere undermodul har du oprettet et sæt kort, der hver især repræsenteres som et tal fra 0 til 51. Hvis du vil begynde at beregne en hånd, skal du oversætte disse tal til noget, der giver mening inden for kortdomænet. Du kan f.eks. erstatte tallet "0" med navnet "Hjerteres es".
Heldigvis har en af dine kolleger allerede skrevet denne kode:
// 0 = 11, 11, 12, 13 = 10, else the actual number
let cardValue card =
let value = card % 13
if value = 0 then 11
elif value = 10 || value = 11 || value = 12 then 10
else value
Kopiér den foregående kode, der skal bruges i trin 2 i følgende instruktioner.
Din opgave er at tage en korthånd og beregne dens værdi ved hjælp af funktionen sumBy().
Opret et nyt projekt ved at kalde
dotnet newi en tom mappe:dotnet new console --language F# -o CardGame cd CardGameOver hovedmetoden skal du tilføje din kollegas kode, som du kopierede for et øjeblik siden.
Hvis du vil oprette din korthånd, skal du tilføje følgende kode:
let hand = [0; 25; 31]Nu, hvor du har oprettet hånden, kan du tilføje funktionen
sumBy():let sum = List.sumBy(fun card -> cardValue card) hand printfn "%i" sumKør koden ved at kalde
dotnet run:dotnet runDu bør nu kunne se følgende output:
26
Tillykke! Du har formået at evaluere et kortspil for spillet 31. Det blev 26, hvilket ikke er helt 31, men det er en god sum.