HexaFlip. Kravspecifikation



Relevanta dokument
Projektrapport EDA095

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

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

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

75059 Stort sorteringsset

Slutrapport för JMDB.COM. Johan Wibjer

PROJEKTRAPPORT EDA095 NÄTVERKSPROGRAMMERI

EDA095 Nätverksprogrammering

Åtkomst och användarhandledning

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Fyra i rad Javaprojekt inom TDDC32

Laboration 2: Ett kommunikationssystem

Spelregler. 2-6 deltagare från 10 år. En svensk spelklassiker

SPELREGLER. 2-4 deltagare från 10 år

ZACI är den programvara som är navet i kommunikationen när det gäller kortbetalningar.

Användarmanual HOIF.org

Våga Visa kultur- och musikskolor

Handbok Fyrkanter. Matt Williams Granskare: Eugene Trounev Översättare: Stefan Asserhäll

VIDEODAGBOKEN. Individuellt Mjukvaruutvecklingsprojekt. En dagbok i videoform online. Robert Forsgren (rf222ce) UD

Årtalet: Platsen: Amerikanska västern.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Tentamen i Objektorienterad programmering

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Beskrivning av hur du ansluter en E-terminal från Beijer Electronics till HC900 via Ethernet så att denna kan visa och manipulera data i HC900.

Chapter 3: Using Classes and Objects

Projekt i Nätverksprogrammering. MegaNet Handledare: Pierre Nugues

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

Projektpresentation Wapspel

Space Invaders - Slutrapport

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål?

MIK Fotboll 5-mannaspel 2011

Elektroniskt informationsutbyte mellan arbetsgivare och Försäkringskassan. Information om filöverföring

1 Skapa Tabell Skapa Relationer Redigera Relationer Redigera Fält i Tabell Lägga till Poster i Tabell...

STÄNG AV FÖNSTER. Regler FLAGGSPECTRUM I FLAGGSPECTRUM II FLAGGSPECTRUM III FLAGGSPECTRUM STJÄRNSPEL

Inspektion Användarmanuel

REGLER TILL COERCEO. Language: English / Svenska

Grupphantering i Blackboard

Dags att börja tävla?

Musen Martina vinner en baktävling

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Att komma igång med FirstClass (FC)!

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Mobilapplikation htp:/aktjon.argentum.se/activitymobile

Lathund GUL Lärare. Allmänt. Hur du presenterar Dig själv för kursdeltagarna. Hur du lägger upp din kontaktlista

Spelet i sig är inte avancerat men projektet ställer en del krav på implementationen bland annat:

Komma igång med Eventor

Slutrapport YUNSIT.se Portfolio/blogg

Det första steget blir att titta i Svensk MeSH för att se om vi kan hitta några bra engelska termer att ha med oss på sökresan.

Kursutvärdering Ämne: SO Lärare: Esa Seppälä/Cecilia Enoksson Läsåret Klass: SPR2

IT för personligt arbete F2

Det ska endast finnas två bilder av samma typ på spelplanen.

Lärande. Värdegrund. Mitt namn: Min födelsedag: Reflektion. Min familj: Mina intressen: Mina kamrater: Övrigt: Vad tycker jag om fritids?

QlikView - Lathund för Flödesmodellen bas

En guide till FirstClass

Konsten att leda workshops

Användarmanual CallPad och VoicePad

KREATIVA BÖNESÄTT. en praktisk hjälp till dig som är ledare! Initiativtagare till materialet: Maria Melin

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Objektorienterad programmering

Survey&Report steg för steg: Skapa rapport

ALEPH ver. 16 Sökning

Enkät Plantskolan Hammarby IF FF vinter 2015/ Har din son deltagit som? 2. I vilken åldersgrupp har din son deltagit?

Post Mortem för Get The Treasure!

Elisabeth Bejefalk IT-Assistent Avesta kommun

Tilldelning av roller + Meddelanden i MinPlan

Guide till hur jag ansöker i Idrottslyftet 2014 till projekt: Damhockeysymposium

Lärarguide vid grupparbete

ZÄTA FÄRGCHANSEN CHANSE 58:AN UTSPELET CHANSEN TREKLÖVERN ZÄTA CHANSEN 58:AN. Spelmeny ANGERED - ALINGSÅS.

Lathund, till Photo Story, för skräckslagna lärare

KiVa Skola situationskartläggningen 2016 sidan 1/31. KiVa Skola situationskartläggningen 2016 sidan 2/31

