• No results found

HexaFlip. Kravspecifikation

N/A
N/A
Protected

Academic year: 2022

Share "HexaFlip. Kravspecifikation"

Copied!
7
0
0

Loading.... (view fulltext now)

Full text

(1)

         

HexaFlip 

Kravspecifikation 

   

Dokumentversion 1.0 

Martin Larsson marla316@student.liu.se  Carl Lindwall carli914@student.liu.se 

Senast modifierad 2009‐02‐17 

(2)

 

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. 

(3)

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   

(4)

 

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 

(5)

• 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 IP‐

nummer 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 

(6)

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 MySQL‐

databas. 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. 

(7)

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!”. 

References

Related documents

Detta får också konsekvenser för hennes spelande: hon spelar vanligen inte så länge sonen är vaken, och om hon trots allt någon gång gör det kan hon ändå inte göra det fullt

Förutom dessa tecken har jag också insett att i den homoerotiska konsten där sexuella handlingar förekommer, från framförallt det Osmanska riket men även annan muslimsk

Jag har länge skrivit pop-musik till andra artister, ofta i session tillsammans med andra låtskrivare, men varje gång jag försökt skriva musik som jag själv ska framföra har det

Detta resulterar i att elever får möjlighet att styra över sin egen plats, finna vilken betydelse platsen har för deras individuella skapandeprocess och lära sig förstå dessa

Man ser också att olika typer av spel använder sig av ledmotiv för att få sina spel att uppnå olika typer av effekter, vare sig det är för att bara ha ledmotivet kopplat till

konstverken som nämnts ovan från 1800-talet är vikingarna och hornen på hjälmarna, det finns nämligen inte några fynd som visar att vikingar hade horn eller vingar på hjälmarna

Metoden gick ut på att deltagarna fick lyssna på två manliga eller två kvinnliga röster och sedan välja vilken kandidat (röst) de skulle ha röstat på till

Detta är en av de punkter Matt Barton tar upp i How’s The Weather: Simulating Weather in Virtual Environments (2008), han skriver “Is weather one of those