The terningspill, " Pig ", har regler som er enkle å beskrive, men utformingen av pseudokode for et program der datamaskinen spiller med optimal strategi er en utrolig vanskelig oppgave . Å spille " Pig ", spillere bytter rullende en enkelt dø . På hvert kast annet enn en , er antallet på terningen lagt til spillerens tur score. På en rull med en , ender spillerens tur uten scoringer lagt til total hans . Etter hvert kast , kan spilleren bestemme seg for å avslutte sin tur og legge hans tur poengsum hans totale poengsum . Den første spilleren til å nå 100 poeng vinner . Instruksjoner
en
Design en funksjon som lar en spiller tar en sving ved å velge å rulle eller stoppe. Den pseudokode bør følge denne prosessen , men du vil sannsynligvis uttrykke det i mer detalj : en
Funksjon: Turn ( Player)
Visning TotalScore.Player og TurnScore.Player
Få innspill
p Hvis spilleren velger å rulle
- generere tilfeldige tall fra 1 til 6
- Hvis Resultat = 1
---- TurnScore . spiller = 0
---- Run Turn ( NextPlayer )
- . Dersom resultat> 1
---- TurnScore Player = TurnScore.Player + På
---- Hvis TotalScore.Player + TurnScore.Player > = 100 , vinner Player Review
---- Run Turn ( Player)
p Hvis spilleren velger å stoppe
- . TotalScore Player = TotalScore.Player + TurnScore.Player
- Run Turn ( NextPlayer )
2
Beregn en strategi for datamaskinen å bruke når datamaskinen spiller er å vurdere om å rulle eller stoppe. En svært grunnleggende strategi er å ha datamaskinen holde rulle før sin tur resultatet er over 20 , basert på logikken at hver rull har fem sjanser i seks å legge et gjennomsnitt på fire poeng, så til du kommer til en sving score på 5 * 4 , den " satse " er verdt. For å avgrense strategi , komme opp med en måte å vurdere når det er verdt å skyve siste 20 punkter, for eksempel når motstanderen har 99 poeng , og du starter en sving med 78 .
3
designe en funksjon som beregner datamaskinen spillerens avgjørelse . Funksjonen skal ta så innganger variabler som representerer datamaskinens turn score og ( om nødvendig for den strategiske beregningen ) begge spillernes total score og returnere en variabel som representerer valget mellom å rulle eller stoppe etter behandling innganger basert på strategien du utformet. En grunnleggende endring av " hold til 20 "-strategi, for eksempel kan se slik ut : en
Funksjon : Velg ( TurnScore , OpponentScore )
p Hvis OpponentScore > 80
< p > - Return (Roll )
Else Hvis TurnScore < 20
- Return (Roll )
Else Return (Stopp)