Laboration 2 - Hoppsansa
För att få godkänt på labben måste man ha lyckats byta plats på dom gröna och dom röda enligt spelets regler! Spellogiken i ModelSpellogiken ska läggas i en egen klass. Klassen ska ha åtminstone dessa två metoder som är de väsentliga för spelet:move(k) // flyttar pjäsen på plats k till tomma platsen om det är tillåtet get(k) // returnerar innehållet (dvs färgen) på plats kNi får införa fler metoder om ni tycker att det behövs. Hur spelets pjäser och tom ruta ska representeras får ni bestämma själva men 0, 1 och 2 är naturliga val. Information om vems tur det är måste också finnas. Det är listigt när man skriver Model att ha en variabel tom som anger index för den tomma rutan.
Tänk igenom spellogiken noga så att klassen Model blir både
kort och tydlig!
Observera att själva spelandet inte
utförs i Spellogiksklassen. Klassen tillhandahåller metoder för att
uföra spelets drag och spelandet görs av andra programdelar.
Spellogiken utgör Model i Model-View-Control-mönstret och i uppgiften
ingår att skriva program som spelar spelet med två olika View-Control-delar,
en textbaserad och en grafisk.
Textversionen av spelet.Så här kan det se ut när man spelar:GGG RRR Välj 0-6: 2 GG GRRR Välj 0-6: 4 GGRG RR Välj 0-6:Det texbaserade spelet kan man skriva i en egen klass eller lägga det i en main- metod i Model-klassen. Spelet spelas
genom att man anropar metoder ur Model -klassen. Vi kan
se det textbaserade spelet som en test av Model-klassens
funktionalitet innan vi använder Model i vårt grafiska program.Tillägg 14 april: Inläsning av text från terminalfönstret görs enklast med klassen Scanner som finns i paketet java.util. Klicka här för ett exempel på hur man använder Scanner: HejMedFragor.java. En grafisk komponent med en inre knappklassI den grafiska versionen av spelet måste man ha klickbara rutor som kan ändra färg. Använd en utökad version av JButton (jfr labb1) som heter t.ex.Ruta och ges en metod för att sätta knappens
färg till grön, röd eller vit (för tom ruta), t.ex. så här:
ruta[i].set(0); //Knappen blir vit ruta[i].set(1); //Knappen blir grön ruta[i].set(2); //Knappen blir röd
Välj själv om View-Control-delen av programmet ska skrivas som en applet eller ett fristående program.
RedovisningVid redovisning så skall följande visas upp och förklaras
Extrauppgift 1:Låt det vara grodor som hoppar åt höger och pingviner som hoppar åt vänster i den grafiska versionen av programmet. Spelet med rött och grönt ska redovisas först och får inte erstättas med bildversionen. Det går förstås bra med egna bilder istället för grodor och pingviner! Högerklicka på bilderna nedan om du vill spara dem till det egna programmet!![]() ![]() ![]() ![]() ![]() ![]()
Extrauppgift 2:Utvidga programmet så att ett meddelande ges efter varje drag eller försök till drag. Användaren ska få veta om draget var OK eller fel. Om det var fel så meddelas vilken sorts fel det var. Se till att det är Modell-klassen som avgör vilket meddelande som ska ges. View-delen av programmet måste förstås presentera meddelandet för användaren. Den här extrauppgiften får man ta med i sitt program från början om man vill.Alternativuppgift:Gör ett femtonspel eller luffarschack (3x3 eller större) enligt samma princip som Hoppsansa-spelet, dvs med en Model-klass för logiken och en textbaserad VC-klass samt en grafisk VC. Den här uppgiften är ju lite större så den inkluderar direkt godkänt på Extrauppgift 1. Extrauppgift 2 är samma som för Hoppsansa.Glöm inte att be om handledarens underskrift på ditt kvittensblad när du är godkänd! Kvittensbladet finns för utskrift på kurshemsidan under Laborationer.
Sidansvarig: <ann@nada.kth.se>
|