I den första delen av uppgiften skall vi modellera en tärning med hjälp av en klass Die. Vi skall sedan använda den här tärningsklassen för att skapa ett enkelt tärningsspel. Tärningen skall ha två variabler: nuvarande värde och antal sidor (dvs max-värde för tärningen).
Antal sidor skall sättas i klassens konstruktor. Skall vara av typen int
och ha en enkel gettermetod. Nuvarande värde skall förändras när man kallar på roll()
-metoden (se nedan). Skall vara av typen int
samt ha en getter-metod.
Tärningen skall också ha en slumpgenerator som privat klassvariabel. Slumpgeneratorn skall vara av typen Random
och kommer att användas i vår roll()
-metod. Typen Random kan importeras från java.util.Random
.
För att kunna använda klassen kommer vi att behöva en metod: public void roll()
. Den här metoden skall använda sig av slumpgeneratorn för att förändra tärningens nuvarande värde. Tips: ni bör använda standardklassen Random
för detta. Random har en metod public int nextInt(int maxValue)
som returnerar ett slumpmässigt heltal mellan 0 och (maxValue-1).
Player
för att representera en spelare.
En spelare skall ha tre instansvariabler: ett namn, en poäng och en tärning. Namnet skall sättas i klassens konstruktor-metod samt ha en enkel gettermetod. Poängen skall ha getter- och setter-metoder. Tärningen är vad spelaren kommer att använda för att spela tärningsspelet. Skall vara av typen Die
.
En spelare skall också ha ett antal metoder:
rollDice()
: Skall rulla spelarens tärning.getDieValue()
: Skall returnera värdet på spelaren tärning i form av ett heltal.increaseScore()
: Skall öka spelarens poäng med ett.addDie()
: Skapar en ny tärning och lägger till den till spelaren.
Scanner
-objekt för att ta input från spelaren via terminalen. Ni kan anta att användaren matar in korrekta värden, dvs ni behöver ej ha med felhantering. Varje omgång består av att spelaren gissar på ett värde och sedan rullar sin tärning. Om värdet spelaren gissade på är lika med värdet på tärningen, så får spelaren en poäng.
För den som vill ha en extra utmaning skall ni skriva om DiceGame
till det något mer avancerade MultiplayerDiceGame
. I MultiplayerDiceGame skall det gå att ställa in antalet spelare. Spelet skall också kunna spelas med ett valfritt antal tärningar. Varje omgång går ut på att spelarna slår alla sina tärningar i tur och ordning. Spelarna får därefter poäng enligt det sammanlagda värdet av deras tärningar. (Notera att reglerna är annorlunda för det här spelet!)
private static ArrayList<Player> initialize();
: Skall initialisera spelet genom att ta emot användarinput och skapa alla instanser som behövs, samt en lista av spelare som sedan returneras.private static void takeTurn(ArrayList<Player> players);
: Skall ta emot en lista av spelare och spela färdigt en hel omgång. Den skall gå igenom listan av spelare, rulla varje spelares tärningar, och summera resultatet för varje omgång.private static ArrayList<Player> getWinners(ArrayList<Player> players);
: Tar emot en lista av spelare och skall returnera en lista med vinnare. En vinnare är man om man har mest poäng. Vi har en lista eftersom flera spelare kan vinna, då flera spelare kan ha samma poäng.