Hexaflip. Analysis and Design Document. Version 2.0 α Last modified: Martin Larsson

Relevanta dokument
Fyra i rad Javaprojekt inom TDDC32

Kravspecifikation. Sammanfattning. Fyra i rad Javaprojekt inom TDDC32. Version 2.0. Datum Dokumentnummer

HexaFlip. Kravspecifikation

Projektdokumentation för Othello

1 Kravspecifikation Snake App

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

Nätverksprogrammering, EDA095

Detaljbeskrivning av Player

Projektrapport EDA095

ALEPH ver. 16 Introduktion

Lathund för EveryonePrint på ipad

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Användarmanual Wapspel

JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund Marcus Widblom Senast ändrad: 13 / 05 / 08

Det finns två varianter av inloggning den enkla varianten kräver inte något BankID/SMS utan bara ditt användarnamn och lösenord.

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Garantianspråk. Manual

Instruktion för applikation Var sitter känslan?

7,5 högskolepoäng. Objektorienterad systemutveckling I Provmoment: Ladokkod: 21OS1B Tentamen ges för: Lycka till! /Peter & Petter

Manual Administration digitala läromedel

Pidro Online handbok

Access till Centrum För Affärssystems Virtuella Affärssystemspark.

IT-system. BUP Användarmanual

Objektorientering: Lagring och livstid

Självbetjäning för arbetsgivare. Användarhandledning Kom igång med Arbetsgivartjänsten Behörighetsadministration

Sagaforms spelregler SCHACK, FIA MED KNUFF, BACKGAMMON, DOMINO

Brf. Otterhällan Information - Tvättider

Närvarorapportering. Ansvarig i Föreningen

Aktivitetsstöd Närvarorapportering. Ansvarig i Föreningen

7,5 högskolepoäng. Objektorienterad systemutveckling I. Lycka till! /Peter & Petter. Provmoment: Ladokkod: 21OS1B Tentamen ges för:

Aktivitetsstöd Ledare

ADAD-net. Användarmanual INDIVIDEN. Råbe och Kobberstad Februari 2010

Kortfattad instruktion för Crystal Reports. Kom i gång med Crystal Reports. Instruktion Crystal Reports 2014

Sannolikheten att vinna ett spel med upprepade myntkast

Handbok Fyra i rad. Martin Heni Eugene Trounev Benjamin Meyer Johann Ollivier Lapeyre Anton Brondz Översättare: Stefan Asserhäll

Tidrapporterings dokumentation

Kravspecifikation TDP005 Projekt: Objektorienterat system

Innehållsförteckning. Sidan 2 (24)

1. Ledare Hantera deltagare Rapporter Övriga menyer... 15

allt.cl Page 1 of 17 Date: torsdag 7 december 2006

Manual Sportident Onlinekontroll via GPRS

HI1024 Programmering, grundkurs TEN

Konfigurationer Videooch distansmöte Bilaga till Tekniska anvisningar

Introduktion. Skriv in användarnamn och lösenord

Särskild information om personalliggare Fröbergs RFID / Fingerprint (TM-600 Serien)

Administrationsmanual ImageBank 2

Installera din WordPress med 9 enkla steg

Introduktion till MySQL

Agenda. Objektorienterad programmering Föreläsning 13

STADSBYGGNADSFÖRVALTNINGEN. Aktivitetsstöd. Behörigheten Ledare. Datum: Version 2. Sidan 1 (17)

Brädspelet Mulan. Håkan Berggren, Magnus Ellisson, Lars Kristiansson, Cheng-Huei Kuo, Eva Ljunggren, Joakim Viker. Göteborg 1999.

E-tjänster. Innehåll LATHUND FÖR DIG SOM ÄR REKTOR ELLER PROVADMINISTRATÖR

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Manual Jourläkarschema Alingsås - Version 1.0

Projektuppgift: Kalender Martin Hultman marhu002 Patrik Karlsson patka843

Närvarorapportering. Ledare

Kom igång med lånad ipad

Genetisk programmering i Othello

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

1 Starta Internet Explorer och surfa till Ange användarnamn och lösenord för att logga in i bokningssystemet.

Kom igång med lånad ipad

Innehållsförteckning Användarmanual för Jetty Chat 1.0 2

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Aktivitetsstöd Behörighet - Ledare

3. Välj den sprajt (bild) ni vill ha som fallande objekt, t ex en tårta, Cake. Klicka därefter på OK.

SKYPE uppkoppling under SAAF årsmötet.

Hur kommer jag igång?

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

Fr om version ser inloggningen med HogiaID lite annorlunda ut i Hogias Ekonomisystem

MANUAL - ADMINISTRATION

