Bygg et blackjack -spill i C ++

Bygg et blackjack -spill i C ++
Blackjack er verdens ganske berømte bankspill som spilles over hele verden daglig. Det er i mellom en spiller og en forhandler (ikke en annen spiller). En spiller pleide å sammenligne kortene sine med forhandlerne. Spilleren må beseire forhandleren med noen regler som allerede er satt. Tre ting vil definere spillerens seier. Spilleren må beseire forhandleren ved å få de 21 poengene på de 2 første kortene, jeg.e., Naturlig eller blackjack. En annen er å få en høyere poengsum til slutt. Den tredje er å la det motsatte tegne flere kort. Denne guiden vil vise deg å lage et blackjack -spill i C ++ innen Ubuntu 20.04 System. Vi har startet programmet vårt med de nødvendige overskriftsfilene.

Vi har erklært noen funksjonsprototyper som vil bli brukt i koden i en sekvens.

Definerte noen globale variabler og hoved () -metoden. "Regler ()", "Vanskelighetsgrad ()" og "PlayOneHand ()" -funksjonene vil bli kalt etter hverandre. La oss se hvordan disse funksjonene fungerer.

Metoden “Regler ()” har ingenting å returnere fordi den demonstrerer spillreglene, vinnerpoengreglene og vanskelighetsnivåene for spillerens letthet ved å bruke "cout" -klausulene.

Metoden “vanskelighetsgrad ()” utfører får vanskelighetsnivået fra en bruker når han/hun kommer inn 1 eller 2. "Hvis" -uttalelsene brukes til å sjekke om en bruker har skrevet inn 1 eller 2 eller ikke. Hvis ikke, vil bufferen bli ryddet opp, og denne funksjonen "vanskeligheter" vil bli kalt igjen for å gå inn i vanskelighetsnivået.

Etter at brukeren har gått inn i det vanskelighetsgraden, ble "PlayOneHand" -funksjonen utført. Den erklærte en lokal variabel "lek" tilsvarer "n" og deretter en "trekning" -variabel i "do" -uttalelsen. Array "dekk" av størrelse 52 er erklært. Funksjonen “Initializeck” kalles for å initialisere “Deck”, og funksjonen “Shuffle” brukes til å blande dekket. Etter det har vi initialisert to lister, “PH” og “DH”. "PH" står for spillerhender mens "DH" står for forhandlerens hånd.

Vi har kalt "addtohand" -funksjonen mens vi passerer den "gettopcard" -funksjonen og "pH" eller "dh" -arrays i tilfeldig rekkefølge. I "GettopCard ()" -funksjonen har vi også bestått "Deck" -arrayen som et parameterargument. Cout -uttalelsene viser at blandingen er gjort. "NaturalBlackJack" -funksjonen og "blackjack" -funksjonen kalles med 3 parametere, i.e., pH, DH, Y eller Y. "Showcards ()" -funksjonen kalles 2 ganger for å vise kortene i spiller og forhandlerhånd. "ChecksoftorHard" -funksjonen kalles for å endre verdien av et ACE -kort av en bruker. Mens "UserWantStodraw" -funksjonen kalles, vil vi utføre noen handlinger.

Mens Loop kaller addTohand (), showcards (), ChecksoftorHard (), CheckBust () og BlackJack () -funksjon. HituntilStands (), CheckBust (), BlackJack (), Whowins () -funksjonen er utenfor for å sjekke seieren, tapet og vise den. Mens "Playanotherhand" blir kalt til å spille en gang til hvis det er ønsket.

Funksjonen “Initializeck” brukes til å bygge verdiene av kortbakgrunner for å sette rangering i 10S -posisjonen og drakten i 100S -stilling. Du kan se, vi har brukt for loop for hjerter, diamanter, klubber og spar hver for seg.

Her kommer "shuffle" -metoden, som brukes til å omorganisere kortene tilfeldig. Dette er gjort med en enorm looping, og kortklonene er laget. Det vil fortsette å fungere til sløyfen slutter og alle kortene blir blandet.

Vi har kalt denne funksjonen i "addtohand" -funksjonsparameteren, så diskuter den først. Så det har tatt "dekk" -arrayen i sin parameter og sløyfe alle kortene opp til det siste. Det vil finne ut det spesifikke kortet fra kortstokken som ikke er tomt og lage en kopi av det først. Deretter vil det gjøre det tomt ved å erstatte og returnere den kopierte verdien, jeg.e., "Topcard" -variabelen, til "addtohand" -funksjonen.

