Designspecifikation den 13 december 2007



Relevanta dokument
Projektrapport EDA095

Space Invaders - Slutrapport

Sta. Sta. Sta. ulricaelisson.se. Scratch STARTA PROVA KODEN KÖR! TIPS. Rita en ny sprite. Eller välj en från mappen

Detaljbeskrivning av Player

Space Shooter. Projektrapport i kursen Avancerad C/C++ (DVA303) vid Mälardalens Högskola av Lars Lindqvist och Niklas Nolte

Objektorienterad programmering

Lära känna skrivbordet

Resurscentrum för kommunikation Dako SymWriter. Minimanual

TDP005 Projekt: Objektorienterat system

Digital Display VDS / Bus2

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: minuter beroende på variant Material: TI-82/83/84 samt tärningar

LÄSLANDET - BOKSTÄVER OCH ORD

Resurscentrum för kommunikation Dako SymWriter 2. Minimanual

Upptäcka och analysera. Qlik Sense 1.1 Copyright QlikTech International AB. Alla rättigheter förbehållna.

Lagadministration Linda Emterby

Nallelek Lärarvägledning

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

19. Skriva ut statistik

Användarmanual Körjournal för iphone

Seriehantering. [En enkel guide för hur du som serieadministratör använder SVEMO TA.]

Kravspecifikation TDP005 Projekt: Objektorienterat system

Användarmanual Cartesia GEO Manager

Användarmanual för nya funktioner

Microsoft Windows 8 Grunder

Programmering för språkteknologer II, HT2014. Rum

Addera ett nytt Arranger Track. Skapa Arranger Events

Switch Driver 5. Programvara för Radio Switch, JoyBox och JoyCable. Sensory Software

Guide Flytta / Kopiera / Ta bort en kategori

ViTex snabbguide. 1. Inläsning till ViTex från scanner eller PDF Läs in text via scanner Läs in text från en JPEG-bild eller ett PDF-dokument

Att göra spel med Game Maker. Rum. Grundläggande delar. Gamemaker, dagens föreläsning. Programmeringsmodell

Kortkommandon Allmänna i Windows 7

Projektarbete 2: Interaktiv prototyp

WINDOWS 8.1. Grunder

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

Får jag be om ordet!

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

Övningar Dag 2 En första klass

2. Komma igång Skapa grupper och elever Skriv också ut sidan 13 så att eleverna har en snabbguide till programmet.

MagiCAD El & Rör. Varför MagiCAD och varför 2D/3D? Kollisionskontroll. MagiCAD El

Innehåll. WordWall låter dig som pedagog skapa övningar, aktiviteter och presentationer med några enkla klick.

InPrint. Grunderna för hur du kommer igång och arbetar med Communicate: InPrint. Habilitering & Hjälpmedel

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Guide till Lidingö stads app (Netpublicator) för digitala nämndhandlingar

Snabbguide AlphaSmart NEO2

Att använda pekare i. C-kod

E-POST3 Ett lättanvänt e-postprogram med stöd för talsyntes

Patrik Calén

Introduktion till arv

Nordic Business Monitor

Handbok Kstuds. Tomasz Boczkowski Granskare: Eugene Trounev Översättare: Stefan Asserhäll

Easy Planning blir med dessa funktioner ett mycket kraftfullt verktyg för planering. Vi hoppas att våra kunder ska få stor nytta av programmet.

Användarhandbok för e-curia

Handledning för Artikelimport

Färgklövern. Färgklövern är gjord 1998 i samarbete mellan Datateket i Linköping och Hargdata AB i Linköping.

E-post för nybörjare

Innehållsförteckning. Manual WebCT

Referens till. WeavePoint 6 Mini

Arbeta effektivare med OS X

CdsComXL. Excel-tillägg för hantering och analys av CDS-data. ComXL-020/S, Stråk Stråk Stråk Stråk

Uppdaterad Enkel manual tävlingsanmälan i friidrottens nya IT- system.

Guide för pdf-formulär

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Snabbgenomgång. Windows Live Movie Maker

Föreläsning 6: Introduktion av listor

SurveyXact version 6.10

Manual. Användargränssnitt

Tentaupplägg denna gång

TSBK 10 Teknik för avancerade datorspel Fö 9: Nätverk, Peter Johansson, ISY

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

Logga in. Elevöversikt. Kolumner. Godkänna. Urval. Hantera inflytt och byte. Sök. Familjebild. Utskriftsrutin Om pengen

Skapa ett register över din grupp/klass

Aditro HR Portalen - logga in och byta lösenord

Formulär Sida 2 av 12

Handicom. Symbol for Windows. Blisseditor. Version 3.4

2D1387 Programsystemkonstruktion med C++ Projektuppgift: Äventyrsspel 31 augusti 2006

