c# Console.WriteLine Text löschen?
Hallo, Wie kann ich machen, dass der Text in CastSpell() ausgeblendet wird, aber die Sachen: "Slots--; experience+=0.3;" noch bleiben und dann eben der text unter dem CastSpell aufruf kommt. (Im bild ist auch ein Pfeil, also in dem if-Statement )
asdad
nach dem Meditate in dem if statemant aufgerufen wird, kommt CastSpell() und darunter ist ja ein Text. Ich will , dass in der CastSpell methode der Text ausgeblendet wird und der darunter angezeigt wird, aber beim ausblenden des textes in CastSpell()soll nur in diesen einen if statement stattfinden
Wenn du schon unbedingt Bilder teilen musst, dann sorge doch zumindest dafür, dass sie groß genug sind, sodass der Text auf ihnen auch lesbar ist.
man sieht sonst nicht den gesamten code und man kann doch zoomen ,aber hast recht, hätte noch grösser machen können
3 Antworten
Console.Clear() ist keine gute Idee, wenn es um das überschreiben eine speziellen Zeile geht, da es den gesamten Fensterbuffer löscht.
Besser den Consolencursor an den Beginn der entsprechenden Zeile positionieren und diese gezielt überschreiben. Dabei nicht mit Leerzeichen am Ende des überschreibenden Strings geizen. (für die Consoleausgabe sind Leerzeichen quasi "Nichts")
using System;
using System.Threading;
class Prog{
public static void Main(string[] args){
Console.WriteLine("Ich werde in 2 Sekunden überschrieben");
Thread.Sleep(2000);
Console.SetCursorPosition(0, 0);
Console.WriteLine("falsch, nicht komplett...");
Thread.Sleep(2000);
Console.SetCursorPosition(0, 0);
Console.WriteLine("ups... "); //mit reichlich Spaces überschreiben
Console.ReadKey();
}
}
hab die frage oben ergänzt und genau beschrieben was ich will, hoffe , dass du mir helfen kannst
Ich bin leider nur mit dem Smartphone und habe keine Möglichkeit den Inhalt von Bilden zu analysieren.
und man kann doch zoomen ,aber hast recht, hätte noch grösser machen können
..nicht größer machen, sondern Code in einen Codeblock (</>) einfügen oder umfangreichen Code als link auf einen Codehoster wie Pastebin.
SetCursorPosition(x,y) gehört vor WriteLine(...) ...ist doch aus meinem Beispiel ersichtlich .🤔 (in welcher Zeile Dein Text ausgegeben werden soll musst du schon selbst wissen)
Einen Cursor an eine bestimmte Position in der Console zu platzieren ist ja nun kein Hexenwerk. Zu erfassen, was meine Demo tut ist ja nun absoluter Anfängerlevel...( zumal ich Spaggetticode geschrieben habe)
Deine Frage lautet:
Console.WriteLine Text löschen?
Da Du keine vernünftige Darstellung des von Dir verwendeten Codes lieferst, kann ich aus den mir ersichtlichen Teilen der Fragestellung lediglich zu dem Schluss kommen, dass Du eine bestehende Zeile verschwinden lassen/überschreiben möchtest.
In Zukunft verwende einfach eine geeignetere Art der Weitergabe von Code.
Eine bedingte Ausgabe von Text (wie sie @regex9 zelebriert), gehört zum kleinen 1×1 des Programmierens und sollte eigentlich keiner Frage Wert sein.
Ich würde der Methode einen Parameter spendieren, meinetwegen auch mit einem Standardwert. Dieser bestimmt, ob die Ausgabe stattfinden soll oder nicht.
public void CastSpell(bool printAndCastsText = true)
Die Ausgaben, die abhängig von dessen Wert ausgegeben werden sollen oder nicht, kommen in ein if:
if (printAndCastsText)
{
// print text ...
}
Wenn ich es richtig verstehe, willst du bestimmte Dinge aus der Console löschen? Da geht dann nur Console.Clear() oder (Da habe ich den genauen Namen nicht im Kopf) Set Cursor oder so. Da kann man den Cursor in eine bestimmte Zeile tun und diese überschreiben
und wo soll ich das bei meinem beispiel hintuen