Laboration 5

Alla uppgifter löser man genom att skriva klart metoder i kodskelettet, Lab5_skel, se kommentarer i detta. Ni behöver aldrig kontrollera indata, användaren skriver alltid rätt.

OBS! Allt skrivs på engelska (alla namn)

Tips: Uppgifterna 2 tom 4 kan använda färdiga metoder från String.

Del 1: kommandoradsmeny

Uppgift1

Skapa en kommandoradsmeny med valen p, r och q (q avslutar menyn (metoden)). Vid valen r och p görs en inläsning och en utskift av den inlästa strängen. Kommandoraden skall byggas med while- och switch-satser.

Exempel

> r
Input text > qwerty
qwerty
> p
Input text > asdfgh
asdfgh
> q

(program avslutat)

Uppgfit 2

Skriv en metod som givet en sträng (en svensk mening) översätter denna till rövarspråket.

Uppgift 3

Skriv en metod som givet en sträng (en svensk mening) översätter denna till Pig latin. Metoden skall använda en boolesk hjälpmetod som avgör om ett tecken är en vokal eller inte.

Uppgift 4

Modifiera kommandoradsmenyn så att metoderna från uppgifter 3 och 4 anropas då man väljer r respektive p. Vid valen läser man in en mening på svenska som skrivs ut översatt till röverspråket eller Pig latin.

Del 2: klasser

Uppgift 5

Skapa en klass Dice för en tärning med valfritt antal sidor. Antal sidor anges som parameter till konstruktorn (man kan inte ändra antalet sidor efter man skapat en instans). I IntelliJ: Markera mappen src, högerklicka > New > Java Class > Fyll i namn (Dice) > Ok. Lägg till en metod roll() som ger resultatet r , 1 <= r <= antal sidor. Spara dessutom undan resultatet i en instansvariabel (dvs tärningen kommer ihåg senaste resultatet). För slupmtal används instanser av klassen Random (färdig Java klass)

Skapa en “sexsidig” instans av Dice och kasta den 100 gånger. Skriv ut resultatet för varje kast, till exempel:

3 2 6 3 2 5 2 1 5 5 5 1 5 6 6 2 1 3 3 1 1 2 4 1 2 4 4 5 6 5 5 5 5 2 3 6 1 ...

Uppgift 6

Skapa en klass, Player1, för en tärningsspelare. Spelaren skall ha ett namn och en referens till en tärning. Båda dessa ges som argument till konstruktorn. Skapa instanser och låt spelaren kasta tärningen 5 gånger. Skriv ut resultat, till exempel:

Player is otto
6 3 5 2 3

Uppgift 7

Skapa 2 instanser av Player1 och en tärning. Låt spelarna dela på en tärning (referera samma tärning). Låt varje spelare kasta 5 gånger. Skriv ut resultat för varje, till exempel:

Player is otto
3 4 1 5 3
Player is fia
1 3 5 5 1

Uppgift 8

Skapa en klass DiceCup. Muggen innehåller 5 olika 6-sidiga tärningar. Tärningarna kopplas till muggen m.h.a. konstruktorn (som tar ett fält av tärningar). Skapa en metod i muggen som returnerar totalresultatet då alla tärningar kastats.

Skapa en klass Player2 som använder muggen (och har ett namn). Resultatet då spelaren kastat muggen skall accumuleras i spelarobjektet (en instansvariabel). Lägg till en metod i spelaren där vi kan avläsa vilket accumulerat resultat spelaren har. Instansiera och koppla alla objekt. Låt spelaren kasta 2 gånger. Skriv ut accumulerat resultat efter kasten, till exempel:

arne 20
arne 31

Uppgift 9

Komplettera uppgift 5 genom att överskugga toString()-metoden i både Dice och DiceCup. Lägg in en utskrift i Player2 så att man, förutom accumulerad spelarsumma, kan se varje tärnings resultat (i metoden där själva kastet sker). Till exempel:

DiceCup{dices=[Dice{result=4}, Dice{result=3}, Dice{result=1}, Dice{result=6}, Dice{result=6}]}
arne 20
DiceCup{dices=[Dice{result=2}, Dice{result=1}, Dice{result=4}, Dice{result=1}, Dice{result=3}]}
arne 31

Uppgift 10

Skapa 5 spelare (Player2) som delar på en tärningsmugg. Låt varje spelare kasta muggen en gång (tärningarna i muggen alltså). Sök ut den spelare som fick högst totalsumma. Skriv ut denne, till exempel (med överskuggade toString() metoder):

DiceCup{dices=[Dice{result=1}, Dice{result=3}, Dice{result=6}, Dice{result=4}, Dice{result=3}]}
DiceCup{dices=[Dice{result=4}, Dice{result=6}, Dice{result=2}, Dice{result=5}, Dice{result=1}]}
DiceCup{dices=[Dice{result=5}, Dice{result=5}, Dice{result=3}, Dice{result=5}, Dice{result=1}]}
DiceCup{dices=[Dice{result=5}, Dice{result=4}, Dice{result=1}, Dice{result=5}, Dice{result=2}]}
DiceCup{dices=[Dice{result=3}, Dice{result=6}, Dice{result=6}, Dice{result=3}, Dice{result=6}]}
0:17    (spelarna heter 0, 1, .., jobbigt att skriva namn på alla)
1:18
2:19
3:17
4:24
Max 4:24   (spelare 4 vann med 24 poäng)
Menu