Piff och Puffs Chatsystem

Föreläsning 7. Grafiska användargränssnitt

LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för Ekonomisk och Industriell Utveckling Ou Tang

Uppgift 1 (Oläsliga krypterade meddelanden)

Widgets i DynaMaster 5 Golf

Projektarbete 2: Interaktiv prototyp

SAFE WORK. Instruktioner till personal - för dig som arbetar på ett entreprenadföretag

EM2050 RotoBolt Elektroniskt Svängregellås. BRUKSANVISNING för ANVÄNDARE och MANAGER_EL1+9/S (EM2050) Att Öppna: Exempel: jjjjjj.

Objektsamlingar i Java

Instruktion för att slutföra registreringen

Användarhandbok OE/OSSpeaker V.10.3

Manual Jourläkarschema Närhälsan V7 - Version 1.0

Projektdokumentation för Othello

Bli innovativa. På riktigt.

Gesäll provet Internetprogrammering I. Författare: Henrik Fridström. Personnummer: Skola: DSV

Många har fått lära sig att inte ta skit från någon. Annika R Malmberg säger precis tvärtom: Ta skit!

Studentguide vid grupparbete

LITEN HANDLEDNING TILL E-TJÄNSTER I BJUVS KOMMUN. Så här ser inloggningssidan ut. Börja med att skriva ditt användarnamn och lösenord i rutorna.

räkning av antal, första lösandet av räkneuppgifter, matchning språkutveckling genom sortering och hopsamling av träpinnar

ALEPH ver. 18 Sökning i webbkatalogen

UPPGIFT 1 KANINER. Håkan Strömberg 1 Pär Söderhjelm

Nätverksprogrammering, EDA095

Manual för studerande Version 2.2.0

Manual - årlig inrapportering av fisketillsyn i Åtgärder i Vatten till Havs- och vattenmyndigheten Innehåll

En handledning för studerande på Högskolan Kristianstad

Artiklar via UB:s sö ktja nst

Digitalt lärande och programmering i klassrummet. Introduktionsworkshop - Bygg ett akvarium i Scratch

Handbok Hoppande kuben. Ian Wadham Eugene Trounev Matthias Kiefer Översättare: Stefan Asserhäll

Planeringsspelets mysterier, del 1


Transkript:

HexaFlip Kravspecifikation Dokumentversion 1.0 Martin Larsson marla316@student.liu.se Carl Lindwall carli914@student.liu.se Senast modifierad 2009 02 17

Sammanfattning Detta dokument skall ligga som grund i form av kravspecifikationen för spelet HexaFlip som utvecklas av två studenter vid Linköpings Tekniska Högskola. Dokumentet skall hjälpa med att få en överblick över vilka delar som ingår i projektet och hur dessa skall utformas. Syftet med detta projekt är primärt att skapa ett spel där man kan utmana andra spelare för att sedan med hjälp av åtta utvalda hexagonala brickor slåss om att dominera ett bräde. Sekundärt är syftet med projektet att lära tidigare nämnda studenter om JAVA programmering samt att ligga som underlag för examinering. Projektet är ett projekt i kursen TDDC32 Design och Implementation av programmodul i JAVA och skrivs på ingalunda vis för att tjäna ett kommersiellt syfte; projektet görs enbart för att utveckla studenternas förmåga inom projekt och objektorienterad programmering. Denna rapport består av en inledning, dokumentstandarder, systembeskrivning, användargränssnittet, systemfunktioner, ickefunktionella krav, lagring av permanent data samt avgränsningar. Dessutom finns ett användarscenario givet på slutet.

Innehållsförteckning Inledning...4 Dokumentstandarder...4 Systembeskrivning...4 Användargränssnitt...4 Systemfunktioner...5 Obligatoriskt...5 Nätverkskommunikation...5 Spelalgoritmer...5 ASCII grafik...6 Brickor, spelare och spelbräde...6 Valbart...6 Grafik med biblioteken jaxax.swing.* och java.awt.*...6 Databaskommunikation...6 Ickefunktionella krav...6 Lagring av permanent data...6 Avgränsningar...7 Användarscenario...7

