OOP i Java - Obligatorisk uppgift 3:MinesweeperIntroduktionI uppgift 3 ska du göra en Java-applet som utgör ett litet spel - minröj. Syftet med laborationen är att praktiskt öva på att skapa lyssnare och därmed vidare händelsestyrd programmering. Dessutom ingår problemlösning av algoritmisk karaktär. Kraven på applettenI den här uppgiften skall du skriva ett enkelt spel som en Java-applet. Spelet går ut på att spelaren får se en matris med fyrkantiga brickor. Ett antal minor finns utplacerade på spelplanen (dolda för spelaren). Spelarens uppgift är sedan att hitta igen dessa minor. Genom att klicka på en ruta får spelaren veta hur många minor som finns vid angränsande rutor (om det finns några dvs). Finns inga angränsade minor så kommer programmet att leta sig vidare utifrån denna punkt till dess den endast hittar rutor som har angränsande minor. Fanns det en mina där spelaren klickade så har han/hon misslyckats och måste börja om från början igen. Spelaren har också möjlighet att markera en position som mina (i appleten nedan görs detta genom att man håller ner shifttangenten samtidigt som man klickar på rutan man vill markera). När alla minor är markerade och alla positioner som inte innehåller minor är undersökta, har spelaren lyckats. Du har frihet att utforma gränssnittet hur du vill, dock ska det gå att göra följande:
Ditt spel bör bestå av minst 10x10 rutor. Försök att göra spelet så generellt att det är lätt att ändra antalet, antingen via parametrar i HTML-koden eller direkt på sidan. Minorna slumpas ut vid spelets start. Du får själv bestämma hur många minor det skall finnas. I denna uppgift är det ett måste att utnyttja objektorienteringens fördelar och göra varje ruta till ett eget självständigt objekt. Objekten skall lämpligen kunna lyssna på musklick, rita sig själv (på rätt ställe) osv. Vi kommer inte att godkänna en vanlig funktionell lösning, dvs ett huvudprogram som manipulerar en matris med heltal i eller något liknande. Det är förstås tillåtet (kanske till och med lämpligt) att ordna rut-objekten i en matris internt i programmet, dock går det att tänka sig andra intressanta lösningar. Fundera noga på vilken arvshierarki som är lämplig. Fråga gärna handledarna om råd innan du börjar koda! Ett olämpligt val av hierarki och struktur kan göra uppgiften betydligt besvärligare än nödvändigt. Det är inte den grafiska framtoningen som är det viktiga, fundera i första hand på struktur på lösningen. Finns det sedan tid över så är det fritt fram att utöka med funktionalitet eller snyggare grafik Kom också ihåg att en applet inte har någon main-metod, så all kod som startar upp programmet läggs lämpligen i appletens init-metod. Redovisning
ExempelHär följer ett exempel på hur det skulle kunna se ut. För att markera en ruta håll ned shift samtidigt som du klickar. För kännedomLaborationen är framtagen av Johan Eliasson, specifikation har blivit uppdaterad av Claes Gahlin. http://www.cs.umu.se/kurser/TDBA54/SU02/ou/ou3/index.htm Ansvarig för sidan: Marie Nordström Senast ändrad 2002-07-02 |