Nå tar "addtohand" -funksjonen "topcard" som returneres fra "gettopcard" -funksjonen, og "hånden []" -arrayen som har blitt sendt til den, enten er det forhandlerhånd "dh" eller spillerens hånd "pH". Hvis hånden har et tomt sted for kortet, vil den erstatte det stedet med verdien “CardToadd” returnert fra “GettopCard” -verdien.

Denne funksjonen vil få score til spillere og forhandlere som bruker PH og DH. Det sjekker om spilleren har en blackjack eller ikke. I så fall vil den kalle "resultattavlen" -funksjonen, beregne vinneren, kalle "backdoorkenny" -funksjonen, og deretter "playanotherhand" -funksjonen.

"Blackjack" -funksjonen vil sjekke om spilleren har en blackjack eller både spilleren og en forhandler har en blackjack. Hvis en spiller har blackjack, vil den kalle "resultattavlen", "backdoorkenny" og "playanotherhand" -funksjonen mens du beregner gevinsten. Hvis begge har blackjack, vil det kalle "resultattavlen" og "playanotherhand" -funksjonen mens du beregner gevinsten.

"Showcards" handler om å vise kortverdiene på terminalen mens dekket ikke er tomt for spillere og forhandlere.

"ChecksoftorHard" -funksjonen vil bli utført for å spørre en bruker om han/hun vil at ACE skal telles som 1 eller 11. Gjennom dette vil vi beregne ytterligere score eller kort.

"UserWantStodraw" -funksjonen, ber brukeren tegne et annet kort eller hoppe over sløyfen. Hvis brukeren kommer inn i “H” eller “H”, betyr det å spille en gang til, eller det vil bli hoppet over.

"CheckBust" -funksjonen kalles når en spiller eller en forhandler møter en score på 21.

Denne funksjonen "Hituntilstand" vil bli brukt til å la en forhandler treffe mens den blir 17. Det ville bli dekodet på nybegynner- eller ekspertnivå,

"Softorhardai" -funksjonen har blitt kalt her for å spille med omhu.

Her kommer "gethandvalue ()" -funksjonen for å oppsummere kortets verdier ved å få verdiene fra funksjonen "CardValue" og returnere den oppdaterte.

Her kommer "CardValue" -funksjonen, som sjekker bakgrunnen til et kort for å få 10S -verdien. Dette kan kalles for et hvilket som helst kort, og det vil bli kalt mange ganger i denne koden.

"Resultattavlen" -funksjonen tar pH og DH for å vise gjeldende kortene til spilleren og forhandleren ved hjelp av "showcards ()" og vise kortverdien ved å bruke "gethandverdi" -funksjonen ".

Når en bruker har 1 kort på 10 poeng mens det andre kortet er "ACE", ved hjelp av "CardValue" -funksjonen, vil det beregne vinneren som en utbetaling på 1: 4.

Denne funksjonen kalles når vi vil vite om det nåværende kortets rangering og drakten.

Rekkene blir sjekket med "Switch" -uttalelsen, og dressene blir sjekket via IF-Else-uttalelser.

"Dumpdeck" -metoden vil bli kalt for å vise dekkverdiene.

"GetrandomNumber" er blitt brukt i programmet for å få et hvilket som helst tall fra de medfølgende høye og lave verdiene.

Denne funksjonen handler om logikk for å sjekke om forhandleren har et "ess" eller ikke. I så fall vil forhandleren prøve å lage 21 og vinne.

Funksjonen “Whowins ()” vil bli kalt til å bestemme vinneren ved å bruke score.

Playanotherhand () -funksjonen kalles for å be brukeren om han/hun vil spille igjen etter ett helt spill.

Samlingen utføres ved hjelp av “G ++” -kompilatoren.

Utførelsen viser blackjack -panelet. Så her går du.

Konklusjon:

Denne artikkelen er et komplett pakke med en C ++ -kode for å lage et blackjack -spill i Ubuntu 20.04. Vi har brukt mer enn 20 brukerdefinerte funksjoner for å oppnå funksjonalitet. Alle funksjonene er avhengige av hverandre, og vi har prøvd å minimere kompleksiteten ved å forklare dem i en sekvens. Vi håper hele denne artikkelen vil være lett å forstå.