Hvordan lage en gris spillet i pseudokode

Hvordan lage en gris spillet i pseudokode


Den terningspillet, "gris", har regler som er enkle å beskrive, men utformingen av pseudokode for et program der datamaskinen spiller med optimal strategi er en utrolig vanskelig oppgave. For å spille "gris", spillere bytter rullende en terning. På en annen enn en roll, er tallet på terningen legges til spillerens tur poengsum. På en rull med en, ender spillerens tur uten poengsum lagt til hans totalt. Etter hvert kast, kan spilleren velge å avslutte sin tur og legge sin tur poengsum hans totale poengsum. Den første spilleren til å nå 100 poeng vinner.

Bruksanvisning

1 Design en funksjon som lar en spiller ta en sving ved å velge å rulle eller stoppe. Den pseudo bør følge denne prosessen, men du vil sannsynligvis uttrykke det i mer detalj:

Funksjon: Turn (Player)

Vis TotalScore.Player og TurnScore.Player

Få innspill

Hvis spilleren velger å rulle

--Generate Tilfeldig tall fra 1 til 6

-Hvis Resultat = 1

---- TurnScore.Player = 0

---- Run Turn (NextPlayer)

-Hvis Resultat> 1

---- TurnScore.Player = TurnScore.Player + Resultat

---- Hvis TotalScore.Player + TurnScore.Player> = 100, vinner spiller

---- Run Turn (Player)

Hvis spilleren velger å stoppe

--TotalScore.Player = TotalScore.Player + TurnScore.Player

--Run Turn (NextPlayer)

2 Beregn en strategi for at datamaskinen skal bruke når datamaskinen spilleren er å vurdere om å rulle eller stoppe. En helt grunnleggende strategi er å ha maskinen holde rulle før sin tur poengsum er over 20, basert på logikken at hver rull har fem sjanser i seks legge til et gjennomsnitt på 4 poeng, så til du kommer til en sving score på 5 * 4 , den "innsatsen" er verdt. For å avgrense strategi, komme opp med en måte å vurdere når det er verdt å skyve forbi 20 poeng, for eksempel når motstanderen har 99 poeng og du starter en sving med 78.

3 Design en funksjon som beregner datamaskinen spillerens avgjørelse. Funksjonen skal ta så innganger variabler som representerer datamaskinens tur poengsum og (om nødvendig for den strategiske beregning) begge spillernes totale score og returnere en variabel som representerer valget mellom å rulle eller stoppe etter behandling inngangene basert på strategien du har designet. En grunnleggende endring av "hold inntil 20" strategi, for eksempel kan se slik ut:

Funksjon: Velg (TurnScore, OpponentScore)

Hvis OpponentScore> 80

--Return (Roll)

Else Hvis TurnScore <20

--Return (Roll)

Else Return (Stopp)