tärningsspelet , " Grisen , " har regler som är enkla att beskriva , men utforma pseudokod för ett program där datorn spelar med optimal strategi är ett bedrägligt knepigt pussel . För att spela " Gris ", spelarna turas rullande en tärning . På någon rulle annan än 1 , är antalet på dynan tillsattes till spelarens tur poäng. På en rulle 1 , slutar spelarens tur med någon poäng läggs till hans totala . Efter varje kast kan spelaren besluta att avsluta sin tur och lägger sin tur poäng till hans totala poäng . Den första spelaren att nå 100 poäng vinner . Instruktioner
1
Design en funktion som kommer att låta en spelare ta en sväng genom att välja att rulla eller stoppa . Pseudokoden bör följa denna process , men du kommer sannolikt uttrycka det mer i detalj :
Funktion : Turn ( Player ) katalog
Display TotalScore.Player och TurnScore.Player
Get input
Om spelaren väljer att rulla
- Generera slumptal från 1 till 6
- Om Result = 1
---- TurnScore . spelare = 0
---- Run Turn ( NextPlayer ) katalog
- . Om resultat> 1
---- TurnScore Player = TurnScore.Player + resultat
---- Om TotalScore.Player + TurnScore.Player > = 100 , vinner Player Review
---- Run Turn ( Player ) katalog p Om spelaren väljer att stoppa
- . TotalScore Player = TotalScore.Player + TurnScore.Player
- Kör Turn ( NextPlayer )
2
Beräkna en strategi för datorn att använda när datorn spelaren utvärdera om att rulla eller stoppa . En mycket grundläggande strategi är att ha datorn hålla rullande tills sin tur poäng är över 20 , baserat på logiken att varje rulle har fem chanser i sex för att lägga till ett genomsnitt på 4 poäng , så tills du når en sväng poäng av 5 * 4 , den " satsning " är värt besväret . För att förfina strategin , komma upp med ett sätt att bedöma när det är värt att trycka senaste 20 punkter, till exempel när din motståndare har 99 poäng och du startar en sväng med 78 . Addera 3
designa en funktion som beräknar datorn spelarens beslut . Funktionen ska ta så ingångar variabler som representerar datorns tur värdering och ( om det behövs för strategisk beräkning ) båda spelarnas sammanlagda poäng och returnera en variabel som representerar valet att rulla eller stoppa efter bearbetning ingångarna baserat på den strategi du designat . En grundläggande förändring av " håll tills 20 " strategi , till exempel , skulle kunna se ut så här :
Funktion : Välj ( TurnScore , OpponentScore ) katalog p Om OpponentScore > 80
- Return ( Roll ) katalog
Else Om TurnScore < 20
- Return ( Roll ) katalog
Else Return ( Stopp )