Laboration 6

Ni behöver aldrig kontrollera indata, användaren skriver alltid rätt.

Uppgiften

Skapa en kommandoradbaserad version av LCR-spelet. I LCR spelet deltar 3 spelare. Inledningsvis får de vardera 3 brickor (chip). Spelet spelas med 3 tärningar med sidorna markerade med:

“L”, “C”, “R”, “.”, “.” och “.” (sex sidor)

Spelets gång

  1. Aktuell spelare kastar så många tärningar som brickor han/hon har, dock max tre.
  2. Beroende på utfall fördelar spelaren sina brickor enligt
    • “L” ge spelaren till vänster en av sina brickor.
    • “C” lägger en bricka i en gemensam hög (brickan “försvinner”).
    • “R” ge spelaren till höger en av sina brickor.
    • “.” gör inget.
  3. Nästa spelare medurs börjar vid punkt 1.

Då alla spelare utom 1 har slut på brickor är spelet slut. Spelaren med brickor är vinnare. Ingen spelare utgår under spelets gång. Spelare med 0 brickor är kvar men kastar tärningen 0 gånger (spelaren kan få brickor igen). (se även beskrivningar här: http://en.wikipedia.org/wiki/LCR_(dice_game)) Exempelkörning längst ner.

Arbetsgång

  1. Ni behöver 3 klasser (inkl. top-level klassen, exklusive CommandLineLCR som är delvis given). Vilka kan behövas?
  2. Välj den klass som inte har kopplingar till någon annan klass. Arbeta med denna. Vilka instansvariaber och metoder kan behövas? Implementera dessa. Överskugga toString så att något lättbegripligt skrivs ut. Testa genom att skapa ett objekt i CommandLineLCRs main-metoden (se kommentar i koden).
  3. Fortsätt på samma sätt med den klass som har minst antal kopplingar (d.v.s troligen bara behöver objekt av föregående klass).
  4. Vilka instansvariabler behöver top-level objektet? Lägg till dessa samt skapa en kontruktor som sätter värdena.
  5. Gör klart metoden buildLCRGame i CommandLineLCR. Metoden bygger hela objekt modellen samt returnerar denna.
  6. Gör klar render-metoden i CommandLineLCR.
  7. Utgå från kommandoraden och försök hitta metoder i top-level objektet som skall anropas då man väljer något. Kontrollera alltid om det finns något användbart i de kopplade objekten. Jobba med en sådan metod i taget tills allt är klart.

TIPS Några tänkbara metoder

Exampelkörning

LCR started
Players are
{Pelle,3} {Fia,3} {Sven,3}
Player is {Pelle,3}
> r
L  L  .
{Pelle,1} {Fia,3} {Sven,5}
Player is {Sven,5}
> r
.  .  R
{Pelle,2} {Fia,3} {Sven,4}
Player is {Fia,3}
> r
.  C  .
{Pelle,2} {Fia,2} {Sven,4}
Player is {Pelle,2}
> r
.  .
{Pelle,2} {Fia,2} {Sven,4}
Player is {Sven,4}
> r
.  .  R
{Pelle,3} {Fia,2} {Sven,3}
Player is {Fia,2}
> r
.  .
{Pelle,3} {Fia,2} {Sven,3}
Player is {Pelle,3}
> r
R  .  .
{Pelle,2} {Fia,3} {Sven,3}
Player is {Sven,3}
> r
R  .  .
{Pelle,3} {Fia,3} {Sven,2}
Player is {Fia,3}
> r
R  R  L
{Pelle,4} {Fia,0} {Sven,4}
Player is {Pelle,4}
> q
R  R  L
{Pelle,4} {Fia,0} {Sven,4}
Game aborted
Menu