Brädspelet Mulan Håkan Berggren, Magnus Ellisson, Lars Kristiansson, Cheng-Huei Kuo, Eva Ljunggren, Joakim Viker Göteborg 1999 June 8, 2001 1
Innehåll: 1. Inledning 2. Projektbeskrivning 3. Programflöde 4. Programstruktur 5. Användarmanual 6. Referenser 7. Programdokumentation June 8, 2001 2
1.0 Inledning : Vi ville göra ett brädspel på datorn för att underhålla barn från 3-6 år. Vi fick idén till det hela från ett brädspel byggt på Disney-filmen Mulán. Filmens handling är hämtad från en gammal kinesisk sägen om en flicka som skall dra ut som soldat i ett krig istället för sin far, som har blivit gammal. För att göra det är hon tvungen att klä ut sig till soldat, och dölja sina kvinnliga attribut. Det framkom snart att den stora biten i det här projektet var grafiken. Vi utgick ifrån att ett grafikpaket bestod av rutiner som skulle anropas av spelpaketet, men det var ett felaktigt antagande. Grafikpaketet visade sig vara ett paket som vill ha kommandot hela tiden, och det visade sig svårt att få det att kommunicera med vår bit. En parallell programstruktur visade sig vara lösningen på problemet. June 8, 2001 3
2.0 Projektbeskrivning : Under utvecklingsarbetet av brädspelet Mulan förde vi anteckningar för att dokumentera det som gjordes, och erfarenheter vi fick. Förlagan till Mulan är ett spel utgivet av Disney. Målgruppen är barn 3-6 år. Spelet går ut på att slå en tärning och flytta en bricka på en spelplan, bestående av fem olika slags rutor, en start- och en mål-ruta. Rutorna är Neutral, på vilken inget händer. Soldat, på vilken man förvandlas till soldat, och får flytta framåt. Civil, på vilken man förvandlas till civil och får flytta bakåt istället. Häst, på vilken man får hoppa fram till närmast framförvarande häst. Drake, på vilken man kan vända sin egen eller någon av motståndarnas brickor. Till vårt förfogande stod X-Forms, [NF] [XF], ett paket med möjligheter att öppna fönster med knappar, rutor, hissar, och diverse annan grafik. Paketet erbjöd ett användargränssnitt där man kunde definiera s.k. callback-procedurer, som anropas när användaren trycker ner knappar och drar i hissar etc. X-Forms har en s.k. event-loop, som kontinuerligt kollar av fönstret, och vad som händer där. När vi började fundera på spelalgoritmen tänkte vi oss att den skulle vara i form av en loop som avslutas när någon går i mål, och en placeringslista (rangordning) presenteras. Vi arbetade ut algoritmen, och testade spelet digitalt. Vi lyckades även få datorn att spela. Vårt problem när vi gjorde spelet bestod i att få vår färdiga spelloop att kommunicera med X-Forms. Detta löste vi m.h.a. parallellprogrammering. En samordnare håller koll på allt som händer i de olika delarna Spelpaketet och Mulan. (Se fig. 1 & 2) Samordnaren inväntar impulser ifrån de två delarna, och förmedlar data mellan dem. Initialt ritar vi upp ett bräde, och tar reda på hur många spelare som vill vara med. Datorn anger en slumpad ordning på spelarna och sätter ut färger. Spelet går in i spel-loopen. Loopen går igenom alla pjäser i tur och ordning. Spelaren får kasta tärning, och flytta x antal rutor. Varje ruta har en egenskap, som erbjuder spelaren olika möjligheter att förändra spelets förlopp. Helt klart var den stora biten i detta projekt grafiken, och problemen att sätta sig in i det ganska expansiva paket som X-Forms är. Våra delmål på vägen var bl.a. att i ett stadium kunna spela spelet digitalt d.v.s. utan grafik. Det målet nådde vi mycket snart, då själva programidén inte var så komplicerad, ens att få datorn att spela. Att få det att se ut som vi ville var värre. Dessutom hade vi diskuterat en del lösningar lite i blindo, då ingen exakt visste vad X-Forms kunde och inte. June 8, 2001 4
3.0 Programflöde : Spel-paket Samordnare Mulan rita bräde { callbacks ta in spelare { callbacks rita ut slumpad ordning { callbacks Spel-loop Loop eller eller flytta pjäs slå tärning m.m. { Fig. 1 : Programmets förlopp June 8, 2001 5
4.0 Programstruktur : Spel Mulan Samordnare Tillstånd Grafik Callbacks Fönster Fig. 2 : Uppbyggnad och beroenden av programmets olika enheter Spel : Innehåller spelalgoritmerna och spelmotorn Mulan : Initierar spelplanen (användargränssnittet) Samordnare : Håller reda på alla objekt och processer Tillstånd : Talar om vilka knappar som får tryckas, och när. Grafik : Uppdaterar spelplanen under spelets gång Callbacks : Callbackrutiner som anropas när användaren trycker på en knapp eller drar i en meny.. Fönster : June 8, 2001 6
5.0 Användarmanual : 5.1 Hur man använder Mulan : Antal spelare väljes i menyn Spelare Man kan välja att spela mot datorn om man vill. Spelet startas genom att trycka på knappen Start. De fyra rutorna nere till höger visar kön (spelarnas ordning): den som står på tur att flytta står längst till vänster. Tärningen slås genom att trycka på bilden. Tärningen rullar. Man flyttar sin bricka genom att trycka på den ruta man skall flytta till. Hamnar man på en häst får man flytta fram till nästa häst (genom att trycka på nästa häst.) Hamnar man på en drake får man vända på någon av brickorna. Man kan välja att inte vända någon alls. Man vänder en bricka genom att trycka på den rutan i kön som har samma färg som den brickan man vill vända. Om brickan är glad representerar den en soldat, och om den är ledsen en civil. 5.2 Spelregler : Alla spelare börjar i ruta ett som soldater. Träningen slås, och man flyttar så många steg som tärningen visar. Dubbelslag för sexor är ej tillåtet. Hamnar man på en civil-ruta blir man civil. Hamnar man på en soldat-ruta blir man soldat. Hamnar man på en häst får man flytta till nästa häst i ordning. Hamnar man på en drake får man vända en motståndare eller sig själv. Man kan välja att inte vända någon. Den som först tar sig i mål vinner, och de andra hamnar i den ordning de står på spelplanen. June 8, 2001 7
6.0 Referenser : [NF] N-Forms : en Ada-konvertering av X-Forms http://www.dd.chalmers.se/~f93stli/arbete/nforms/nforms.ads [XF] X-Forms : ett grafiskt användargränssnitt skrivet i C http://bragg.phys.uwm.edu/xforms Reglerna och idén : Hämtade från Disneys spel. June 8, 2001 8