Detta är en kort Manual för Vecturas portal för presentation av inventeringar. Adressen till portalen är:

KeyControl Sök person, nyckel eller cylinder

Mikromarc 2 Meddelandecenter

Här kan du välja befintligt upplägg eller skapa ett nytt. Klicka på edit uppe till höger för att redigera och/eller skapat nytt.

En introduktion till Complex Drafting demo version

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

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

Flexibel meny i Studentportalen

Administrativ manual RiksSvikt 3.7.0

I högskolans nätverk hittar du programmet PowerPoint genom Startmenyn, Huvudmeny XP, Kontorsprogram, Microsoft Office, Microsoft PowerPoint.

Lathund. Administratörshantering. Kapitalflytt ITPK

Microsoft Windows 10 Grunder

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Motivering och kommentarer till enkätfrågor

Objektorienterad programmering i Java

Styra olika typer av objekt som animering, video, ljud och Flashfilm

Tentaupplägg denna gång

HÖGSKOLAN I KALMAR Institutionen för teknik Erik Loxbo LABORATION I PLC-TEKNIK SEKVENSSTYRNING AV TRANSPORTBAND SIMATIC S7 - GRAPH

RITA KARTA MED GPS GARMIN 62S

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

Tentamen OOP

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Tentamen i Objektorienterad programmering

Supernova med Internet Explorer. (SuperNova version 13 eller senare)

Microsoft Publisher. Laborationskompendium för digital behandling av publikationer. Detta exemplar tillhör:

Transkript:

Linköpings Universitet Designspecifikation Projektarbete Arkadspel Jimmy Dahl och Serdar Tovi TDP005 Projekt: Objektorienterade system 2007

Visualisering När spelet startas möts spelaren av en meny med två alternativ, vilka väljs med ett tangentkommando. Spelaren kan välja att starta första nivån av spelet, visa High Score-listan eller avsluta spelet. De kommandon som används för att navigera dit spelaren önskar framgår av text skriven i menyn. High Score-listan kommer även den att ha en bakgrundsbild och ett utskrivet kommando för att gå till menyn. Själva listan, med namnen på de spelare som fått högst poäng, kommer att bestå av text. Namnen kommer att vara uppdelade i två kolumner (när dom blir tillräckligt många) och framför varje namn kommer spelarens poäng att skrivas ut. Listan är självklart sorterad efter högsta poäng. Själva spelet kommer att innehålla flera visuella objekt varav de flesta består av bilder. Spelarens kanon kommer att vara en bild på en stridsvagn och de fientliga flygplanen kommer att använda en bild på ett flygplan. De skydd som spelaren kan gömma sin kanon under kommer att använda en bild på en avlång vägg. Även kanonens skott och flygplanens bomber kommer att använda passande bilder. Om ett flygplan blir träffat av ett skott från kanonen kommer bilden på flygplanet (och dess objekt) att tas bort. När ett flygplan tas bort skapas det antingen ett nytt flygplan eller, om samtliga flygplan på nivån har skjutits ner, så påbörjas nästa nivå. Blir spelaren kanon träffad av en bomb så avslutas spelet. Utöver de olika fiende- och spelarobjekten kommer det även finnas två textade visuella objekt i fönstrets övre kant. Där kommer poäng och nivå att skrivas ut med siffror och bokstäver. På samma ställe står även spelets namn utskrivet. Sida 2

Interaktion Spelaren ska enbart använda tangentbordet för att interagera med spelet. Eftersom spelet inte har så många olika moment kommer bara piltangenterna, mellanslag och retur att behöva användas. För att avsluta spelet används antingen escape-tangenten eller fönstrets X. Det första spelaren möts av är menyn där spelaren kan välja att starta spelet eller visa High Score-listan. Alternativen representeras av 2 tangentkommandon, mellanslag och retur. Spelaren använder tangentkommandot för att navigera vidare. När High Score listan visas kan spelaren bara välja att gå tillbaka till menyn. Spelaren går tillbaka till meny genom att klicka på retur-tangenten. När spelaren har valt att starta spelet från menyn kommer spelets första nivå att starta. Spelaren styr då sin kanon med piltangenterna höger och vänster. För att flytta kanonen lite åt ena hållet klickar spelaren på aktuell piltangent och för att flytta kanonen en längre bit håller spelaren aktuell piltangent nertryckt. När spelaren vill avfyra ett skott från sin kanon klickar spelaren på mellanslagtangenten. När samtliga nivåer avklarats eller spelarens kanon har träffats och spelet avslutats kommer spelaren att få ange sitt namn. Namnet skrivs till High Score-listan som sparas på fil. Namnet skrivs in med hjälp av bokstavs-, mellanslag- och siffertangenterna och godkänns med retur. De 25 bästa resultaten i den sparade filen kommer att visas i High Score-listan i spelet. Sida 3

