% The SRS for the Game UC - Under Construction

\documentclass[german, 10pt, a4paper]{scrreprt}

\usepackage[ngerman]{babel}	% Babel for languages
\usepackage[ansinew]{inputenc} % for german umlaute

\usepackage{amsmath}		% use AMS packages
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}

\usepackage{graphicx} 

\usepackage{fancyhdr}		% fancy headers package

% informations about the document
\title{Software Requirements Specification (SRS)\\Under Construction}
\author{Stefan Hildenbrand\\Florian Keusch\\Markus Neidhart\\Beat Steiger}
%\date{14.04.05}

\addtolength{\textheight}{100pt}
\begin{document}
\makeatletter
\begin{titlepage}%
    \thispagestyle{empty}
    
    \begin{center}
    \textsf{Software Architecture, Sommersemester 2005, ETH Z\"urich}
     \rule[.8em]{.9\textwidth}{0.5pt}
     \vskip 3em
     {\titlefont {\Large Software Requirements Specification (SRS)}\par}
     \vskip 3em
    \includegraphics{uc_logo}
    \vskip 3em
    \rule{.9\textwidth}{0.5pt}
    \vskip 1.5em
   {\titlefont\huge Under Construction}
   \vskip 1em
   \rule{.9\textwidth}{0.5pt}
   \vskip 2.5em
   \textsf{ {\large Stefan Hildenbrand}
     \vskip 0.5em
    {\large Florian Keusch}
    \vskip 0.5em
    {\large Markus Neidhart}
    \vskip 0.5em
    {\large Beat Steiger}
    \vskip 2em
    \textsf{\@date}}
    \end{center}
    \end{titlepage}
\makeatother

\tableofcontents

\chapter{Einf"uhrung}

\section{Zweck des Dokuments}
Dieses Dokument soll unsere Software ``Under Construction'' beschreiben. Es wendet sich sowohl an die Entwickler der Software als auch an die Benutzer, welche die Software einsetzen werden.

\section{Zweck des Softwareprodukts}
Unsere Software ist ein Puzzlepiel und heisst ``under construction'', kurz UC. Das Spiel wird:
\begin{enumerate}
\item ein geladenes Bild in kleine Teile zerlegen.
\item dem Spieler die M"olichkeit geben, selbst ein beliebiges Bild zu laden.
\item dem Spieler die M"olichkeit geben, die Anzahl der Teile und somit den Schwierigkeitsgrad zu bestimmen.
\item einen ETH-Modus bieten, der ein Bild der ETH l"adt und es in 1855 Teile zerlegt.
\item mehrere Arbeitsfl"achen zur Verfgung stellen, auf denen der Spieler seine Teile sortieren kann.
\end{enumerate}
Das Ziel des Spiels ist es, alle Teile so aneinanderzureihen, dass wieder das urspr"ungliche Bild entsteht.

\section{Erl"auterungen zu Begriffen}
\begin{description}
\item[Spielfl"ache] Teil des Displays, der als Ablage f"ur diejenigen Teile dient, die das fertige Ursprungsbild ergeben.
\item[Arbeitsfl"ache] Teil des Displays, um noch nicht zur Spielfl"ache hinzugef"ugte Teile zu sortieren
\end{description}

\section{Referenzen}
\begin{itemize}
\item IEEE Std 830-1998, IEEE Recommended Practice for Software Requirements Specifications (June, 1998) 207-238
\item Skript aus ``Software architecture'': SRS of Team Sloth
\item Eiffel, http://www.eiffel.com
\item ESDL, http://eiffelsdl.sourceforge.net
\end{itemize}

\section{\"Ubersicht \"uber das restliche Dokument}
Der Rest dieses Dokuments gibt eine detaillierte Beschreibung aller Requirements, welche UC erf"ullen muss. Dabei geht es in Section 2 um die allgemeine Beschreibung von UC, dies beinhaltet einen generellen Produkt"uberblick, "Uberblick ber die haupts"achlichen Funktionen der Software, Anforderungen an den Benutzer und Abh"angigkeiten / Limitationen, die sich fr die Software ergeben. Section 3 wird dann detailliert auf die spezifischen Anforderungen eingehen.

\chapter{Beschreibung des Softwareprodukts}

\section{Zielsetzung und Einsatzumgebung des Produkts}
Das Spiel ''Under Construction'' ist ein eigenst"andiges Produkt. Zum Ausf"uhren des Spiels wird keinerlei andere Software ben"otigt.

\section{Implementierte Funktionen}
\begin{itemize}
\item Zerlegen eines Bildes in die vom Benutzer gew"unschte Anzahl Teile
\item mehrere Arbeitsfl"achen, um Bildteile zu sortieren
\item St"uckweises Zusammenf"ugen der Einzelteile zum urspr"unglichen Originalbild
\item Hintergrundmusik abspielen
\end{itemize}

\section{Informationen zu erwarteten Nutzern}
Der Benutzer dieser Software sollte wissen, wie man Puzzles spielt. Ansonsten sind keine speziellen Anforderungen n"otig, um die Software benutzen zu k"onnen. 

\section{Abh"angigkeiten und Voraussetzungen}
Diese Software wird in Eiffel unter Verwendung von ESDL, einem SDL Wrapper f"ur Eiffel, geschrieben. Zur verwendung der Software wird ein durchschnittlicher Computer mit Maus und Tastatur ben"otigt.

\chapter{Spezielle Anforderungen}

\section{Benutzeroberfl"ache}
\subsection{Beschreibung}
\begin{description}
\item[(UI1-BAR) Menubar:] Die graphische Benutzeroberfl"ache von UC enth"alt eine Men"ubar \textbf{MB} (oben), in der sich einige Befehle ausf"uhren lassen. In diesem Menu startet man ein Fenster, in dem einzelne Puzzleteile gesucht werden k"onnen. Nach der Suche erscheinen dann auf der Hauptarbeitsfl"ache die nach den Suchkriterien gefundenen Teile. Diese Menubar enth"alt rechts oben einen Button, mit dem man den Ton ausschalten kann.
\item[(UI2-MAIN) Hauptarbeitsfl"ache:] Auf der Hauptarbeitsfl"ache \textbf{HA} werden die Puzzleteile in einer Liste angezeigt. Dies erfolgt entweder, wenn der User per Suche nach Bildteilen gesucht hat, oder wenn er den Inhalt einer Arbeitsfl"ache anzeigen will. 
\item[(UI3-WORK) Arbeitsfl"achen:] Auf den 5 vorgegebenen Arbeitsfl"achen \textbf{A1 bis A4} kann der User seine Puzzelteile nach belieben sortieren. Per Drag and Drop kann der User Bildteile von der Hauptarbeitsl"ache in eine solche Arbeitsfl"ache verschieben, um so zum Beispiel in der ersten Arbeitsfl"ache alle Teilchen zu speichern, die gr"un sind. Beim klicken auf eine solche Arbeitsfl"ache erscheinen alle beinhalteten Puzzleteile auf der Hauptarbeitsfl"ache. Zus"atzlich existiert eine sechste Arbeitsfl"ache \textbf{AA}, die alle Puzzleteile beinhaltet. Der User hat die M"oglichkeit allen diese Arbeitsfl"achen einen Namen zuzuteilen, um die Sortierung zu erleichtern.
\item[(UI4-SPACE) Spielfl"ache:] Auf der Spielfl"ache \textbf{SF} stellt der User das angefangene Puzzle zusammen. Sobald er ein Bild gefunden hat, das passt, kann er diese per Drag and Drop auf die Spielfl"ache ziehen und dort an das angefangene Bild setzen. Passt das Puzzleteil, so bleibt das Puzzleteil dort liegen, ansonsten wird es sofort ein wenig vom Bild abgestossen.
\item[(UI5-MENU) Gamemenu:] Zum Gamemenu \textbf{GM} von UC gelangt man entweder beim Starten des Spiels, oder durch Druck der Taste ESC. Der User kann dann auf die Buttons: ``Neues Spiel'', ``Optionen'' oder auf ``Spiel Beenden'' klicken. Wenn der Spieler auf den Button ``Neues Spiel'' dr"uckt, so hat er die Auswahl zwischen verschiedenen Spieleinstellungen und kann ein neues Spiel starten. Klickt er auf ``Optionen'', so wird das Optionenmenu geladen. Zum sofortigen Beenden des Spiel klickt er einfach auf den Button ``Spiel Beenden''.
\end{description}
\subsection{Skizze}
\vskip 3em
\includegraphics{skizze}
	
\section{Funktionen}
Das Game UC bietet folgende Funktionen:
\begin{description}
\item[(FUN1-SAVE) Speichern / Laden:]
Der User hat die M"oglichkeit ein Puzzle zu speichern, oder ein bereits vorher angefangenes Puzzle wider zu laden. Die ganze Konfiguration des Spiels wird in einem .puz file im UC Ordner ``save'' gespeichert. Das Laden kann er direkt im GM von UC, das beim Start angezeigt wird. Speichern kann er auch im GM oder er kann die Schnellspeicherung benutzen mit der Tastenkombination Ctrl + S.
\item[(FUN2-ROT) Teile drehen:]
Ein Klick mit der rechten Maustaste auf ein Puzzleteilchen bewirkt, dass dieses um 90 Grad im Uhrzeigersinn gedreht wird. Wenn man also 4 mal auf ein Teilchen klickt, so ist es wieder in urspr"unglichen Zustand gedreht.
\item[(FUN3-MOUSE) Maussteuerung:]
In erster Linie steuert der User UC mit der Maus. Teile, die in das Puzzle passen verschiebt er per Drag and Drop von der Arbeitsfl"ache zur Spielfl"ache und f"ugt sie an der richtigen Stelle ein.
\item[(FUN4-SCROLL) Scrollfunktion:]
Sobald sich die Maus an den Rand des Spielfelds bewegt und kurz dort stehen bleibt, so bewegt sich die Spielfl"ache langsam in die entgegengesetzte Richtung.
\item[(FUN5-MUSIC) Hintergrundmusik:]
Im GM hat der User die M"oglichkeit unter Optionen eine Liste von Musikdateien anzugeben, die w"ahrend dem Puzzeln abgespielt werden. Falls nichts angegeben wird, wird eine Standardmusik abgespielt. Der Ton kann "uber den Button rechts oben abgestellt werden.
\item[(FUN6-SEARCH) Suchfunktion:]
Die Suchfunktion erlaubt es dem User nach ganz bestimmten Teilen zu suchen. Er kann hier angeben, ob er z.b. ein Eck-Teilchen sucht, ob er ein Teilchen sucht, das an den Rand kommt,
oder nach allen Teilchen, die 3 K"opfe haben.
\item[(FUN7-HELP) Hilfefunktion:]
Falls der User sich v"ollig verloren f"uhlt bietet UC ihm eine kleine Hilfefunktion. Mit der
Tastenkombination Ctrl + H wird im Puzzle ein zuf"alliges Teil eingef"ut. Diese Funktion ist aber nur begrenzt nutzbar.
\end{description}	

\section{Spielmodis}
Wenn der User im GM ein neues Spiel erstellt, bieten sich folgende Modis zur Auswahl:
\begin{description}
\item[(SM1-ETH) ETH-Modus:]
In diesem Modus wird ein Bild in 1855 Teile zerschnitten.
\item[(SM2-HEAD) Kopf-Modus:]
Ein Bild wird zerschnitten in Puzzle-Teile, die K"opfe haben. Der User hat ausserdem eine Auswahl an M"oglichen Anzahlen von Puzzle-Teilen.
\item[(SM3-QUAD) Quadrat-Modus:]
Um das ganze Puzzle zu erschweren kann der User das Bild in Quadrate schneiden. Er hat eine Auswahl an M"oglichen Anzahlen Puzzle-Teilen.
\end{description}


\end{document}