Inledning Man har på senare år kunnat ana en trend där mer och mer datoranvändare efterfrågar roliga, dock simpla spel med hexagoner. Denna våg av hexagonrelaterade behov har inte ens kunnat tillgodoses av Amerikas försvarsdepartement som istället byggde en pentagon. Ett hörn mer eller mindre kan förefalla synnerligen irrelevant säger kanske kritikerna och så även tidigare amerikanska försvarsministrar men skall sanning sägas och det skall den kan ett hörn spela en avgörande skillnad. Tänk er en segelbåt, vars segel består av två hörn istället för tre. Detta segel skulle då inte ha någon area och vara oförmögen att med vindens hjälp framdriva fartyget. Som tidigare nämnts består spelets grundidé i att två kombattanter sitter framför varsin dataskärm, anslutna till varandra via nätverk. Spelet tar sin början i att de framför sig ser ett spelbräde med 5x5 stycken tomma hexagoner, och har 13 respektive 12 brickor, också sexkantiga, var på sin hand. På varje bricka finns 6 värden, alla inom spektrat [1,10], tillhörande vart och ett av hexagonens sidor. Spelarna turas om att lägga ut sina brickor på tomma områden på spelplan. I det fall en lagd bricka hamnar sida i sida med en av motståndarens brickor, jämförs den nyligen lagda brickans värde på relevant sida med motståndarens bricka. Har den nyligen lagda brickan här ett värde högre än motståndarens, tillfaller brickan spelaren vars tur det är. När alla 25 brickor lagts ut, vinner spelaren som har mest ägda brickor på spelfältet. Som pris får vinnaren välja en valfri av motspelarens brickor, som tillfäller hanns eller hennes samling. Dokumentstandarder Text skrivet med typsnittet Courier New (italic) i detta dokument avser kod. Med brickor avser vi de hexagonala spelbrickor som spelaren samlar på sig och använder vid spel mot andra spelare. Systembeskrivning Systemet baseras på en javaapplikation vilken fungerar som såväl klient som server. Denna applikation innehåller all spellogik, grafik samt regler för nätverksöverföring. Vid exekvering av applikationen kontaktas en mysql server som innehåller all data om användare och dess brickor samt highscore. Under spelets gång efterfrågas vederbörlig data av klienterna och databasen uppdateras med de förändringar som skett i brickinnehav samt poäng efter att en spelomgång tagit slut. Användargränssnitt Användargränssnittet det som användarna de facto ser på skärmen, kommer genereras medelst biblioteket javax.swing och alla dess underbibliotek. Vid start av klienten möts användaren av en login ruta, där han bes mata in sitt användarnamn och lösenord, vilket verifieras mot en central

databas. Matchas ej användarnamnet genereras ett nytt användarkonto. Efter inloggningsproceduren möts användaren av huvudmeny med följande klickbara knappar: Nytt spel > Host (klienten öppnar porten och lyssnar efter inkommande part) > Join > Mata in IP (klienten ansluter till öppen port hos hosten) Mina brickor (Kopplar upp sig mot central databas och låter användare se sina brickor) HexaStore (Låter spelaren inhandla nya spelarbrickor med poäng tillskansade från vunna tidigare spelomgångar som betalningsmedel) Highscore (Kopplar upp sig mot central databas och visar vilka spelare som vunnit flest omgångar av spelet) Om spelet (Visar versionsnummer, disclaimers och författare) Avsluta (Avslutar klienten) När spelet börjar, möts spelaren av den tomma spelplanen till vänster, och ser dessutom en lista på tillgängliga brickor till vänster. Klickar man på en specifik bricka, ser man grafiskt denna brickas disposition. På varje tomt fält på spelplanen visas ett nummer [1,25], och spelarna matar i tur medelst knappsatsen på tangentbordet in på vilken plats de vill lägga sina brickor. När en bricka lagts visas detta på spelplanen medelst att området ändrar färg och varje värde associerat till respektive hörn skrivs ut. Lyckas en spelare vinna över en av motståndarens lagda brickor syns detta genom att denna bricka ändrar färg till den övervinnande spelarens färg. Inputtar spelaren ett värde för en position som antingen är ogiltig eller redan tagen meddelar klienten detta genom en textsträng. När spelomgången är över får båda spelarna information om vem som vann, och båda spelarna har möjlighet att spela en nu omgång. Väljer minst en av spelarna att inte göra så, skickas man tillbaka till huvudmenyn. Systemfunktioner Avser de olika delarna av koden och vilket syfte de tjänar. De obligatoriska delarna skall finnas med vid projektets slut, de valbara delarna implementeras i mån av tid. Obligatoriskt Nätverkskommunikation Klienten skall kunna kommunicera med andra klienter under en match mellan två spelare. En spelare skall vara den som hostar och den andra spelaren skall ansluta till den första med hjälp av dess IPnummer och port. Information utbytes sedan växelvis till det att en spelare vunnit och då skall nätverket även kommunicera vilken bricka som den vinnande spelaren väljer att få av den förlorande spelaren. Spelalgoritmer Spelalgoritmerna innefattar allt som har med själva spelmekaniken att göra. Denna innefattar regler för hur man vinner över en annan spelares bricka, att man inte kan lägga en bricka där en annan

