Ich bin beeindruckt, wie weit Sie gekommen sind! 👏 Bearbeiten Sie bis zum 18.10 folgende Punkte:
[ ] Ihre github-Ablage und Ihr readme sehen schon ansprechend aus; aber Sie tragen Ihrem tollen Projekt nicht ganz Rechnung:
[ ] Fügen Sie darum ein .gif statt Ihres Bildes von Ihrem Pingpong ein, auf welchem man sehen kann, wie sich die Balken und der Ball bewegen.
[ ] Sie haben ja zwei Projekte auf Ihrer Ablage: Ihr mansgöggeli und Ihr Pingpong. Allerdings gibt es nur eine Program.cs-Datei, welche den Code für das Pingpong enthält; der Code für das mansgöggeli fehlt. Was passiert ist: Sie haben zuerst den Code für das mansgöggeli hochgeladen mit dem Namen Program.cs und dann den Code für das Pingpong, ebenfalls mit dem Namen Program.cs. Github hat darum mit letzterem den Code vom ersten überschrieben, weil die Datei-Namen gleich waren. Das ist kein Fehler von Github, denn Sie können ja nicht zwei Dateien mit demselben Namen haben! Beheben Sie das Problem, indem Sie alle Dateien, die zum mansgöggeli gehören, in einen eigenen Ordner schieben und dort auch die dazugehörige Program.cs hochladen; und einen Ordner für Ihr Pingpong erstellen. Hier finden Sie eine Erklärung, wie das geht. In jedem dieser beiden Ordner sollte dann eine Program.cs, eine .sln und eine .csproj-Datei zu liegen kommen.
[x] Ihr Code hat bereits eine gewisse Eleganz! 👏 Allerdings machen Sie Ihrem Leser (mir, in diesem Fall, aber in Zukunft auch Ihrem Arbeitgeber, Ihren Team-Kollegen etc.) und vor allem auch sich selber das Leben schwer, da Sie Ihre Variablen ganz unsystematisch benennen. Zum Beispiel: Das paddle von Spieler 2 heißt paddle1, aber dessen X-Position P2X. Das Äquivalent dazu bei Spieler 1 heißt dann aber nicht P1X, wie es zu erwarten wäre, sondern positionX; und beim Ball nicht BX, sondern ballX. Grundsätzlich würde ich Abkürzungen in Variablennamen vermeiden, da es dadurch leicht zu Verwirrung kommen kann. Woher sollte jemand, der Ihren Code nicht kennt, wissen, dass BX für X-Position für den Ball steht? Ändern Sie also alle Variablen in Ihrem Code, sodass Sie konsistent sind.
[x] Sie wiederholen sich oft in Ihrem Code: zum Beispiel, wenn Sie die paddles zeichnen. Dort haben Sie zweimal fast genau denselben Code. Das ist umständlich, wenn Sie etwas am Verhalten der paddles ändern möchten (bspw. Sie möchten beide paddle in einer Farbe darstellen): So wie Sie Ihren Code geschrieben haben, müssten Sie nun diese Änderung zweimal vornehmen. Besser wäre es, Sie würden eine neue Funktion PaintPaddle(int x, int y, int length, string symbol) schreiben, welche Sie wiederverwenden können:
public void PaintPaddle(int x, int y, int length, string symbol)
{
for(int i=0; i < length; i++)
{
// etc.
}
}
Ändern Sie Ihren Code, sodass Sie diese Funktion schreiben und verwenden.
[ ] Nun fügen Sie tatsächlich Farben hinzu! In einem ersten Schritt können Sie mit Console.ForegroundColor = ConsoleColor.Red ändern, in welcher Farbe auf die Konsole gemalt wird. Aber Achtung, diese Änderung bleibt auch für alle nachfolgenden Console.Write()s bestehen! Setzen Sie also die Farbe auf ConsoleColor.Red (oder eine andere Farbe), und dann wieder auf Weiß, bevor Sie Ihre neue Funktion verlassen.
[ ] Zum Abschluss gehen Sie jetzt einen Schritt weiter: Ihre PaintPaddle-Funktion kann jetzt immer nur in der Farbe malen, die Sie einprogrammiert haben. Das ist nicht sehr flexibel: wenn Sie die beiden paddles in unterschiedlichen Farben malen möchten, müssten Sie entweder zwei Funktionen haben (etwa PaintRedPaddle und PaintBluePaddle); oder Sie erweitern Ihre Funktion! Kopieren Sie Ihre Funktion von oben, und ändern Sie die erste Zeile, sodass Sie ein weiteres Argument der Funktion übergeben können: PaintPaddle(int x, int y, int length, string symbol, ConsoleColor color).
👉 Die alte Funktion mit 4 Argumenten müssen Sie übrigens nicht löschen. Sie können zwei Varianten derselben Funktion in Ihrem Code haben, wenn diese sich in den Argumenten unterscheiden. Den Namen der Funktion zusammen mit den Argumenten nennt man Signatur, und solange sich diese unterscheiden, kann C# entscheiden, welche Funktion es jeweils verwenden soll.
Haken Sie die bearbeiteten Arbeitspakete ab, und schließen Sie die issue, wenn Sie mit der Arbeit fertig sind!
Guten Tag, ich wusste nicht genau, wie ich von dem Video ein Gif machen, sollte und was Sie genau mit dem Programm.cs gemeint haben, weil wenn ich den Ordner hineinlege kommen zu viele Dateien.
Ich bin beeindruckt, wie weit Sie gekommen sind! 👏 Bearbeiten Sie bis zum 18.10 folgende Punkte:
.gif
statt Ihres Bildes von Ihrem Pingpong ein, auf welchem man sehen kann, wie sich die Balken und der Ball bewegen.Program.cs
und dann den Code für das Pingpong, ebenfalls mit dem NamenProgram.cs
. Github hat darum mit letzterem den Code vom ersten überschrieben, weil die Datei-Namen gleich waren. Das ist kein Fehler von Github, denn Sie können ja nicht zwei Dateien mit demselben Namen haben! Beheben Sie das Problem, indem Sie alle Dateien, die zum mansgöggeli gehören, in einen eigenen Ordner schieben und dort auch die dazugehörigeProgram.cs
hochladen; und einen Ordner für Ihr Pingpong erstellen. Hier finden Sie eine Erklärung, wie das geht. In jedem dieser beiden Ordner sollte dann eineProgram.cs
, eine.sln
und eine.csproj
-Datei zu liegen kommen.paddle1
, aber dessen X-PositionP2X
. Das Äquivalent dazu bei Spieler 1 heißt dann aber nichtP1X
, wie es zu erwarten wäre, sondernpositionX
; und beim Ball nichtBX
, sondernballX
. Grundsätzlich würde ich Abkürzungen in Variablennamen vermeiden, da es dadurch leicht zu Verwirrung kommen kann. Woher sollte jemand, der Ihren Code nicht kennt, wissen, dassBX
für X-Position für den Ball steht? Ändern Sie also alle Variablen in Ihrem Code, sodass Sie konsistent sind.paddle
s zeichnen. Dort haben Sie zweimal fast genau denselben Code. Das ist umständlich, wenn Sie etwas am Verhalten derpaddle
s ändern möchten (bspw. Sie möchten beidepaddle
in einer Farbe darstellen): So wie Sie Ihren Code geschrieben haben, müssten Sie nun diese Änderung zweimal vornehmen. Besser wäre es, Sie würden eine neue FunktionPaintPaddle(int x, int y, int length, string symbol)
schreiben, welche Sie wiederverwenden können:Ändern Sie Ihren Code, sodass Sie diese Funktion schreiben und verwenden.
Console.ForegroundColor = ConsoleColor.Red
ändern, in welcher Farbe auf die Konsole gemalt wird. Aber Achtung, diese Änderung bleibt auch für alle nachfolgendenConsole.Write()
s bestehen! Setzen Sie also die Farbe aufConsoleColor.Red
(oder eine andere Farbe), und dann wieder auf Weiß, bevor Sie Ihre neue Funktion verlassen.PaintPaddle
-Funktion kann jetzt immer nur in der Farbe malen, die Sie einprogrammiert haben. Das ist nicht sehr flexibel: wenn Sie die beidenpaddle
s in unterschiedlichen Farben malen möchten, müssten Sie entweder zwei Funktionen haben (etwaPaintRedPaddle
undPaintBluePaddle
); oder Sie erweitern Ihre Funktion! Kopieren Sie Ihre Funktion von oben, und ändern Sie die erste Zeile, sodass Sie ein weiteres Argument der Funktion übergeben können:PaintPaddle(int x, int y, int length, string symbol, ConsoleColor color)
.👉 Die alte Funktion mit 4 Argumenten müssen Sie übrigens nicht löschen. Sie können zwei Varianten derselben Funktion in Ihrem Code haben, wenn diese sich in den Argumenten unterscheiden. Den Namen der Funktion zusammen mit den Argumenten nennt man Signatur, und solange sich diese unterscheiden, kann C# entscheiden, welche Funktion es jeweils verwenden soll.
Haken Sie die bearbeiteten Arbeitspakete ab, und schließen Sie die issue, wenn Sie mit der Arbeit fertig sind!