Manual Administration digitala läromedel

Översikt över ResMed webshop

Projektuppgift - Gymmet

Installationsanvisning - Kopplingen mellan GK96 och golf.se -

INLOGGNING FASTIGHETSPORTALEN UTAN SMART PHONE (EXTERNA ANVÄNDARE)

EDA095 Nätverksprogrammering

Konfigurationer Video- och distansmöte Bilaga till Tekniska anvisningar

Lathund. Skolverkets behörighetssystem för e-tjänster. Rollen rektor

Handledning för Exder Mobile

Innehåll Information om hemkatalog och lagring av filer... 2 PC... 3 DAFGU-/GDA-dator, Windows

ANVÄNDARMANUAL. Revision 0

Manual för ansökan till Stiftelsen Kjellbergska Flickskolans Donationer

Manual för rapportering i Signe - Mätning av tillgänglighet inom första linjen

Lathundsinformation om hur funktionerna i laget.se fungerar och hur man använder dem

TDP Regler

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Instruktion för applikation Grundbok

Instruktion för applikation remanga

Malmö stad Fritidsförvaltningen. Ledare

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Game of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.

Handledning för att söka gymnasieutbildning i Dexter

Kom igång med lånad ipad

Svenska Ishockeyförbundet OVR Face-Off

Version 1.6 Utfärdare Anton Lundin

ETT TRÄFFSÄKERT VAL FÖR SKYTTEN. Skytteappen Logga. Två appar som hjälper dig i ditt skytte.

Digitala projekt rapport

Komma igång med Grid Player

Transkript:

Hexaflip Analysis and Design Document Version 2.0 α Last modified: 2009 04 18 Martin Larsson marla316@student.liu.se Carl Lindwall carli914@student.liu.se Detta dokument beskriver hur programmeringsprojektet HexaFlip skall konstrueras. Dokumentet är menat att finnas till hands som en hjälp för de människor som sedan skall omsätta idéerna till programkod. Dokumentet innehåller en klassbeskrivning, en beskrivning av hur programmet är tänkt att fungera i olika användarsammanhang samt en plan på hur spelet skall testas.

Innehåll Dokumentkonventioner...3 Klassdiagram...4 Klassbeskrivning...5 Game...5 Board...5 BoardTile...5 Tile...5 Player...5 GUIDrawer...5 NewUserDrawer...5 MyTilesDrawer...5 HighscoreDrawer...5 HexaStoreDrawer...5 MySQLSpeak...6 Connector...6 HostDrawer...6 JoinDrawer...6 TilePickDrawer...6 WaitingDrawer...6 SingleHexagonComponent...6 GameDrawer...6 WaitForInput...6 TurnWaiter...6 BoardComponent...6 Use case diagram...7 Interaktivitetsdiagram...7 Aktivitetsdiagram...8 Tillståndsdiagram...9 Spelbrädet...9 Spelarens spelomgång...9 Testplanering...9 Testutförande...10 MySQLSpeak...10 BoardComponent...10 Board...11 Connector...11 HexaStoreDrawer...12 GameDrawer...12 Game...12 Övriga...12

Dokumentkonventioner Varje textdokument i projektet ges ett namn och ett dokumentnummer som är datumet för den dag dokumentet först skapas (ÅÅÅÅ MM DD) samt ett versionsnummer som ursprungligen är 0.0 och sedan ökar på höger sida om punkten med ett steg i taget enligt 0.1, 0.2... 0.11, 0.12 etc. Varje gång ett dokument skickas in till ledningen för kursen TDDC32 nollställs höger sida om punkten och den vänstra sidan ökar med ett t.ex. 1.0, 2.0 etc. Efter granskning kommer dokumentnumret sedan fortsätta att öka på höger sida enligt tidigare. De diagram som presenteras nedan följer i någon mening UML standarden. All kommunikation i projektet kommer att vara på svenska. Ytterligare dokumentkonventioner kommer att tilläggas till detta dokument om och när behov uppstår.

Klassdiagram Nedan visas ett klassdiagram över de klasser som ingår i programmet HexaFlip.

