Ich schreibe das einfache Kartenspiel "War" für Hausaufgaben und jetzt, da das Spiel funktioniert, versuche ich, es modularer und organisierter zu machen. Unten ist ein Abschnitt von Main()
, der den Großteil des Programms enthält. Ich sollte erwähnen, dass der Kurs in C# unterrichtet wird, aber es ist kein C# -Kurs. Stattdessen lernen wir grundlegende Logik- und OOP-Konzepte, damit ich einige C# -Funktionen nicht nutzen kann.Aufrechterhaltung der Modularität in Main()?
bool sameCard = true;
while (sameCard)
{
sameCard = false;
card1.setVal(random.Next(1,14)); // set card value
val1 = determineFace(card1.getVal()); // assign 'face' cards accordingly
suit = suitArr[random.Next(0,4)]; // choose suit string from array
card1.setSuit(suit); // set card suit
card2.setVal(random.Next(1,14)); // rinse, repeat for card2...
val2 = determineFace(card2.getVal());
suit = suitArr[random.Next(0,4)];
card2.setSuit(suit);
// check if same card is drawn twice:
catchDuplicate(ref card1, ref card2, ref sameCard);
}
Console.WriteLine ("Player: {0} of {1}", val1, card1.getSuit());
Console.WriteLine ("Computer: {0} of {1}", val2, card2.getSuit());
// compare card values, display winner:
determineWinner(card1, card2);
hier sind also meine Fragen:
- Kann ich Schleifen in Main() und es noch modular in Betracht ziehen?
- Ist der Kartenzeichnungsprozess richtig geschrieben/enthalten?
- Wird es als schlechte Praxis angesehen, Nachrichten in einer Methode zu drucken (z. B.
determineWinner()
)?
Ich habe nur für zwei Semester programmiert und ich möchte in diesem Stadium gute Gewohnheiten bilden. Jede Eingabe/Beratung würde sehr geschätzt werden.
Edit:
catchDuplicate() ist nun ein boolean Methode und der Aufruf sieht wie folgt aus:
sameCard = catchDuplicate(card1, card2);
dank @Douglas.
Nicht sicher, ob dies wirklich eine StackOverflow-Frage ist. Dies ist eine Art Best-Practice-Frage, die subjektiv sein kann, aber dazu neigt, einen Konsens zu haben. –
Ändert 'catchDuplicate' jemals die Werte von' card1' und 'card2'? Wenn nicht, dann sollten Sie seine Unterschrift ändern: 'sameCard = catchDuplicate (card1, card2);' – Douglas
@SionSheevok oh in Ordnung, wenn diese bewegt werden sollte wäre ich mehr als glücklich zu. – nvillec