Hausaufgabe: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Roth (Diskussion | Beiträge)
Langenfeld (Diskussion | Beiträge)
 
(193 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
__TOC__
{{TOCRight}}


== Einleitung ==
== Einleitung ==
Zu Beginn des Softwarepraktikums soll sich jeder Teilnehmer mit [[CSharp|C#]], [[MonoGame]] und den dazugehörigen Werkzeugen vertraut machen. Ein guter Startpunkt dafür ist die [[Tutorials|Tutorial-Seite]]. Außerdem soll der erste Anstoß zum selbständigen Recherchieren der benötigten Quellen für das Softwarepraktikum gegeben werden. Aus diesem Grund müssen '''von jedem Teilnehmer''' in der ersten Woche (siehe [[Roadmap]]) verbindliche Hausaufgaben gemacht werden. Diese bestehen aus 5 Aufgaben.
Zu Beginn des Softwarepraktikums soll sich jeder Teilnehmer mit [[CSharp|C#]], [[MonoGame]] und den dazugehörigen Werkzeugen vertraut machen.  
Dazu werden Sie im Laufe dieser Hausaufgabe die Werkzeuge installieren, und damit ein kleines [[MonoGame]]-Programm schrieben.
Die Hausaufgabe muss '''von jedem Teilnehmer''' in der ersten Woche (siehe [[Roadmap]]) verbindliche gemacht werden. <br>
Bitte beachten Sie:


* '''Lesen Sie den Text jeder Aufgabe vollständig durch, bevor Sie mit der Bearbeitung beginnen.'''
* '''Lesen Sie den Text jeder Aufgabe vollständig durch, bevor Sie mit der Bearbeitung beginnen.'''
* '''Bearbeiten Sie die Aufgaben der Reihe nach.'''
* '''Bearbeiten Sie die Aufgaben der Reihe nach''', da diese aufeinander aufbauen.
* '''Beginnen sie nicht erst, wenn die Gruppeneinteilung online ist!''' (Aufgabe 1 lässt sich bereits ohne Gruppeneinteilung erledigen)
* '''Beginnen sie nicht erst, wenn die Gruppeneinteilung online ist!''' (Aufgabe 1 lässt sich bereits ohne Gruppeneinteilung erledigen und kann, falls Probleme auftreten viel Zeit in anspruch nehmen)


== Aufgabe 1: Setup ==  
== Aufgabe 1: Setup ==  
Setzen Sie eine Arbeitsumgebung auf und testen Sie die Zugänge zu den verschiedenen Diensten. Falls Sie mit einem Mac arbeiten, beachten Sie die Informationen zur [[Entwicklung mit einem Mac]].
Setzen Sie eine Arbeitsumgebung auf und testen Sie die Zugänge zu den verschiedenen Diensten.  


=== Arbeitsumgebung ===
=== Arbeitsumgebung ===
Sie finden die relevanten Download-Links unter [[Downloads]].
Im Folgenden sollen Sie ihre Arbeitsumgebung einrichten. Sie können im Sopra beliebige andere Werkzeuge verwenden, müssen aber sicherstellen, dass diese mit den hier vorgestellten Werkzeugen kompatibel sind.
* [[.NET]] 4.6.1
* [[Visual Studio]] 2015 Enterprise
* [[MonoGame]] 3.6
* [[Resharper]] (beachten Sie die [[Resharper#Konfiguration|Hinweise zur Konfiguration]])
* Ein [[Git]]-Client ihrer Wahl
* Wenn Sie auf einem der Poolrechner entwickeln möchten, beachten Sie die Installationshinweise für Poolrechner auf der [[Downloads#Installation_im_Pool|Downloads-Seite]].


=== Dienste ===
* Folgen Sie dem Artikel [[Arbeitsumgebung einrichten]] entsprechend Ihrem Betriebssystem um ihre Entwicklungsumgebung einzurichten.
Um auf die Dienste zugreifen zu können, brauchen Sie einen gültigen Poolaccount.
* Folgen Sie dem Artikel [[Virtuelles Treffen#Funktionstest von Sound und Video|Virtuelles Treffen]] um auszuprobieren, ob sie ohne technische Probleme an einem Gruppentreffen teilnehmen können.


Die folgenden Dienste sollten Sie eingerichtet und getestet haben:
* Folgen Sie dem Artikel [[Dienste#Erstbenutzung|Dienste]] um ihre Zugänge zu allen Diensten einzurichten.
* Zugang zum [[Gitea]] ihrer Gruppe.
* [[GIT#Git für das SOPRA vorbereiten|Einrichten des Git repository]].
* Die Gruppenmailingliste.
* TODO
 
Die Adressen dieser Dienste finden sich auf der [[Gruppeneinteilung]]sseite.


== Aufgabe 2: Gitea ==
== Aufgabe 2: Gitea ==
{{RefImg|gitea_setuplabels_done.png|300px|2|Auswahl der vorkonfigurierten Labels.}}
{{RefImg|gitea_setuplabels_done.png|500px|1|Auswahl der vorkonfigurierten Labels.}}
Bereiten Sie ihr Gitea auf den Hausaufgabensprint und die Aufgaben ihrer Gruppe vor. Gehen Sie dazu wie folgt vor.
Bereiten Sie ihr Gitea auf den Hausaufgabensprint und die Aufgaben ihrer Gruppe vor. Gehen Sie dazu wie folgt vor.


=== Gitea vorbereiten ===
=== Gitea vorbereiten ===
Um Gitea in Verbindung mit Scrumm verwenden zu können, müssen vorher bestimmte Labels für die Items im Backlog (Issuetracker) eingerichtet werden.
Um Gitea in Verbindung mit Scrum verwenden zu können, müssen vorher bestimmte Labels (siehe Abb. 1) für die Items im Backlog eingerichtet werden.
* Klicken Sie auf ''Issues''.
* Klicken Sie auf <code>Issues -> Labels</code>.
* Klicken Sie auf ''Labels''.
* Wenn noch keine Labels eingerichtet wurden, werden Sie gefragt ob eines der vorkonfigurierten Menge von Labels verwendet werden soll. Wählen Sie hier das vorkonfigurierte Set <code>Sopra</code>.
* Wenn noch keine Labels eingerichtet wurden, werden Sie gefragt ob eines der vorkonfigurierten Menge von Labels verwendet werden solln. Wählen Sie hier das vorkonfigurierte Set ''Sopra''.  
* Prüfen sie ob Labels für Priorität und Zeitabschätzung vorhanden sind, wie auf dem Bild zu sehen (Details können variieren). Wenn keine Labels zur Zeitabschätzung und Priorisierung vorhanden sind, löschen Sie alle Labels. Wählen Sie dann wie oben beschrieben das vorkonfigurierte Labelset für das Sopra.
<br clear="all">


=== Sprint für Hausaufgabe anlegen ===
=== Sprint für Hausaufgabe anlegen ===
{{RefImg|gitea_firstsprintmilestone.png|300px|2|Das Formular für die Erstellung eines neuen Milestones.}}
{{RefImg|gitea_firstsprintmilestone.png|500px|2|Den Hausaufgabensprint erstellen.}}
Prüfen sie ob in Gitea ein Sprint (Milestone) für die Hausaufgabe angelegt wurde.
Prüfen sie ob in Gitea ein Sprint für die Hausaufgabe angelegt wurde.
* Klicken Sie auf den Reiter ''Issues''.
* Klicken Sie auf den Reiter <code>Issues -> Milestones</code>.
* Klicken Sie auf den Button ''Milestones''
* Falls kein Sprint (Milestone) für die Hausaufgabe angezeigt wird (siehe Abb. 2), legen Sie einen Milesstone mit dem Namen <code>Sprint 00 (Hausaufgabe)</code> an.
* Falls noch keinen Sprint (Milestone) für die Hausaufgabe angelegt wurde, legen sie diesen an. Verwenden Sie das Datum für das Ende des Sprints die Abgabe auf der [[Roadmap]].
**Verwenden Sie das Datum für das Ende des Sprints das Abgabedatum auf der [[Hauptseite]].
<br clear="all">
<br clear="all">


=== Userstory für die Hausaufgabe anlegen ===
=== User Stories für Aufgabe 3 erstellen ===
{{RefImg|gitea_firstuserstory.png|300px|4|Neue Userstory anlegen.}}
{{RefImg|Firstusrstry.png|500px|3|Eine User Story anlegen.}}
Prüfen Sie ob für die Hausaufgabe bereits alle Userstories existieren. Wenn nicht, legen Sie diese an.  
Prüfen Sie ob für die Hausaufgabe bereits alle Items existieren. Wenn nicht, legen Sie diese an.  
* Klicken Sie auf den Reiter ''Issues''.
* Klicken Sie auf den Reiter <code>Issues</code>.
* Prüfen Sie ob bereits ein Item ''Alle Studenten in der Gruppe sollen Git und Gitea bedienen können, damit sie in Zukunft produktiver arbeiten.'' existiert und mit ''user story'' getaggt ist. Wennicht legen Sie eine entsprechende Userstory an indem Sie den weiteren Punkte folgen.
* Prüfen Sie ob bereits ein Item mit dem Titel <code>Student <NAME> soll Scrum, Gitea und Git verstehen</code> existiert (siehe Abb. 3).
* Klicken Sie auf den Button ''Neuer Issue''.
** Wenn nicht legen Sie eine entsprechende Userstory an indem Sie den weiteren Punkten folgen:
* Tragen sie als Titel ''Alle Studenten in der Gruppe sollen Git und Gitea bedienen können, damit sie in Zukunft produktiver arbeiten.'' ein.
*# Klicken Sie <code>Neuer Issue</code>.
* Weisen Sie die Label ''user story'' und ''priority: high'' zu, indem Sie auf das Zahnrad neben dem Schrifzug ''Label'' drücken und die entsprechenden Label auswählen.
*# Tragen sie als Titel <code>Student <NAME> soll Scrum, Gitea und Git verstehen</code> ein.
* Weisen Sie den Sprint (Meilenstein) ''Hausaufgabe'' zu.
*# Tragen sie im Textfeld darunter die ausführliche Beschreibung <code>Student <NAME> soll Scrum, Gitea und Git verstehen um effizient arbeiten zu können.</code> ein.
* Dürcken sie auf ''Issue Erstellen''.
*# Weisen Sie dem Item eine hohe Priorität über das Label <code>high</code> zu, indem Sie auf das Zahnrad neben dem Schrifzug ''Label'' drücken und die entsprechenden Label auswählen.
* Fügen Sie außerdem noch die beiden User Stories ''Alle Studenten in der Gruppe sollen das soll die Texte verstehen, damit sie besser Spiele entwickeln können.'' und ''Alle Studenten in der Gruppe sollen soll ein MonoGame Programm schreiben um zu prüfen ob alles funktioniert.'' auf dieselbe Art hinzu.
*# Weisen Sie dem Sprint (Meilenstein) ''Sprint 00 (Hausaufgabe)'' zu.
<br clear="all">
*# Drücken sie auf <code>Issue Erstellen</code>.
 
Bitte beachten Sie in dieser, und in folgenden Aufgaben, den Platzhalter <code><NAME></code> geeignet (z.B.: mit ihrem Usernamen, oder Vornamen) zu ersetzen.
 
=== Items für Aufgabe 4 erstellen ===
 
Erstellen Sie wie in den vorhergehenden Aufgaben beschrieben, Items für Aufgabe 4
* Titel <code>Student <NAME> soll die Clean Code Development Texte lesen</code> mit Beschreibung <code>Student <NAME> soll die Clean Code Development Texte lesen, um besseren Code schreiben zu können.</code>
* Titel <code>Student <NAME> soll den Usability Artikel lesen</code> mit Beschreibung <code>Student <NAME> soll den Usability Artikel lesen, um von vornherein Usabilityprobleme zu vermeiden.</code>
* Titel <code>Student <NAME> soll die Dokumentation Texte lesen</code> mit Beschreibung <code>Student <NAME> soll die Dokumentation Texte lesen, um seinen Code sinvoll dokumentieren zu können.</code>


=== Tasks für Aufgabe 3 erstellen ===
=== Items für Aufgabe 5 erstellen ===
Legen Sie nun einen Task ''Student <username> soll 'Scrum' verstehen'' an.
Erstellen Sie wie in den vorhergehenden Aufgaben beschrieben, ein Item für Aufgabe 5
* Klicken Sie auf den Reiter ''Issues''.
* Titel <code>Student <NAME> soll ein MonoGame Programm schreiben</code> mit Beschreibung <code>Student <NAME> soll das in Aufgabe 5 beschriebene Programm schreiben, um seine Entwicklungswerkzeuge zu testen.</code>
* Klicken Sie auf den Button ''Neuer Issue''.
* Tragen Sie als Titel ''Student <username> soll Scrum verstehen'' ein.
* Weisen Sie das Label ''priority: high'' zu.
* Weisen Sie den Sprint (Meilenstein) ''Hausaufgabe'' zu.
* Speichern Sie den Task ab, indem sie ''Issue Erstellen'' dürcken.
<br clear="all">


=== Tasks für Aufgabe 4 erstellen ===
=== Items akzeptieren ===
Erstellen Sie auf dieselbe Weise die Tasks für Aufgabe 4:
{{RefImg|gitea_hausaufgabe_tasks_assigned.png|500px|4|Items für die Hausaufgabe, vom Studenten akzeptiert und mit Zeitschätzung.}}
* 'Clean Code Development' Artikel lesen
Bevor Sie mit den Aufgaben beginnen, sollten Sie sich die entsprechenden Items zuweisen (siehe Abb. 4).
* 'Dokumentation' Artikel lesen
* Wählen Sie eines ihrer Items aus dem Sprintbacklog (<code>Issues -> Milestones -> Hausaufgabe</code>) aus, indem Sie auf den Titel des Tickets klicken.
* 'Usability-Prinzipien beim Spieldesign' Artikel lesen
* Geben sie eine Abschätzung wie lange es dauern wird das Item nach der Definition of Done umzusetzten. Weisen Sie das Label <code>est: 1</code> um die Abschätzung zu geben, dass es insgesamt eine Stunde Arbeit benötigt wird. Wenn sie vermuten, dass Sie mehr als eine Stunde benötigen, wählen Sie einen entsprechend höheren Wert aus.
* 'Git' Artikel lesen
* Weisen Sie sich dem Item zu, indem Sie auf das Zahnrad neben dem Schriftzug ''Zuständig'' klicken, und ihren Benutzernamen auswählen.
<br clear="all">
Aktzeptieren Sie so alle Tasks die sie in den vorhergehenden Aufgaben erstellt haben. Akzeptieren Sie auch das Item zu Aufgabe 5 falls dieses schon existierte.


=== Tasks für Aufgabe 5 erstellen ===
Beachten Sie, dass es nicht nötig für jede Änderung einen Kommentar zu schreiben. Alle Änderungen an Labels und zugewiesenen Personen werden sofort übernommen und in der Historie des Tickets eingetragen.
Erstellen Sie einen Task für Aufgabe 5, z.B. "Programm schreiben", auf dieselbe Weise wie für Aufgaben 3 und 4.
<br clear="all">


=== Tasks akzeptieren ===
=== Überprüfen der Items ===
<!-- {{RefImg|trac_resolve_ticket.png|300px|12|Detailansicht eines Tasks.}} -->
Bevor Sie mit den Aufgaben beginnen, sollten Sie Ihren entsprechenden Tasks akzeptieren.
* Wählen Sie einen Taks aus dem Productbacklog (Issues) aus, indem Sie auf den Titel des Tasks klicken.
* Weisen Sie das Lebel ''estimate: 1'' zu um eine abgeschätzte Arbeitszeit von einer Stunde anzugeben.
* Weisen Sie den Sprint (Meilenstein) ''Hausaufgabe'' zu.
* Weisen Sie sich dem Taks zu, indem Sie auf das Zahnrad neben dem Schriftzug ''Zuständig'' klicken, und ihren Benutzernamen auswählen.
Die Änderungen werden sofort nach der Änderung gespeichert. Es ist nicht nötig einen Kommentar zu schreiben.
<br clear="all">


=== Überprüfen der Tasks ===
Bevor Sie mit der Arbeit zu beginnen, prüfen Sie noch einmal ob alle Items für Ihre Aufgaben im Sprintbacklog vorhanden sind.
{{RefImg|gitea_hausaufgabe_tasks.png|300px|13|Tasks und Userstories für die Hausaufgabe.}}
* Klicken sie auf den Reiter <code>Issues -> Meilensteine -> Hausaufgabe</code>
Bevor Sie beginnen sich Tickets zuzuweisen und mit der Arbeit zu beginnen, prüfen Sie noch einmal ob alle Tasks und Userstories im Sprintbacklog vorhanden sind.
* Schränken Sie die Anzeige auf die Ihnen zugewiesenen Items ein, indem sie unter <code>Zuständig ⯆</code> ihren Usernamen wählen. Prüfen Sie ob alle Items vorhanden sind.
* Klicken sie auf den Reiter ''Issues''.
* Klicken sie den Button ''Meilensteine''.
* Klicken sie auf den Meilenstein ''Hausaufgabe''.
* Schränken Sie die Anzeige auf Userstories ein, indem sie in dem Sie den Button ''Label ''⯆ drücken und das Label ''user story'' auswählen. Prüfen Sie ob alle Userstories vorhanden sind.
* Schränken Sie die Anzeige auf ihnen Zugewiesene Tasks ein, indem sie unter ''Label ''⯆ ''alle Labels'' wählen, und unter ''Zuständig ''⯆ ihren Usernamen. Prüfen Sie ob alle Tasks vorhanden sind.
* Erstellen Sie eventuell nicht vorhandene Userstories und Tasks wie in den vorhergehenden Aufgaben beschrieben.
* Erstellen Sie eventuell nicht vorhandene Userstories und Tasks wie in den vorhergehenden Aufgaben beschrieben.


Zeile 108: Zeile 88:
* Recherchieren Sie, was [[Scrum]] ist und wie Scrum funktioniert.
* Recherchieren Sie, was [[Scrum]] ist und wie Scrum funktioniert.
* Lesen Sie außerdem den Wikipedia-Artikel zu [http://de.wikipedia.org/wiki/User_Story User Stories].
* Lesen Sie außerdem den Wikipedia-Artikel zu [http://de.wikipedia.org/wiki/User_Story User Stories].
* Machen Sie sich mit den anderen Funktionen von Gitea vertraut und lesen Sie den Artikel [[Scrum und Gitea]]
* Machen Sie sich mit den anderen Funktionen von [[Gitea]] vertraut und lesen Sie den Artikel [[Scrum und Gitea]]
* Beschreiben Sie in einem Kommentar zu Task ''Student <username> soll 'Scrum' verstehen'' kurz und prägnant wie Scrum funktioniert, und wie Scrum im SoPra auf Gitea realisiert wird.
* Sollte es Fragen zum Vorgehen (Scrum und Gitea) geben, schreiben Sie diese als Kommentar in ihr Item in Gitea, damit eventuelle Fragen schnell geklärt werden können (Kommentarfeld unter <code>Issues -> Meilensteine -> Hausaufgabe -> Student <NAME> soll Scrum, Gitea und Git verstehen</code>).
* Lesen sie die Artikel [[GIT|Git]] und [[GitWorkflow| Git Workflow]]
**Richten Sie sich den Zugang zu ihrem Gruppenrepository ein, indem Sie in [[Gitea]] ein [[Gitea#HTTPS Kennwort einrichten|HTTPS Kennwort einrichten]] oder einen [[Gitea#SSH Key hinzufügen|SSH Key hinzufügen]].
**[[Git#Repository klonen|Klonen]] sie das Gruppenrepository.
** Öffnen Sie dort die Datei <code>README.md</code> und fügen Sie ihren Namen an der dafür vorgesehenen Stelle hinzu (Verwenden Sie hierfür  '''nicht''' den Editor in Gitea, sondern eine lokale Kopie des Repositories wie in dieser Aufgabe beschrieben).
**[[Git#Änderungen an einer Datei| Committen]] sie ihre Änderungen: Benutzen sie die Commitnachricht <code>Added name to README.md (closes #<ticketnummer>)</code> um das entsprechende Item in Gitea [[Git#Git und Gitea | per Commitnachricht zu schließen]].
**[[Git#Änderungen in das remote Repository laden (pushen)| Synchronisieren]] sie ihre Änderungen mit dem Server. Halten Sie sich dabei and [[GitWorkflow#Tägliche Arbeit Synchronisieren| den empfohlenen Git-Workflow]]. Es it gut möglich, dass dabei Konflikte entstehen, beachten sie hierzu [[Git#Konflikte lösen| die Anleitung zum Konflikte lösen in Git]], und lösen Sie die entstehenden Konflikte sinvoll auf.
* Sollte es noch keine <code>.gitignore</code>-Datei in Ihrem Repository geben, erstellen Sie in ihrem Repository eine entsprechende Datei ([[Git#Dateien Ignorieren]]), sodass temporäre Dateien von Visual Stuidio und Verzeichnisse für den Compileroutput von Git ignoriert werden. Comitten Sie diese Datei und pushen Sie diese ebenfalls. Eine gute Vorlage finden Sie unter [https://github.com/github/gitignore/blob/master/VisualStudio.gitignore Github].
 
'''Hinweis''': Achten Sie darauf, dass die in ihrem [[Git]] eingestellte Emailadresse mit der in Gitea eingestellten Emailadesse übereinstimmt, da Ihnen sonst keine Commits zugeordnet werden können.


== Aufgabe 4: Texte lesen ==  
== Aufgabe 4: Texte lesen ==  
Lesen Sie sich die folgenden Artikel durch, und kommentieren Sie ihr entsprechendes Ticket:
Lesen Sie sich die folgenden Artikel durch, und kommentieren Sie ihr entsprechendes Ticket:
* [[CleanCode|Clean Code Development]] und beschreiben sie ein Cleancodeprinzip (dass sonst noch keiner aus Ihrer Gruppe gewählt hat) kurz und prägnant.
* Lesen Sie [[CleanCode|Clean Code Development]]  
* [[Dokumentation]]
** Beschreiben Sie in einem Kommentar zum entsprechenden Item ein Cleancodeprinzip und wieso Sie es für das Sopra für besonders wichtig erachten.
* [[UsabilityForGames|Usability-Prinzipien beim Spieldesign]] und beschreiben Sie eine Verletzung der Usability-Prinzipien in einem Spiel (oder anderer Software).
* Lesen Sie [[Dokumentation]]
* [[GIT|Git]] clonen Sie ihr Gruppenrepository. Verändern sie etwas in der Readme.md. Schließen Sie ihr Ticket für diese Aufgabe über die Commitmessage, und pushen sie den Commit.<br clear="all">
* Lesen Sie [[UsabilityForGames|Usability-Prinzipien beim Spieldesign]]  
** Beschreiben Sie in einem Kommentar zum entsprechenden Item ein Usabilityprinzip und wieso Sie es für das Sopra für besonders wichtig erachten.


=== Tasks bearbeiten ===
=== Items bearbeiten ===
Bearbeiten sie die Tasks und tragen sie entsprechende Zeiten in den Tickets ein. Besonders bei Programmieraufgaben ist dies sinnvoll, da so eine Historie der Bearbeitung und der verbrauchten Zeit erstellt wird. Dies hilft nicht nur Ihnen bei der Planung weiterer Aufgaben und Abschätzung der dafür benötigten Zeit, sondern dient auch als Nachweis für Ihre kontinuierliche Mitarbeit (siehe [[Formalien]]).
Bearbeiten sie die Aufgaben und tragen Sie entsprechende Zeiten in die Items in Gitea ein (im Menü rechts, ''Time Tracker -> Add Time''). Besonders bei Programmieraufgaben ist dies sinnvoll, da so eine Historie der Bearbeitung und der verbrauchten Zeit erstellt wird. Dies hilft nicht nur Ihnen bei der Planung weiterer Aufgaben und Abschätzung der dafür benötigten Zeit, sondern dient auch als Nachweis für Ihre kontinuierliche Mitarbeit (siehe [[Formalien]]).


'''Achtung''': Geben Sie acht beim Zeit eintragen, da Sie die Summe nachträglich nur nach oben verändern können.
'''Achtung''': Sie können die Summe der einmal eingetragenen Zeit nachträglich nur nach oben verändern.


=== Tasks schließen ===
=== Items schließen ===
Wenn Sie mit einer Aufgabe fertig sind, sollten Sie Ihren entsprechenden Task schließen. Gehen Sie ähnlich wie beim Akzeptieren eines Tasks vor und drücken Sie auf den Button ''Schießen''.
Wenn Sie mit einer Aufgabe fertig sind, sollten Sie Ihren entsprechenden Items schließen. Gehen Sie ähnlich wie beim Akzeptieren einer Story vor und drücken Sie auf den Button ''Schließen''. Beachten Sie bei Aufgaben die zu denen Sie etwas comitten, dass Sie das Item auch über die [[Git#Git und Gitea |Commitnachricht schließen können]].


Vergessen Sie nicht die Zeit die Sie für den Task benötigt haben, einzutragen (falls Sie das noch nicht gemacht haben).
Vergessen Sie nicht die Zeit, die Sie für den Task benötigt haben, einzutragen (falls Sie das noch nicht gemacht haben).


== Aufgabe 5: Programm schreiben ==  
== Aufgabe 5: Programm schreiben ==  
[[Datei:homework_final.jpg|thumb|right|Abbildung 14: Das fertige Programm könnte so aussehen.]]
[[Datei:homework_final.jpg|thumb|right|Abbildung 5: Das fertige Programm könnte so aussehen.]]
Bevor Sie mit dieser Aufgabe beginnen, sollten Sie Ihren entsprechenden Task akzeptieren.
Erstellen Sie ein [[MonoGame]] Programm, welches die folgenden Eigenschaften erfüllt:  
 
Erstellen Sie ein [[MonoGame]] Programm, welches die folgenden Eigenschaften erfüllt:
=== Funktionale Anforderungen ===
=== Funktionale Anforderungen ===
[[Datei:unilogo.png|right|thumb|Abbildung 15: Das Uni-Logo]]
[[Datei:unilogo.png|right|thumb|Abbildung 6: Das Uni-Logo]]
[[Datei:background.png|right|thumb|Abbildung 16: Hintergrundgrafik]]
[[Datei:background.png|right|thumb|Abbildung 7: Hintergrundgrafik]]
* Das Programm zeichnet eine Hintergrundgrafik in einem MonoGame-Fenster.
* Das Programm zeichnet eine Hintergrundgrafik in einem MonoGame-Fenster.
* Vor dieser Hintergrundgrafik rotiert ein Uni-Logo um den Bildschirmmittelpunkt.
* Vor dieser Hintergrundgrafik rotiert ein Uni-Logo um den Bildschirmmittelpunkt.
Zeile 156: Zeile 144:


Um ReSharper-Konformität der Hausaufgabe unter diesen Bedingungen herzustellen, sind mehrere Möglichkeiten denkbar:
Um ReSharper-Konformität der Hausaufgabe unter diesen Bedingungen herzustellen, sind mehrere Möglichkeiten denkbar:
# Verwenden der mGraphics Variable bei der Erstellung eines Sprite-Batches. Es ist möglich, den SpriteBatch, auf dem das Uni-Logo gezeichnet wird, mit<br /><source lang="csharp">someSpriteBatch = new SpriteBatch(mGraphics.GraphicsDevice);</source> zu initialisieren.
# Verwenden der mGraphics Variable bei der Erstellung eines Sprite-Batches. Es ist möglich, den SpriteBatch, auf dem das Uni-Logo gezeichnet wird, mit<br /><syntaxhighlight lang="csharp">var someSpriteBatch = new SpriteBatch(mGraphics.GraphicsDevice);</syntaxhighlight> zu initialisieren.
# Hinzufügen einer ReSharper-Ausnahme für die Variable <tt>mGraphics</tt>. Eine Ausnahme für diese Variable ist die einzige Ausnahme, die wir akzeptieren.
# Hinzufügen einer ReSharper-Ausnahme für die Variable <tt>mGraphics</tt>. Eine Ausnahme für diese Variable ist die einzige Ausnahme, die wir akzeptieren.


Zeile 163: Zeile 151:
=== Ressourcen ===
=== Ressourcen ===
Damit das Erstellen von Grafiken ignoriert werden kann, gibt es hier die beiden Beispieldateien aus der Einführungsveranstaltung:
Damit das Erstellen von Grafiken ignoriert werden kann, gibt es hier die beiden Beispieldateien aus der Einführungsveranstaltung:
* [[:Media:unilogo.png|Das Uni-Logo]]
* [[Medium:Unilogo.png|Das Uni-Logo]]
* [[:Media:background.png|Hintergrundgrafik]]
* [[Medium:Background.png|Hintergrundgrafik]]


Als Audiodateien können beliebige, kurze, Dateien verwendet werden. Die beiden aus der Einführungsveranstaltung bekannten Waves gibt es hier:
Als Audiodateien können beliebige, kurze, Dateien verwendet werden. Die beiden aus der Einführungsveranstaltung bekannten Waves gibt es hier:
* [[Datei:logo_hit.wav|Das Logo wird getroffen]]  
* [[Datei:logo_hit.wav|Das Logo wird getroffen]]
* [[Datei:logo_miss.wav|Das Logo wird nicht getroffen]]
* [[Datei:logo_miss.wav|Das Logo wird nicht getroffen]]


=== Abgabe ===
=== Abgabe ===
Bitte verwenden Sie zur finalen [[Abgabe#Hausaufgabe|Abgabe]] der Hausaufgabe das [[GIT|Git]]-Repository ihrer Gruppe: {{:Abgabe/Hausaufgabe}}
Bitte verwenden Sie zur finalen [[Abgabe#Hausaufgabe|Abgabe]] der Hausaufgabe das [[GIT|Git]]-Repository ihrer Gruppe. Der Programmier-Teil der Hausaufgabe muss als komplettes [[Visual Studio]] Projekt abgegeben werden. Sie sollten dazu einfach das Projekt in das Gruppenrepository unter <code>/abgabe/hausaufgabe/<username>/</code> comitten.
 
== Abgabe finalisieren ==
 
Wenn Sie in Ihrer Gruppe die Aufgaben als letztes abschließen (d.h. Sie die letzte offene User Story im Sprint schließen) erledigen Sie noch folgende Aufgabe. In den auf die Hausaufgabe folgenden Sprints erledigt dies der Product Owner.
 


=== Abgabe Finalisieren ===
Der Fortschritt der während des Sprints erzielt wurde (Inkrement) muss auf den <code>release</code> branch übertragen werden, damit trotz weiterer Arbeit immer eine auslieferbare Version verfügbar ist.
{{RefImg|gitea_mergehomework.png|300px|12|Einen Pullrequest erstellen.}}
* Schließen Sie das Sprintbacklog (<code>Issues -> Meilensteine -> Hausaufgabe -> Schießen</code>).
Wenn Sie in Ihrer Gruppe die Aufgaben als Leztes abschließen (d.h. sie den lezten offenen Task (nicht Userstory) im Sprint schießen, müssen Sie noch folgende Schritte ausführen.
* Erstellen sie einen [[Gitea#Pullrequest|Pullrequest]] (siehe Abb. 8), sodass der aktuelle Stand von <code>master</code> nach <code>release</code> übertragen werden kann wird. Gehen Sie wie folgt vor:
* Schießen Sie alle Userstories für die die entsprechenden Tasks abgeschlossen wurden (da alle Tasks geschlossen sind, sollten das alle Userstories sein).
** Klicken Sie in Gitea auf den Reiter <code>Code -> Branch: master</code>.
* Erstellen sie einen [[Gitea#Pullrequest|Pullrequest]], sodass der aktuelle Stand von ''dev'' nach ''master'' gemerged wird. Gehen Sie wie folgend vor:
** Drücken Sie auf den grünen Button neben dem Branch-dropdown.
** Klicken Sie in Gitea auf den Reiter ''Code''.
** Prüfen Sie im folgenden Dialog, dass als Ziel <code>release</code> und als pullen von <code>master</code> gewählt sind. Geben Sie dem Pullrequest den Titel ''Hausaufgabe''.  
** Wählen Sie im Branch-dropdown den Branch ''dev''.
** Drücken Sie auf <code>Pullrequest Erstellen</code>.
** Drücken Sie auf den Grünen Button neben dem Branch-dropdown.
** Gitea wird feststellen, dass <code>master</code> automatisch in <code>release</code> gemerged werden kann. Ein weiteres Drücken auf <code>Pull-Request Zusammenführen</code> öffnet ein Kommentarfenster, noch einmal drücken schließt den Pull-Request ab.
** Prüfen Sie im folgenden Dialog, dass als Ziel ''master'' und als pullen von ''dev'' gewählt sind. Geben Sie dem Pullrequest den Titel ''Hausaufgabe''.  
** Drücken Sie auf ''Pullrequest Erstellen''.
** Drücken Sie im Folgenden zwei mal auf ''Pull-Request Zusammenführen''.


Die Änderungen die Sie und ihre Gruppe Während des Hausaufgabensprints gemacht haben, wurden nun in den Masterbranch übertrangen.
Die Änderungen die Sie und ihre Gruppe während des Hausaufgabensprints gemacht haben, wurden nun in den <code>release</code>-branch übertragen.


=== Hinweise ===
=== Hinweise ===
* Falls Sie Probleme beim Starten der Anwendung haben, schauen Sie zuerst in die [[FAQ]]. Ein oft auftretendes Problem ist z.B. die Fehlermeldung [[FAQ/Entwicklung/XNA#Wenn_ich_mein_Spiel_starten_will.2C_erhalte_ich_die_Fehlermeldung_.22No_suitable_graphics_card_found..22|"No suitable graphics card found"]].
* Falls Sie Probleme beim Starten der Anwendung haben, schauen Sie zuerst in die [[FAQ]] und in das [https://discourse.sopranium.de Discourse].
* Möglicherweise wird bei Ihnen kein Sound abgespielt, obwohl dies Ihrer Einschätzung nach eigentlich der Fall sein sollte. Prüfen Sie in diesem Fall, ob die Installation der [https://www.microsoft.com/en-us/download/details.aspx?id=35 DirectX Runtime] das Problem behebt.
* Möglicherweise wird bei Ihnen kein Sound abgespielt, obwohl dies Ihrer Einschätzung nach eigentlich der Fall sein sollte. Prüfen Sie in diesem Fall, ob die Installation der [https://www.microsoft.com/en-us/download/details.aspx?id=35 DirectX Runtime] das Problem behebt.


[[Kategorie:Organisation]]
[[Kategorie:Organisation]]
[[Kategorie:Entwurf]]
[[Kategorie:Entwurf]]