# Tillämpad programmering: tärningsspel
I det här projektet ska vi öva på att skriva kod för att bygga ett lite större program.
Vi ska bygga ett enkelt tärningsspel i som spelas i konsolen, baserat på spelet Blackjack. Projektet är upplagt så att vi först ska bygga de grundläggande funktionerna, och i mån av tid kan vi utveckla programmet med fler funktioner.
### Spelregler
Spelet spelas mellan en spelare och en datorstyrd spelare, och spelas över ett antal rundor. Varje runda får spelaren välja om hen vill fortsätta slå tärningen, eller stanna. Slår man tärningen läggs tärningskastet till på ens poäng, väljer man att stanna så stannar man på den poängen. Dealern gör samma sak, och den som i slutet av spelet har närmast 21 poäng, utan att vara över 21, vinner.
En exempelkörning av programmet kan se ut så här:
```
Välkommen till spelet 21!
Vill du slå eller stanna?
slå
Du slog: 1, din poäng är: 1
Dealern slog: 3, dealerns poäng är: 3
Vill du slå eller stanna?
slå
Du slog: 2, din poäng är: 3
Dealern slog: 4, dealerns poäng är: 7
[...]
Vill du slå eller stanna?
slå
Du slog: 2, din poäng är: 19
Dealern slog: 5, dealerns poäng är: 18
Vill du slå eller stanna?
stanna
Dealerns poäng är: 18 och har stannat
Dina poäng: 19
Dealerns poäng: 18
Du var närmare 21 än dealern, du har vunnit!
```
### Del 1: Sätt upp projektet
Skapa en nytt projekt i PyCharm som du döper till något relevant, till exempel *DiceGame*.
### Del 2: Tärningskast
För att genomföra ett tärningskast vill vi generera ett slumpat tal mellan 1 och 6. Det kan vi göra på följande sätt:
Högst upp i filen: `import random`, och sedan
```python
number = random.randint(1,6)
```
Då kommer number innehålla resultatet av ett tärningskast
*Testa koden ovan och skriv ut resultatet med `print()`*
### Del 3: Spelaren
Börja med att skapa funktion för att låta spelaren kasta en tärning tills den skriver stanna. Efter varje tärningskast ska tärningskastet och den totala summa skrivas ut.
*Tips:*
* Använd en while loop som bryts när använderen skriver stanna
* Ta in användarens svar med `input`
* Ha koll på den total summan genom en variabel som skapas innan while-loopen, och som ökas efter varje kast
### Del 4: Dealern
Gör på liknande sätt som för spelaren för att låta dealern spela. Dealern ska fortsätta kasta tills summan är 17 eller mer.
### Del 5: Avgör vinnaren
Efter att spelaren och dealern har genomfört sina kast, avgör vem som har vunnit enligt följande regler:
* Om dealern har över 21 vinner spelaren
* Om spelaren har över 21 har spelaren förlorat
* Om både dealern och spelaren har under 21, så har den med flest poäng vunnit.
* Om det är lika vinner dealen
### Utmaning: Förbättra spelet
Om du har fått ihop ett fungerande spel kan du jobba med att implementera någon eller några av följade förbättringar:
* Just nu kastar spelaren alla sina tärningskast innan dealern börjar. Ändra så att spelaren och dealern turas om att kasta.
* Nu kan det bli så att spelaren och dealern får båda över 21. Ändra så att så fort någon går över 21 avslutas spelet och den andra vinner.
* Lägg till så att man kan spela igen efter att spelet har avslutats
* Lägg till att varje spelare som inte är dealern, har en pott pengar som man kan satsa. Vinner man får man tillbaka dubbelt, förlorar man förlorar man pengarna man har satsat
* Ändra så att man spelar med kort istället. Dvs att istället för att slå en tärning drar man ett kort med en siffra mellan 1 och 13, och där 11, 12, 13 (knekt, dam och kung) ger 10 poäng.
* Har du nån idé på hur man kan förbättra spelet? Läs mer om reglerna till Blackjack här: https://sv.wikipedia.org/wiki/Black_Jack och implementera någon förbättring.