Indholdsfortegnelse
Yatzee3000
Opgave 1
Betragter du Yatzee3000 spillets ScoreCounter klasse, vil du se at den programkode der beregner summen af et terningslag går igen i flere af klassens metoder. (Åben koden i VisualStudio og se koden gentage sig flere steder)
Som en god design skik, skal vi nu ændre koden således at vi efterlever DRY princippet, dvs. Dont Repeat Yourself.
Vi ønsker ikke at gentage den samme beregning af sum flere steder, i stedet skal beregningen af sum samles i et enkelt metode kald: int CalcSum( int[] r ).
Udvid ScoreCounter via TDD metoden således ScoreCounter får metoden int CalcSum( int[] r)
Opgave 2
Yatzee3000 Engine benytter sig af et boolean array scoreBoardValidFields som indeholder de gyldige felter for at kunne indsætte et kast. Dvs. ved start er alle gyldige, men efter. fx. du har sat fire, to'ere ind på to'ernes plads bliver denne plads markeret markeret som false, og du vil efterfølgende ikke kun sætte værdier ind på denne plads.
Engine indeholder nedenstående metode som tillader dig at tilgå scoreBoardValidFields:
public Boolean[,] GetScoreBoardValidFields()
Engine indeholder nedenstående metode som tillader dig at vælge et Yatzee felt.
public void SelectField(YField field)
- Skriv en test der viser at „bogholderiet“ mht. at holde styr på gyldige og ikke gyldige felter fungerer efter hensigten. (eller ikke fungerer efter hensigten)
- Tag stilling til at om programmørens måde at holde styr på gyldige og ikke gyldig felter, er en god ide eller ej. (forklar hvorfor)
Opgave 3
Hvad skal der til for at vi kan udvidde Yatzee3000 således at vi kan spille mod en computer modspiller ?
- Beskriv den funktionalitet (trin-for-trin) en „regelbaseret“ computer modstander skal have for at yde modstand til „human player“ i Yatzee3000. (Benyt gerne pseudo-kode)
Obs!. det er ikke tanken at du nu skal implementere disse trin.