Klassbeskrivning Game Denna klass innehåller main() metoden. Klassen innehåller variablerna för att styra nätverkskommunikation samt den grundläggande linjära koden för spelet. Förrutom detta innehåller den även funktioner för att rensa upp efter avslutat spel eller vid oväntat avbrott under en spelomgång. Game läser efter att användaren loggat in in de brickor som denne förfogar över med hjälp av MySQLSpeak. Board Klassen som beskriver ett spelbräde. Innehåller 25 BoardTile på vilka man kan läcka en Tile vardera. Innehåller metoder för att svara på om brädet är fullt och vem som är vinnaren. BoardTile Symboliserar en plats på spelbrädet där en Tile kan läggas. Innehåller pekare på angränsande BoardTiles. Tile En bricka. Ägs av en spelare och har olika styrkor på sina sex sidor beroende på vilken TileType den är. Player Klassen som innehåller spelarinformation. Sparar spelarnamn, brickor som spelaren äger, poäng spelaren har, etc. GUIDrawer Ritar upp både loginskärmen och huvudmenyn. Loginskärmen skapar en instans av NewUserDrawer om spelaren vill skapa en ny användare. Dessutom kommunicerar den med databasen vid inloggning genom användning av MySQLSpeak. Huvudmenyn innehåller alternativen; se egna brickor, highscore, hosta, joina, köpa brickor och avsluta. Samtliga alternativ skapar en instans av en annan Drawer klass som sedan hanterar respektive funktion. NewUserDrawer Ritar upp en skärm för att skapa en ny användare. Kommunicerar med MySQLSpeak vid skapandet denne. MyTilesDrawer Ritar upp en lista över de brickor spelaren äger samt ritar ut den bricka som spelaren har vald i listan. HighscoreDrawer Ritar upp en lista över de tio spelarna med högst poäng. Ber databasen om dessa med hjälp av MySQLSpeak. HexaStoreDrawer Ritar upp en butik där spelaren kan handla nya brickor för sina intjänade poäng. En lista över olika typer av brickor med tillhörande priser samt en förklarande utritning av den för tillfället valda brickan ritas ut samt tillhörande knappar med funktioner. Vid ett eventuellt köp används MySQLSpeak för att tillgodoräkna spelaren den nya brickan.

MySQLSpeak En klass utan konstruktor som innehåller funktioner för att kommunicera med databasen. Innehåller inloggningsuppgifter samt färdigformulerade SQL frågor. Connector Klassen som ansluter till motståndaren. Anropas från klasserna HostDrawer och JoinDrawer och anropar när en anslutning är upprättad klassen TilePickDrawer. HostDrawer Ritar en ruta där det står att man väntar på motståndaren som ansluter med Join Game. Fortsätter sedan med att skapa en Connector som väntar på en anslutning. JoinDrawer Ritar en ruta där man kan mata in motspelarens IP address och sedan skapar en den Connector som ansluter till denna address. TilePickDrawer Tillåter användaren att välja ut 13 brickor ur sina brickor för att använda under en spelomgång. Två listor en med spelarens samtliga brickor och en med de valda brickorna ritas ut samt tillhörande knappar för funktionsanrop. När valet är färdigt skapas en WaitingDrawer som ser till att motspelaren också valt klart sina brickor. WaitingDrawer Visar en ruta som talar om att spelaren väntar på sin motståndares val av brickor. Startar en WaitForInput som hanterar väntandet. SingleHexagonComponent Ritar ut en TileType med tillhörande hexagonform samt styrkor etc. Extendar JComponent. GameDrawer Hanterar en spelomgång genom att rita ut ett interface med en spelplan och spelarens brickor. Då spelaren väljer att lägga ut en bricka eller när den TurnWaiter som väntar på motståndaren inte väntar längre utförs den spellogik som krävs varefter det hela börjar om igen. När brädet är fullt delas poäng ut genom MySQLSpeak och sedan ritas en ny huvudmeny ut. WaitForInput Väntar på att motspelaren väljer klart sina brickor innan en spelomgång. När detta kriteria är uppfyllt startas en GameDrawer. TurnWaiter En tråd som väntar på att motståndaren skall skicka den bricktyp och plats han valt. BoardComponent Ritar ut ett helt spelbräde med olika färger för de olika spelarna. Extendar JComponent.

Use case diagram Användaren kan efter att denne loggat in välja bland alternativen: köpa brickor; se på highscoren; se egna brickor; hosta; joina och; avsluta spel. När spelaren väljer att starta ett nytt spel kan denne välja att hosta eller joina ett spel som någon annan hostat. Spelarna måste välja olika alternativ en skall hosta och den andra joinar den första. Efter att en anslutning upprättats kommer spelarna att få välja vilka brickor de skall använda och dessa placeras sedan ut under spelets gång. Den spelare som till slut vinner får poäng för sin vinst. Interaktivitetsdiagram Vi anser inte att dessa behövs I vårt projekt som är av ringa storlek.