Klassdiagram (se bilaga för klassdiagrammet) Main-funktionen i programmet börjar med att skapa en spelmotor av klassen GameEngine. Denna klass är vad som håller spelet igång, tack vare att spelets loop är en av GameEngines funktioner. GameEngine har ett GameState-objekt som håller ordning på i vilken fas spelet är, flyttar mellan spelets olika faser och, i ett fåtal fall, anpassar spel-loopen därefter. GameEngine initialiserar SDL och sätter upp spelets fönster. GameEngine tar dessutom hand om all inmatning och vidarebefodrar uppgifterna till aktiv GameState. Dessutom har GameEngine en funktion för att ladda in bilder i spelet och anpassa dem efter spelets fönster. Denna funktion anropas från alla andra instanser som använder bilder. GameState är basklassen för samtliga av spelets faser. GameState känner till GameEngine och kan därmed anropa dess funktioner. GameState har 5 olika underklasser, en för varje fas i spelet. 4 av dessa faser är olika menyer, den femte är spel-fasen. GameState innehåller virtuella funktioner som underklasserna omdefinierar. Den första GameState-underklassen som skapas är StateMenu. Den skapas i spelets main-funktion. Resterande GameState:s skapas av föregående GameState innan eller samtidigt som GameEngine blir upplyst om detta. StateMenu är en underklass till GameState och den första GameState-klass som skapas i spelet. Denna klass innehåller bara två funktioner: en för att rita menyn (en bild) och en för att skicka vidare till nästa fas beroende på tangentkommando. StatePlay är även den en underklass till GameState. StatePlay har ett antal Sprite-objekt och funktioner för att skapa, rita och flytta dessa. StatePlay har också två instanser av klassen Text. Några av Sprite-objekten skapas redan då StatePlay initieras, medan Sprite-objekten bullets och bombs skapas under spelets gång. Objekt av typen BulletSprite och BombSprite lagras i varsin vektor. Funktionen för att rita alla Sprites anropar aktuella Sprites Draw-funktioner och funktionen för att flytta alla Sprites anropar aktuella Sprites SetPos-funktioner med den nya positionen som argument. StatePlay har dessutom en funktion för att omvandla en integer till en string så att Textobjektens renderingsfunktioner kan rendera texten. StateGameOver har en funktion för att rita ut bakgrund och för att ta emot tangentkommando för att gå vidare till nästa fas, StateAddScore. När StateGameOver initieras sätter den en variabel i GameEngine som gör att spelloopen tar emot text från tangentbordet. På detta vis kan spelaren skriva in sitt namn. StateAddScore lägger till spelarens namn och poäng i High Score-listan. Namnet sätts av GameEngine och poängen vidarebefodras från StatePlay. StateAddScore har en funktion för att rita ut sin bakgrund men framför allt funktioner för att läsa från och skriva till filen med High Scoreresultaten. Dessutom finns en funktion för att sortera resultaten och en för att omvandla poängen från objekt av typ integer till string. Nästa fas i spelet är StateShowScore. Här skrivs de 28 bästa resultaten från High Score-filen ut. Även denna klass har en funktion för att skriva ut sin bakgrund. Dess viktigaste funktion är dock Read-funktionen som läser in de 28 översta resultaten från High Score-filen. Varje inläst rad sparas i en vektor. Alla element i denna vektor renderas sen till bilder som sparas i en ny vektor och ritas ut. Utöver alla spelfas-klasser finns det en basklass för alla sprites och en klass för all text som ska renderas. Textklassen har en variabel för vilken font som används och variabler för position. Klassen har en funktion för att rendera texten, som tar en sträng som argument, och en funktion för att rita ut den renderade texten. Basklassen för alla sprites innehåller variabler och funktioner för att sätta position för en sprite och för att spara en bild på en sprite. Dessutom innehåller basklassen ett flertal virtuella funktioner som alla underklasser behöver. De sprites som skiljer sig något från basklassen har egna klasser som ärver av Sprite-klassen, men i vissa fall (t.ex. background och shield) används basklassen direkt eftersom alla nödvändiga variabler och funktioner redan finns. Sida 4

AirplaneSprite och PlayerSprite är klasserna för alla flygplan och för spelarens kanon och innehåller enbart funktioner för att förflytta objekten på skärmen. BombSprite och BulletSprite har också de funktioner för att förflytta objekten på skärmen och har dessutom funktioner för att sätta och hämta en variabel som talar om ifall objektet ska tas bort eller inte. Sida 5

Aktivitetsdiagram (se bilagor för samtliga aktivitetsdiagram) Aktivitetsdiagrammen visar hur flödet för de olika spelfaserna fungerar (Game States Playing), hur man navigerar mellan menyerna (Menu Navigation) och flödet för spelloopen som körs när man spelar spelet. Sida 6