bricka redan är lagd, att man inte kan spela ett spel med mindre än 13 brickor, vad som händer om man får mindre än 13 brickor och hur man betalar med poäng för nya brickor. ASCII grafik Spelet kommer preliminärt att ritas med ASCII grafik för att snabbt kunna framställa ett körbart program. Tanken är dock att spelet skall ritas med biblioteken javax.swing.* och java.awt.* för att säkerställa användarvänligheten. De komponenter som skall ritas ut är: inloggningsrutan; huvudmenyn; spelbrädet med tillhörande interface; highscorelistan; visning av spelarens brickor; information om spelet; samt HexaStore (brickbutiken). Brickor, spelare och spelbräde Klasserna och funktionerna för att söka efter, lägga till och ta bort brickor, spelare och spelbräden i listor och variabler måste ingå för att spelet skall kunna köras. Listorna måste därför också definieras. Valbart Grafik med biblioteken jaxax.swing.* och java.awt.* Om tid finns kommer ett grafiskt interface att skapas för att höja graden av användbarhet. Detta grafiska bibiliotek skall ersätta den ASCII grafik som först används för att rita de olika delarna av spelet. Databaskommunikation I mån av tid kommer även en databas med användare och vilka brickor de äger att skapas samt kommunikationen med denna att kodas. Databasen kommer att innehålla tre tabeller: användare; brickor; och highscore. I tabellen användare kommer fälten SpelarID, Namn, Lösenord, Poäng och Spenderade Poäng att finnas. I tabellen brickor kommer fälten SpelarID, BrickID och Antal att finnas. I tabellen highscore kommer de tio spelarna med mest poäng att sparas för snabb access i fälten SpelarID, Namn och Poäng. Ickefunktionella krav Spelet skall i god JAVA anda fungera i både UNIX och Windowsmiljöer och skall vid korrekt användande inte resultera i krashar. Spelet skall kunna kommunicera med MySQL servern från vilken terminal som hellst under förutsättningen att MySQL servern är online och att tid fanns att implementera denna funktion i spelet. Lagring av permanent data Permanent data kommer att lagras på två olika ställen. De olika typer av brickor som spelaren kan samla på sig kommer att finnas lagrade i själva programkoden i form av en array av objekt. Spelarna med all tillhörande information samt alla brickor som ägs av spelare kommer att lagras i en MySQLdatabas. Häri kommer även topp tio på spelarna med flest poäng att sparas. Detta gäller bara om tid fanns att implementera databasen som en del av spelet.

Avgränsningar Projektet avser inte att implementera något slags stöd för kommunikation spelare emellan av något slag. Projektet avser heller ej att låta användaren bygga vidare på eller modifiera spelet. Spelet kommer inte att ha någon central server utan all kommunikation sker direkt mellan klienterna. Spelet kommer att sakna vissa skydd för användarfel vilket kan resultera i att inkorrekt användning av spelet gör att det krashar. Användarscenario Kalle och Pelle (fiktiva personer) har bestämt sig för att spela ett spel HexaFlip. Kalle som har spelat förut loggar in och hostar ett spel. Pelle loggar sedan in och skriver in Kalles IP address i det fält som presenteras då han klickar på Join Game. Nu får båda spelarna välja vilka brickor de vill använda och därefter börjar spelet. Efter ett tag vinner såklart Kalle och han väljer en av Pelles brickor som trofé. Pelle som nu har mindre än de 13 brickor han initialt fick får en ny bricka slumpad till sitt förfogande och sedan återgår båda spelares klienter till huvudmenyn. Kalle har nu så många poäng att han kan köpa en ny bricka varvid han går in i HexaStore och handlar en av de brickor som presenteras för honom. Pelle kollar samtidigt in vilken bricka han fick slumpad till sig efter förlusten och sedan highscoren och ser att Kalle nu har placerat sig på femte plats. Gud, vilket fantastisk roligt spel! tänker Kalle. Jag ska spela massor och komma in på highscoren jag med minsann!.