Aktivitetsdiagram Aktivitetsdiagrammet beskriver en spelomgång för en av spelarna vilken refereras till som mänsklig spelare ett. Spelaren får först logga in i spelet och eventuellt skapa en ny användare. När detta är gjorts visas huvudmenyn där spelaren har ett antal val. Om spelaren väljer HexaStore visas butiken där spelaren kan spendera sina intjänade poäng för att köpa nya brickor. Han eller hon återvänder sedan till huvudmenyn. På samma sätt kan spelaren välja att få sina egna brickor visade i tabellform under valet se egna brickor. När ett nytt spel skall startas väljer spelaren om han eller hon vill serva eller ansluta till ett spel. Motståndaren gör motsatsen och den som ansluter till servern får skriva in serverns IP address. Sedan får spelarna välja 13 av sina brickor att spela med och efter det drar spelet igång. Spelarna turas om att lägga brickorna på brädet och när brädet är fullt koras en vinnare som får poäng varefter båda spelare återvänder till huvudmenyn.

Tillståndsdiagram Spelbrädet Brädet kan stå i tre olika lägen; tomt, delvis fullt eller fullt. GameDrawer anropar brädets isfull() funktion för att kolla när brädet har nått läget att det är fullt och då exekveras den kod som skall följa. Brädet återvinns ej utan ett nytt bräde skapas varje gång en ny spelomgång skapas. Spelarens spelomgång Spelaren kan antingen vara i läget min tur eller i läget väntar på motståndaren. När spelbrädet har blivit fullt avgörs vem som vunnit och spelaren kan då hamna i lägena förlorare eller vinnare. Testplanering Tester utfördes kontinuerligt under utveckligsprocessen för att snabbt kunna rätta till eventuella fel. Modulerna testades tillsammans med varandra av diverse små testprogram som skrevs för endast detta syfte. Informationen i databasen kollades också regelbundet så att den stämde med det som

förväntades. Dessutom genomfördes en rad betatester av olika vänner till de medverkande i projektet. Resultatet av testerna finns att läsa i testprotokollet. Testutförande MySQLSpeak Det skall vara möjligt att hämta och äntra värden i databasen Registrering av ny användare funkar problemfritt. 13 slumpvis utvalda brickor ges till spelaren. Köpt bricka i HexaStore läggs till utan problem Vunnen spelomgång belönas med två poäng, som förväntat. Vid ny spelomgång hämtas egna brickor från databasen, utan problem. Det skall ej gå att registrera ett befintligt konto Befintligt konto går ej att registrera. Input av rätt användarnamn men fel lösenord skall generera felruta Som förväntat. Dock loggas användaren in om han skriver rätt användarnamn, men lägger till ett godtyckligt antal mellanslagstecken efter korrekt lösenord i lösenordsfältet. BoardComponent Linjerna ritas ut på ett grafiskt acceptabelt sätt. De blir inte sneda Efter mindre tweaking arbete blir det visuella som förväntat Att färger representeras på rätt sätt dvs. blå färg för egen bricka och röd färg för motståndarens bricka. Att färgen ändras då någon spelare vinner över motspelarens bricka

Fungerar felfritt. Board När spelare lägger ut en bricka som på given sida är starkare än närliggande motståndarbricka, skall närliggande motståndarbricka flipper över och tillfalla spelaren. Vid lika värde skall ingenting ske. Funger som sig bör. Att spelet avslutas när spelare 1 lagt sin trettonde bricka, och att spelet anger vem som är vinnare. Som förväntat. Skall ej gå att lägga bricka på icke ledig position Spelare som försöker sig på detta får felmeddelande Spelet skall ge felmeddelande då en spelare matar in konstigt värde, dvs en inputsträng annan än [1,25] Såväl för blanka, som icketillåtna värden (bokstäver, symboler och siffror) kommer ett felmeddelande upp. Connector Personen som skriver in ett ip till en hostande motpart skall kunna connecta Fungerar felfritt. Såväl inom LAN med lokala adresser som WAN. Personen som hostar och väntar på en anslutande motspelare, tas till brickväljarrutan när då skett

Oklanderligt. HexaStoreDrawer Det skall ej gå att köpa en bricka som man ej har råd med Mycket riktigt kommer ett felmeddelande upp När man köpt en bricka skall relevant andel poäng dras från användarens konto. Dock skall highscorevärdet förbli detsamma Fungerar väl. GameDrawer Turhanteringsalgoritmen (varannan gång) fungerar korrekt och intuitivt Ja. Vinnaren får två poäng, vilka läggs in i databasen medelst MySQLDrawer Nemas problemas. Game Att variablerna töms efter en spelomgång (ej gammal information ligger kvar) Gav till en början konstiga värden då vi glömt skriva kod för nollställande av vissa variabelvärden. Vid senare iteration fungerar allt fläckfritt. Övriga Resten av modulerna testades kontinuerligt i utvecklingsprocessen