Open suchja opened 8 years ago
Done, auch wenn meine Lösung bisher nur ein Feld darstellen aknn, aber genau bis dahin ging es ja auch. In das Spielfeld kann noch kein Steindargestellt werden, diese Feature ist später geplant.
Der Link auf Erik's Lösung funktioniert leider nicht, er hat da was an der Struktur geändert, wenn du das noch ändern kannst, dann Link doch einfach in das Repository
@gustda Dein Ansatz gefällt mir sehr gut und auch der Quellcode ist sehr sauber. Bin gespannt wie es weiter geht.
Grundsätzlich kann ich mir auch gut den Einsatz von MVC vorstellen, allerdings finde ich deine Begründung noch etwas unausgereift 😉. Auch wenn gerade bei diesem Beispiel nicht notwendig ist, so denke ich schon, dass es verständliche Gründe gibt, warum man es einsetzt.
Erledigt, ich habe mich für die einfachste Variante entschieden um diese Aufgabe zu lösen. Noch einfacher wäre es gewesen die Ausgabe direkt in main
zu machen, aber wir hatten ja gesagt, dass es eine separate Klasse Spielbrett
geben soll.
Andere mögliche Kandidaten für Klassen habe ich in der Domänenanalyse erarbeitet und dokumentiert.
So, habe die erste Aufgabe inzwischen erledigt. Es funktioniert :-)
@nocheinheinrich habe es schon laufen lassen! Super!
Wenn du magst gebe ich dir später noch etwas Rückmeldung direkt in deinem Projekt.
Danke; allerdings gefällt mir die Main() Methode nicht. Hätte gern das CASE in einer eigenen Methode gehabt. Habe ich aber nicht hinbekommen. Zudem habe ich keine Ahnung, wie ich das Programm neu starten soll (falls jemand als Kommando „neu“ eingibt.
Über eine Kommentar würde ich mich freuen.
Von: Jan Suchotzki [mailto:notifications@github.com] Gesendet: Samstag, 25. Juni 2016 16:41 An: LernMoment/ttt-challenge Cc: nocheinheinrich; Mention Betreff: Re: [LernMoment/ttt-challenge] Aufgabe #1 - Spielbrett anzeigen (#3)
@nocheinheinrich https://github.com/nocheinheinrich habe es schon laufen lassen! Super!
Wenn du magst gebe ich dir später noch etwas Rückmeldung direkt in deinem Projekt.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/LernMoment/ttt-challenge/issues/3#issuecomment-228546884 , or mute the thread https://github.com/notifications/unsubscribe/ATLuSSJajAyZd8-BpTaXS0p9s_f-Mnh6ks5qPT3tgaJpZM4I83Q- . https://github.com/notifications/beacon/ATLuSekGyEqI-pCOI9AgJMEWZLDU_Vf7ks5qPT3tgaJpZM4I83Q-.gif
Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft. https://www.avast.com/antivirus
@nocheinheinrich Hi du hast da zwei Probleme angesprochen. Zu1. was ist dein Problem daran? Die Daten, also die Information aus der Eingabe zurück zu zu bekommen? Du hast halt potentiell keinen Zugriff auf deine "Spielfeldzeilen", ich könnte mir vorstellen, dass das ein Grund wäre, was das auslagern erschwert, das lässt sich aber z.B. über ausreichend umfangreiche Rückgabewerte lösen. Du kannst auch die Zeilen als Referenz übergeben, dann änderst du die direkt in deiner ausgelagerten Methode. Oder hast du da andere schwierigkeiten?
Zu 2: Du musst ja nicht das Programm Neu starten, nur das Spiel. Überleg dir, was genau du anpassen musst, damit dein Programm wieder den Stand hat, den es nach dem Start hatte. dann ist das "Wie neugestartet"
Ready, ich hab wohl zu kompliziert gedacht.... ^^
Aufgabenbeschreibung
Als erste Aufgabe der Challenge solltest du das Spielbrett anzeigen lassen. Wie es genau aussehen soll siehst du in der Beschreibung der Kata. Hier eine Möglichkeit wie ein leeres Spielbrett dargestellt werden kann:
Das Spielbrett besteht aus leeren Spielfeldern und den Koordinaten. Du kannst entweder die Ausgabe erstmal in der
main
Methode realisieren oder auch schon eine separate Klasse dafür anlegen.Um die Ausgabe machen zu können, brauchst du natürlich erstmal ein neues Projekt in Visual Studio. Zusätzlich wäre es hilfreich, wenn du ein Projekt auf GitHub startest und deinen Quellcode dort veröffentlichst. Damit habe ich die Möglichkeit mir dein Resultat anzuschauen und zu kommentieren.
Als kleine Erweiterung kannst du bereits in der
Main
Methode auf eine Tasteneingabe vom Benutzer warten. Damit erreichst du, dass die Konsolenanwendung nicht sofort nach der Ausgabe beendet wird.WICHTIG: Ein ganz elementarer Bestandteil einer jeden Übung (wenigstens, wenn sie dich weiterbringen soll) ist das Reflektieren. Wenn du die Aufgabe erledigt hast ziehe bitte eine Bilanz was die Aufgabe dir bezüglich deiner Fähigkeiten gezeigt hat. So kannst du einfach für dich erkunden in welchen Bereichen du noch mehr Aufgaben machen solltest und welche Bereiche du schon gut beherrschst. Du kannst gerne die Ergebnisse deiner Reflexion hier als Kommentar hinterlassen. Dann kann ich dir für dich spezifisch weitere Übungen empfehlen.
Was du mit dieser Aufgabe üben kannst
Wenn du Einsteiger bist, sehe ich insbesondere folgende Aspekte die du mit dieser Aufgabe übst:
Console
zur Ausgabe von Zeichenketten. Hier ist die MethodeWriteLine
relevant.Console
zur Benutzerinteraktion bevor eine Konsolenanwendung geschlossen wird. Dafür könntest du die MethodeReadLine
verwenden.Wenn du Fortgeschrittener oder Profi bist, dann kannst du auch die Basics (siehe vorheriger Absatz) übern, aber du kannst beispielsweise auch die Domänenanalyse bzw. das Grobdesign üben. Du könntest also beispielsweise überlegen in welcher Klasse du die Ausgabe machst und hier eine Begründung dazu schreiben.
Artikel, Videos & Links zu dieser Aufgabe
Hier ein paar Videos die dir bei der Lösung dieser Aufgabe helfen könnten:
Console
gemacht wird.Weitere Informationen gibt es auf LernMoment.de!
Lösung
Hast du die Aufgabe wirklich umgesetzt, oder willst du nur ein wenig spicken?
Wenn du eine erste Inspiration benötigst, dann schau dir mal den Quellcode von Erik an. Wie immer in der Softwareentwicklung gibt es jedoch sehr viele verschiedene Lösungsmöglichkeiten.
Meine Lösung siehst du in diesem Commit. Er zeigt dir was ich im Vergleich zu einem leeren Konsolenprojekt geändert habe.